Billing program for the appliance repair company Seoane.
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