Billing program for the appliance repair company Seoane.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 178 lines 5.3 kB view raw
1#include "NuevoClienteDialog.h" 2#include "../Negocio/CapaNegocio.h" 3#include "../Negocio/Cliente.h" 4#include <QtGui> 5#include <string> 6 7NuevoClienteDialog::NuevoClienteDialog(CapaNegocio * const cn, QWidget *parent, Cliente *c) 8 : QDialog(parent) 9{ 10 padre = (ListarClientes *)parent; 11 capaNegocio = cn; 12 setWindowIcon(QIcon(QString::fromUtf8("Gui/images/NCliente.PNG"))); 13 ui.setupUi(this); 14 connect(ui.guardarButton, SIGNAL(clicked()), this, SLOT(guardar())); 15 connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(nuevoTelefono())); 16 connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(borrarTelefono())); 17 cliente = c; 18 19 int cod = capaNegocio->getUltimoCodigoCliente(); 20 ui.lineEdit_4->setText(QString::number(cod)); 21 22 if (cliente) { 23 ui.lineEdit_4->setText(tr("%1").arg(c->getcodigo())); 24 ui.lineEdit_5->setText(c->getnif().c_str()); 25 ui.lineEdit->setText(c->getnombre().c_str()); 26 ui.lineEdit_2->setText(c->getapellidos().c_str()); 27 ui.lineEdit_3->setText(c->getdireccion().c_str()); 28 ui.lineEdit_6->setText(c->getpoblacion().c_str()); 29 setWindowTitle(tr("Editar Cliente")); 30 list<int> lista_telefonos = c->gettelefonos(); 31 list<int>::iterator it; 32 int row; 33 for (it = lista_telefonos.begin(), row = 0; it != lista_telefonos.end(); it++, row++) { 34 addRow(); 35 ui.tabla->item(row, 0)->setText(tr("%1").arg(*it)); 36 } 37 } else { 38 //addRow(); 39 } 40 41} 42 43NuevoClienteDialog::~NuevoClienteDialog() 44{ 45 46} 47bool NuevoClienteDialog::comprobarDatos(){ 48 bool estado=true; 49 if(ui.lineEdit->text()==""){ 50 QMessageBox::information(this, tr("Atenci�n"), 51 tr("El campo nombre es necesario")); 52 estado=false; 53 } 54 if(ui.lineEdit_2->text()==""){ 55 QMessageBox::information(this, tr("Atenci�n"), 56 tr("El campo apellido es necesario")); 57 estado=false; 58 } 59 /*if(ui.lineEdit_5->text()==""){ 60 QMessageBox::information(this, tr("Atenci�n"), 61 tr("El campo NIF es necesario")); 62 estado=false; 63 }*/ 64 if (!cliente && ui.lineEdit_4->text() != "" && capaNegocio->getClienteCodigo(ui.lineEdit_4->text().toInt()) != 0 ) { 65 QMessageBox::information(this, tr("Atenci�n"), 66 tr("C�digo repetido.")); 67 estado=false; 68 } 69 bool ok; 70 ui.lineEdit_4->text().toInt(&ok); 71 if(!ok){ 72 QMessageBox::information(this, tr("Atenci�n"), 73 tr("El campo codigo ha de ser numerico")); 74 estado=false; 75 } 76 int rows = ui.tabla->rowCount(); 77 for (int i = 0; i < rows; i++) { 78 ui.tabla->item(i,0)->text().toInt(&ok); 79 if(!ok){ 80 QMessageBox::information(this, tr("Atenci�n"), 81 tr("Hay un tel�fono demasiado largo.")); 82 estado=false; 83 } 84 } 85 return estado; 86} 87void NuevoClienteDialog::guardar() { 88 if(!cliente && comprobarDatos()){ 89 Cliente c; 90 c.setnombre(ui.lineEdit->text().toStdString()); 91 c.setapellidos(ui.lineEdit_2->text().toStdString()); 92 c.setcodigo(ui.lineEdit_4->text().toInt()); 93 c.setnif(ui.lineEdit_5->text().toStdString()); 94 c.setdireccion(ui.lineEdit_3->text().toStdString()); 95 c.setpoblacion(ui.lineEdit_6->text().toStdString()); 96 97 list<int> lista_telefonos; 98 for (int i = 0; i < ui.tabla->rowCount(); i++) { 99 lista_telefonos.push_back(ui.tabla->item(i,0)->text().toInt()); 100 } 101 c.settelefonos(lista_telefonos); 102 103 if (capaNegocio->nuevoCliente(&c)) { 104 //QMessageBox::information(this, tr("Atencion"), 105 // tr("Cliente guardado.")); 106 this->close(); 107 } else { 108 QMessageBox::warning(this, tr("Error"), 109 tr("Error al guardar.")); 110 } 111 } else if (cliente && comprobarDatos()) { 112 Cliente c; 113 c = *cliente; 114 c.setnombre(ui.lineEdit->text().toStdString()); 115 c.setapellidos(ui.lineEdit_2->text().toStdString()); 116 c.setcodigo(ui.lineEdit_4->text().toInt()); 117 c.setnif(ui.lineEdit_5->text().toStdString()); 118 c.setdireccion(ui.lineEdit_3->text().toStdString()); 119 c.setpoblacion(ui.lineEdit_6->text().toStdString()); 120 121 list<int> lista_telefonos; 122 for (int i = 0; i < ui.tabla->rowCount(); i++) { 123 lista_telefonos.push_back(ui.tabla->item(i,0)->text().toInt()); 124 } 125 c.settelefonos(lista_telefonos); 126 127 if (capaNegocio->modificarCliente(&c)) { 128 //QMessageBox::information(this, tr("Atencion"), 129 // tr("Cliente editado.")); 130 //padre->actualizar(); 131 this->close(); 132 } else { 133 QMessageBox::warning(this, tr("Error"), 134 tr("Error al editar.")); 135 } 136 } 137} 138 139void NuevoClienteDialog::addRow(){ 140 int row = ui.tabla->rowCount(); 141 ui.tabla->insertRow(row); 142 143 QTableWidgetItem *item0 = new QTableWidgetItem; 144 item0->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); 145 ui.tabla->setItem(row, 0, item0); 146 147} 148 149void NuevoClienteDialog::nuevoTelefono () { 150 int row = ui.tabla->currentRow(); 151 if (row == -1) { 152 addRow(); 153 ui.tabla->setCurrentCell(0,0); 154 } else if (ui.tabla->item(row,0)->text() != "") { 155 addRow(); 156 ui.tabla->setCurrentCell(row + 1,0); 157 } 158} 159 160void NuevoClienteDialog::borrarTelefono() { 161 int row = ui.tabla->currentRow(); 162 if (row == -1) 163 QMessageBox::warning(this, "Aviso", "No se ha seleccionado ningun telefono."); 164 else 165 ui.tabla->removeRow(row); 166} 167 168void NuevoClienteDialog::resizeEvent(QResizeEvent *event) { 169 ui.gridLayout->setGeometry(QRect(10, 0, event->size().width() - 40, event->size().height())); 170} 171 172void NuevoClienteDialog::keyPressEvent(QKeyEvent* event) { 173 if ((event->key() == Qt::Key_Down) && ui.tabla->item(ui.tabla->currentRow(),0)->text() != "") { 174 addRow(); 175 ui.tabla->setCurrentCell(ui.tabla->rowCount() - 1,0); 176 } 177} 178