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 261 lines 8.2 kB view raw
1#include "ListarClientes.h" 2#include <list> 3#include "../Negocio/Cliente.h" 4#include "../Negocio/CapaNegocio.h" 5#include "NuevoClienteDialog.h" 6#include <QtGui> 7#include <QString> 8#include <iostream> 9#include <QMutex> 10using namespace std; 11 12ListarClientes::ListarClientes(CapaNegocio * const cn, QWidget *parent, CriterioBusqueda* cb) 13 : QWidget(parent) 14{ 15 ui.setupUi(this); 16 setWindowTitle(tr("Listado de Clientes")); 17 setWindowIcon(QIcon(QString::fromUtf8("Gui/images/LCliente.PNG"))); 18 ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); 19 ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); 20 21 ui.pushButton_3->setText(tr("Mostrar")); 22 ui.pushButton_2->setText(tr("Borrar")); 23 ui.pushButton->setText(tr("Cancelar")); 24 25 connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(mostrar())); 26 connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(borrar())); 27 connect(ui.tableWidget, SIGNAL(cellDoubleClicked(int,int)), this, SLOT(mostrar())); 28 29 padre = (QWorkspace *) parent; 30 31 capaNegocio = cn; 32 33 list<Cliente> lista_aux = capaNegocio->getClientes(); 34 this->cb = cb; 35 36 if (cb != 0) { 37 if (cb->telefono) { 38 list<pair<int, int> > l = capaNegocio->getListaTelefonos(); 39 cout << "Numero de telefonos: " << l.size() << endl; 40 list<Cliente> lc; 41 list<pair<int, int> >::iterator it; 42 for (it = l.begin(); it != l.end();) { 43 if (it->first != *cb->telefono) { 44 it = l.erase(it); 45 } else { 46 it++; 47 } 48 } 49 for (it = l.begin(); it != l.end();it++) { 50 Cliente *c = capaNegocio->getClienteId(it->second); 51 lc.push_back(*c); 52 } 53 lista_aux = lc; 54 } 55 if (cb->nombreCliente) { 56 QRegExp rx((tr("*") + *(cb->nombreCliente)) + "*"); 57 rx.setPatternSyntax(QRegExp::Wildcard); 58 rx.setCaseSensitivity(Qt::CaseInsensitive); 59 list<Cliente>::iterator it; 60 for (it = lista_aux.begin(); it != lista_aux.end(); ) { 61 QString nombre(((it->getnombre() + " ") + it->getapellidos()).c_str()); 62 if (!rx.exactMatch(nombre)) { 63 it = lista_aux.erase(it); 64 } else { 65 it++; 66 } 67 } 68 } 69 if (cb->codigoCliente){ 70 list<Cliente>::iterator it; 71 for (it = lista_aux.begin(); it != lista_aux.end();) { 72 if (it->getcodigo() != *cb->codigoCliente) { 73 it = lista_aux.erase(it); 74 } else { 75 it++; 76 } 77 } 78 } 79 if (cb->direccionCliente) { 80 QRegExp rx((tr("*") + *cb->direccionCliente) + "*"); 81 rx.setPatternSyntax(QRegExp::Wildcard); 82 rx.setCaseSensitivity(Qt::CaseInsensitive); 83 list<Cliente>::iterator it; 84 for (it = lista_aux.begin(); it != lista_aux.end();) { 85 QString nombre(it->getdireccion().c_str()); 86 if (!rx.exactMatch(nombre)) { 87 it = lista_aux.erase(it); 88 } else { 89 it++; 90 } 91 } 92 } 93 } 94 95 lista = lista_aux; 96 97 int n_elem = lista.size(); 98 cout << "[Debug]Numero de clientes: " << n_elem << endl; 99 list<Cliente>::iterator i; 100 i = lista.begin(); 101 for (int row = 0; row < n_elem; row++) { 102 addRow(); 103 ui.tableWidget->item(row, 0)->setText(QString::number(i->getcodigo())); 104 ui.tableWidget->item(row, 1)->setText(QString::fromStdString(i->getnombre())); 105 ui.tableWidget->item(row, 2)->setText(QString::fromStdString(i->getapellidos())); 106 ui.tableWidget->item(row, 3)->setText(QString::fromStdString(i->getnif())); 107 i++; 108 } 109} 110 111ListarClientes::~ListarClientes() 112{ 113 114} 115 116void ListarClientes::addRow(){ 117 int row = ui.tableWidget->rowCount(); 118 ui.tableWidget->insertRow(row); 119 120 QTableWidgetItem *item0 = new QTableWidgetItem; 121 item0->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); 122 ui.tableWidget->setItem(row, 0, item0); 123 124 QTableWidgetItem *item1 = new QTableWidgetItem; 125 item1->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); 126 ui.tableWidget->setItem(row, 1, item1); 127 128 QTableWidgetItem *item2 = new QTableWidgetItem; 129 item2->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); 130 ui.tableWidget->setItem(row, 2, item2); 131 132 QTableWidgetItem *item3 = new QTableWidgetItem; 133 item3->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter); 134 ui.tableWidget->setItem(row, 3, item3); 135 136} 137 138void ListarClientes::resizeEvent(QResizeEvent *event) { 139 ui.gridLayout->setGeometry(QRect(0, 0, event->size().width(), event->size().height())); 140} 141void ListarClientes::mostrar() { 142 int row = ui.tableWidget->currentRow(); 143 int cod; 144 145 if (row == -1) { 146 QString mes = tr("No se selecciono ninguna fila."); 147 QMessageBox::information(this, tr("Atencion"),mes); 148 149 } else { 150 cod = ui.tableWidget->item(row, 0)->text().toInt(); 151 QString mes = tr("Ahora se editara el cliente de la fila: %1.").arg(row); 152 //QMessageBox::information(this, tr("Atencion"), mes); 153 QDialog *edit = new NuevoClienteDialog(capaNegocio, this, capaNegocio->getClienteCodigo(cod)); 154 padre->addWindow(edit); 155 edit->show(); 156 } 157} 158void ListarClientes::actualizar() { 159 160 list<Cliente> lista_aux = capaNegocio->getClientes(); 161 if (cb != 0) { 162 if (cb->telefono) { 163 list<pair<int, int> > l = capaNegocio->getListaTelefonos(); 164 cout << "Numero de telefonos: " << l.size() << endl; 165 list<Cliente> lc; 166 list<pair<int, int> >::iterator it; 167 for (it = l.begin(); it != l.end();) { 168 if (it->first != *cb->telefono) { 169 it = l.erase(it); 170 } else { 171 it++; 172 } 173 } 174 for (it = l.begin(); it != l.end();it++) { 175 Cliente *c = capaNegocio->getClienteId(it->second); 176 lc.push_back(*c); 177 } 178 lista_aux = lc; 179 } 180 if (cb->nombreCliente) { 181 QRegExp rx((tr("*") + *(cb->nombreCliente)) + "*"); 182 rx.setPatternSyntax(QRegExp::Wildcard); 183 rx.setCaseSensitivity(Qt::CaseInsensitive); 184 list<Cliente>::iterator it; 185 for (it = lista_aux.begin(); it != lista_aux.end(); ) { 186 QString nombre(((it->getnombre() + " ") + it->getapellidos()).c_str()); 187 if (!rx.exactMatch(nombre)) { 188 it = lista_aux.erase(it); 189 } else { 190 it++; 191 } 192 } 193 } 194 if (cb->codigoCliente){ 195 list<Cliente>::iterator it; 196 for (it = lista_aux.begin(); it != lista_aux.end();) { 197 if (it->getcodigo() != *cb->codigoCliente) { 198 it = lista_aux.erase(it); 199 } else { 200 it++; 201 } 202 } 203 } 204 if (cb->direccionCliente) { 205 QRegExp rx((tr("*") + *cb->direccionCliente) + "*"); 206 rx.setPatternSyntax(QRegExp::Wildcard); 207 rx.setCaseSensitivity(Qt::CaseInsensitive); 208 list<Cliente>::iterator it; 209 for (it = lista_aux.begin(); it != lista_aux.end();) { 210 QString nombre(it->getdireccion().c_str()); 211 if (!rx.exactMatch(nombre)) { 212 it = lista_aux.erase(it); 213 } else { 214 it++; 215 } 216 } 217 } 218 } 219 lista = lista_aux; 220 221 int n_elem = lista.size(); 222 int n_row = ui.tableWidget->rowCount(); 223 cout << "[Debug]Numero de clientes: " << n_elem << endl; 224 list<Cliente>::iterator i; 225 i = lista.begin(); 226 for (int row = 0; row < n_row; row++) { 227 ui.tableWidget->item(row, 0)->setText(QString::number(i->getcodigo())); 228 ui.tableWidget->item(row, 1)->setText(QString::fromStdString(i->getnombre())); 229 ui.tableWidget->item(row, 2)->setText(QString::fromStdString(i->getapellidos())); 230 ui.tableWidget->item(row, 3)->setText(QString::fromStdString(i->getnif())); 231 i++; 232 } 233 for (int row = n_row; row < n_elem; row++) { 234 addRow(); 235 ui.tableWidget->item(row, 0)->setText(QString::number(i->getcodigo())); 236 ui.tableWidget->item(row, 1)->setText(QString::fromStdString(i->getnombre())); 237 ui.tableWidget->item(row, 2)->setText(QString::fromStdString(i->getapellidos())); 238 ui.tableWidget->item(row, 3)->setText(QString::fromStdString(i->getnif())); 239 i++; 240 } 241 242 243} 244void ListarClientes::borrar() { 245 int row = ui.tableWidget->currentRow(); 246 int cod = ui.tableWidget->item(row, 0)->text().toInt(); 247 if (QMessageBox::question(this, tr("Borrar Cliente"), tr("Seguro que desea borrar el cliente de codigo %1?").arg(cod),tr("No"),tr("Si")) == 1) { 248 QString mes = tr("Ahora se borrara el articulo de la fila: %1.").arg(row); 249 //QMessageBox::information(this, tr("Atencion"), mes); 250 if (capaNegocio->borrarCliente(capaNegocio->getClienteCodigo(cod))) { 251 //QMessageBox::information(this, tr("Atencion"), tr("Borrado correcto.")); 252 ui.tableWidget->removeRow(row); 253 } else { 254 QMessageBox::warning(this, tr("Atencion"), tr("Error al borrar.")); 255 } 256 } else { 257 //QString mes = tr("No se borrara el cliente de la fila: %1.").arg(row); 258 //QMessageBox::information(this, tr("Atencion"), mes); 259 } 260} 261