00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <QCloseEvent>
00022 #include <QComboBox>
00023 #include <QLabel>
00024 #include <QLineEdit>
00025 #include <QMessageBox>
00026 #include <QObject>
00027 #include <QToolButton>
00028 #include <QWidget>
00029
00030 #include "albaranclienteview.h"
00031 #include "articulolist.h"
00032 #include "clientslist.h"
00033 #include "cobroview.h"
00034 #include "company.h"
00035 #include "configuracion.h"
00036 #include "facturaslist.h"
00037 #include "facturaview.h"
00038 #include "funcaux.h"
00039 #include "informereferencia.h"
00040 #include "listdescalbaranclienteview.h"
00041 #include "listlinalbaranclienteview.h"
00042 #include "pedidoclienteview.h"
00043 #include "pedidosclientelist.h"
00044 #include "postgresiface2.h"
00045 #include "presupuestolist.h"
00046 #include "presupuestoview.h"
00047 #include "plugins.h"
00048
00049
00059 AlbaranClienteView::AlbaranClienteView(Company *comp, QWidget *parent)
00060 : FichaBf(comp, parent) {
00061 _depura("AlbaranClienteView::AlbaranClienteView", 0);
00062 setAttribute(Qt::WA_DeleteOnClose);
00063 try {
00064 setupUi(this);
00065
00066 setTitleName(tr("Albaran"));
00067 setDBTableName("albaran");
00068 setDBCampoId("idalbaran");
00069 addDBCampo("idalbaran", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate("AlbaranCliente", "Id albaran"));
00070 addDBCampo("idcliente", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("AlbaranCliente", "Id cliente"));
00071 addDBCampo("idalmacen", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("AlbaranCliente", "Id almacen"));
00072 addDBCampo("numalbaran", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Numero de albaran"));
00073 addDBCampo("fechaalbaran", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Fecha albaran"));
00074 addDBCampo("contactalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Contacto albaran"));
00075 addDBCampo("telalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Telefono"));
00076 addDBCampo("comentalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Comentario"));
00077 addDBCampo("comentprivalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Comentario priv albaran"));
00078 addDBCampo("idforma_pago", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Id forma de pago"));
00079 addDBCampo("idtrabajador", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Id trabajador"));
00080 addDBCampo("procesadoalbaran", DBCampo::DBboolean, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Procesado albaran"));
00081 addDBCampo("descalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Descripcion albaran"));
00082 addDBCampo("refalbaran", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("AlbaranCliente", "Referencia albaran"));
00083
00084
00086 int res = g_plugins->lanza("AlbaranClienteView_AlbaranClienteView", this);
00087 if (res != 0)
00088 return;
00089
00090 subform2->setEmpresaBase(comp);
00091 m_descuentos->setEmpresaBase(comp);
00092 mui_idalmacen->setEmpresaBase(comp);
00093 mui_idforma_pago->setEmpresaBase(comp);
00094 mui_idcliente->setEmpresaBase(comp);
00095 mui_idtrabajador->setEmpresaBase(comp);
00096 mui_refalbaran->setEmpresaBase(comp);
00097 setListaLineas(subform2);
00098 setListaDescuentos(m_descuentos);
00099 meteWindow(windowTitle(), this, FALSE);
00100 dialogChanges_cargaInicial();
00101 } catch (...) {
00102 mensajeInfo(tr("Error al crear el albaran a cliente"));
00103 }
00104 _depura("END AlbaranClienteView::AlbaranClienteView", 0);
00105 }
00106
00107
00111
00112
00113
00115 AlbaranClienteView::~AlbaranClienteView() {
00116 _depura("AlbaranClienteView::~AlbaranClienteView(", 0);
00117 empresaBase()->refreshAlbaranesCliente();
00118 _depura("END AlbaranClienteView::~AlbaranClienteView(", 0);
00119 }
00120
00121
00123
00125 void AlbaranClienteView::inicializar() {
00126 _depura("AlbaranClienteView::inicializar", 0);
00127 subform2->inicializar();
00128 m_descuentos->inicializar();
00129 dialogChanges_cargaInicial();
00130 _depura("END AlbaranClienteView::inicializar", 0);
00131 }
00132
00133
00134
00136
00144 void AlbaranClienteView::pintatotales(Fixed iva, Fixed base, Fixed total, Fixed desc, Fixed irpf, Fixed reqeq) {
00145 _depura("AlbaranClienteView::pintatotales", 0);
00146 m_totalBases->setText(base.toQString());
00147 m_totalTaxes->setText(iva.toQString());
00148 m_totalalbaran->setText(total.toQString());
00149 m_totalDiscounts->setText(desc.toQString());
00150 m_totalIRPF->setText(QString(irpf.toQString()));
00151 m_totalReqEq->setText(QString(reqeq.toQString()));
00152 _depura("END AlbaranClienteView::pintatotales", 0);
00153 }
00154
00155
00163 void AlbaranClienteView::s_verpresupuesto() {
00164 _depura("AlbaranClienteView::s_verpresupuesto", 0);
00165 QString SQLQuery = "SELECT * FROM presupuesto WHERE refpresupuesto = '" +
00166 DBvalue("refalbaran") + "'";
00167 cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00168
00169 if (cur->numregistros() > 1) {
00171 PresupuestoList *list = new PresupuestoList(empresaBase(), NULL);
00172 list->setModoConsulta();
00173 list->show();
00174
00175 while (!list->isHidden()) {
00176 theApp->processEvents();
00177 }
00178
00179 this->setEnabled(true);
00180
00181 if (list->idpresupuesto() != QString("")) {
00182 PresupuestoView *bud = empresaBase()->nuevoPresupuestoView();
00183 bud->cargar(list->idpresupuesto());
00184 bud->show();
00185 }
00186 } else if (!cur->eof()) {
00187 PresupuestoView *bud = empresaBase()->nuevoPresupuestoView();
00188 bud->cargar(cur->valor("idpresupuesto"));
00189 bud->show();
00190 }
00191 delete cur;
00192 _depura("END AlbaranClienteView::s_verpresupuesto", 0);
00193 }
00194
00195
00202 void AlbaranClienteView::on_mui_verpedidocliente_clicked() {
00203 _depura("AlbaranClienteView::on_mui_verpedidocliente_clicked", 0);
00204 QString SQLQuery = "SELECT * FROM pedidocliente WHERE refpedidocliente = '" + DBvalue("refalbaran") + "'";
00205 cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00206 if (!cur->eof()) {
00207 while (!cur->eof()) {
00208 PedidoClienteView *bud = empresaBase()->newPedidoClienteView();
00209 empresaBase()->m_pWorkspace->addWindow(bud);
00210 bud->cargar(cur->valor("idpedidocliente"));
00211 bud->show();
00212 cur->siguienteregistro();
00213 }
00214 } else {
00215 _depura("no hay pedidos con esta referencia", 2);
00216 }
00217 delete cur;
00218 _depura("END AlbaranClienteView::on_mui_verpedidocliente_clicked", 0);
00219 }
00220
00221
00223
00231 void AlbaranClienteView::generarFactura() {
00232 _depura("AlbaranClienteView::generarFactura", 0);
00235 QString SQLQuery = "SELECT * FROM factura WHERE reffactura = '" + DBvalue("refalbaran") + "' AND idcliente = " + DBvalue("idcliente");
00236 cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00237
00238 if (!cur->eof()) {
00239
00242 if (QMessageBox::question(this,
00243 tr("Factura existente"),
00244 tr("Existe una factura a este cliente con la misma referencia que este albaran. Desea abrirla para verificar?"),
00245 tr("&Si"), tr("&No"), QString::null, 0, 1)) {
00246 return;
00247 }
00248 FacturaView *bud = empresaBase()->newFacturaView();
00249 empresaBase()->m_pWorkspace->addWindow(bud);
00250 bud->cargar(cur->valor("idfactura"));
00251 bud->show();
00252 return;
00253 }
00254 delete cur;
00255
00258
00259
00260
00261
00262
00263
00264
00266 FacturaView *bud = empresaBase()->newFacturaView();
00267 empresaBase()->m_pWorkspace->addWindow(bud);
00268
00270 bud->cargar("0");
00271 bud->setDBvalue("comentfactura", DBvalue("comentalbaran"));
00272 bud->setDBvalue("idforma_pago", DBvalue("idforma_pago"));
00273 bud->setDBvalue("reffactura", DBvalue("refalbaran"));
00274 bud->setDBvalue("idcliente", DBvalue("idcliente"));
00275 bud->setDBvalue("idalmacen", DBvalue("idalmacen"));
00276
00277 bud->pintar();
00278 bud->show();
00279
00280 QString l;
00281 SDBRecord *linea, *linea1;
00282 for (int i = 0; i < m_listalineas->rowCount(); ++i) {
00283 linea = m_listalineas->lineaat(i);
00284 if (linea->DBvalue( "idarticulo") != "") {
00285 linea1 = bud->getlistalineas()->lineaat(bud->getlistalineas()->rowCount() - 1);
00287 bud->getlistalineas()->nuevoRegistro();
00288 bud->getlistalineas()->setProcesarCambios(FALSE);
00289 linea1->setDBvalue("codigocompletoarticulo", linea->DBvalue("codigocompletoarticulo"));
00290 linea1->setDBvalue("desclfactura", linea->DBvalue("desclalbaran"));
00291 linea1->setDBvalue("cantlfactura", linea->DBvalue("cantlalbaran"));
00292 linea1->setDBvalue("pvplfactura", linea->DBvalue("pvplalbaran"));
00293 linea1->setDBvalue("ivalfactura", linea->DBvalue("ivalalbaran"));
00294 linea1->setDBvalue("descuentolfactura", linea->DBvalue("descuentolalbaran"));
00295 linea1->setDBvalue("idarticulo", linea->DBvalue("idarticulo"));
00296 linea1->setDBvalue("nomarticulo", linea->DBvalue("nomarticulo"));
00297 bud->getlistalineas()->setProcesarCambios(TRUE);
00298 linea1->refresh();
00299 }
00300 }
00301
00303 for (int i = 0; i < m_listadescuentos->rowCount(); ++i) {
00304 linea1 = m_listadescuentos->lineaat(i);
00305 if (linea1->DBvalue("proporciondalbaran") != "") {
00306 linea = bud->getlistadescuentos()->lineaat(bud->getlistadescuentos()->rowCount() - 1);
00307 bud->getlistadescuentos()->setProcesarCambios(FALSE);
00308 linea->setDBvalue("conceptdfactura", linea1->DBvalue("conceptdalbaran"));
00309 linea->setDBvalue("proporciondfactura", linea1->DBvalue("proporciondalbaran"));
00310 bud->getlistadescuentos()->setProcesarCambios(TRUE);
00311 bud->getlistadescuentos()->nuevoRegistro();
00312 }
00313 }
00314
00315 bud->calculaypintatotales();
00316 mui_procesadoalbaran->setChecked(TRUE);
00317
00318
00319
00320 _depura("END AlbaranClienteView::generarFactura", 0);
00321 }
00322
00323
00327
00329 void AlbaranClienteView::agregarFactura() {
00331 _depura("AlbaranClienteView::agregarFactura", 0);
00332 QDialog *diag = new QDialog(0);
00333 diag->setModal(true);
00334
00336 FacturasList *fac = new FacturasList(empresaBase(), diag, 0, FacturasList::SelectMode);
00337 connect(fac, SIGNAL(selected(QString)), diag, SLOT(accept()));
00338
00340 fac->m_cliente->setidcliente(DBvalue("idcliente"));
00341 fac->on_mui_actualizar_clicked();
00342
00344 diag->exec();
00345 QString idfactura = fac->idfactura();
00346 delete diag;
00347
00349 if (idfactura == "")
00350 return;
00351
00353 FacturaView *bud = empresaBase()->newFacturaView();
00354 bud->cargar(idfactura);
00355
00357 bud->setDBvalue("comentfactura", bud->DBvalue("comentfactura") + tr("Num. albaran") + DBvalue("numalbaran") + "\n" );
00358
00359
00360 empresaBase()->m_pWorkspace->addWindow(bud);
00363 QString l;
00364 SDBRecord *linea, *linea1;
00365 for (int i = 0; i < m_listalineas->rowCount(); ++i) {
00366 linea = m_listalineas->lineaat(i);
00367 if (linea->DBvalue("idarticulo") != "") {
00368 linea1 = bud->getlistalineas()->lineaat(bud->getlistalineas()->rowCount() - 1);
00369 bud->getlistalineas()->setProcesarCambios(FALSE);
00370 linea1->setDBvalue("desclfactura", linea->DBvalue("desclalbaran"));
00371 linea1->setDBvalue("cantlfactura", linea->DBvalue("cantlalbaran"));
00372 linea1->setDBvalue("pvplfactura", linea->DBvalue("pvplalbaran"));
00373 linea1->setDBvalue("descuentolfactura", linea->DBvalue("descuentolalbaran"));
00374 linea1->setDBvalue("idarticulo", linea->DBvalue("idarticulo"));
00375 linea1->setDBvalue("codigocompletoarticulo", linea->DBvalue("codigocompletoarticulo"));
00376 linea1->setDBvalue("nomarticulo", linea->DBvalue("nomarticulo"));
00377 linea1->setDBvalue("ivalfactura", linea->DBvalue("ivalalbaran"));
00378 bud->getlistalineas()->setProcesarCambios(TRUE);
00379 bud->getlistalineas()->nuevoRegistro();
00380 }
00381 }
00382 bud->calculaypintatotales();
00383 bud->show();
00384 mui_procesadoalbaran->setChecked(TRUE);
00385 _depura("END AlbaranClienteView::agregarFactura", 0);
00386 }
00387
00388
00389
00390
00391
00396
00398 void AlbaranClienteView::on_mui_cobrar_clicked() {
00399 _depura("AlbaranClienteView::on_mui_cobrar_clicked", 0);
00400 CobroView *bud = empresaBase()->newCobroView();
00401 bud->setDBvalue("idcliente", DBvalue("idcliente"));
00402 bud->setDBvalue("cantcobro", m_totalalbaran->text());
00403 bud->setDBvalue("refcobro", DBvalue("refalbaran"));
00404 bud->setDBvalue("comentcobro", DBvalue("descalbaran"));
00405 bud->pintar();
00406 bud->show();
00407 _depura("END AlbaranClienteView::on_mui_cobrar_clicked", 0);
00408 }
00409
00410
00412
00415 void AlbaranClienteView::on_mui_idcliente_valueChanged(QString id) {
00416 _depura("AlbaranClienteView::on_m_cliente_valueChanged", 0);
00417 subform2->setIdCliente(id);
00418 mui_idforma_pago->setIdCliente(id);
00419 _depura("END AlbaranClienteView::on_m_cliente_valueChanged", 0);
00420 }
00421
00422
00423
00424
00425
00426
00428
00430 void AlbaranClienteView::s_pintaTotales() {
00431 _depura("AlbaranClienteView::s_pintaTotales", 0);
00432 calculaypintatotales();
00433 _depura("END AlbaranClienteView::s_pintaTotales", 0);
00434 }
00435
00436
00438
00440 void AlbaranClienteView::on_mui_facturar_clicked() {
00441 _depura("AlbaranClienteView::on_mui_facturar_clicked", 0);
00442 generarFactura();
00443 _depura("END AlbaranClienteView::on_mui_facturar_clicked", 0);
00444 }
00445
00446
00448
00450 void AlbaranClienteView::on_mui_agregarafactura_clicked() {
00451 _depura("AlbaranClienteView::on_mui_agregarafactura_clicked", 0);
00452 agregarFactura();
00453 _depura("END AlbaranClienteView::on_mui_agregarafactura_clicked", 0);
00454 }
00455
00456
00458
00460 void AlbaranClienteView::on_m_descuentos_editFinish(int, int) {
00461 _depura("AlbaranClienteView::on_m_descuentos_editFinish", 0);
00462 calculaypintatotales();
00463 _depura("END AlbaranClienteView::on_m_descuentos_editFinish", 0);
00464 }
00465
00466
00468
00470 void AlbaranClienteView::on_subform2_editFinish(int, int) {
00471 _depura("AlbaranClienteView::on_subform2_editFinish", 0);
00472 calculaypintatotales();
00473 _depura("END AlbaranClienteView::on_subform2_editFinish", 0);
00474 }
00475
00476
00477
00484
00485
00486
00489 int AlbaranClienteView::borrarPre() {
00490 _depura("AlbaranClienteView::borrar", 0);
00491 m_listalineas->borrar();
00492 m_listadescuentos->borrar();
00493 _depura("END AlbaranClienteView::borrar", 0);
00494 return 0;
00495 }
00496
00497
00498
00508 int AlbaranClienteView::cargarPost(QString idalbaran) {
00509 _depura("AlbaranClienteView::cargar", 0);
00510
00511 m_listalineas->cargar(idalbaran);
00512 m_listadescuentos->cargar(idalbaran);
00513
00515 g_plugins->lanza ( "AlbaranCliente_cargarPost_Post", this );
00516
00517 calculaypintatotales();
00518 _depura("Fin AlbaranClienteView::cargar", 0);
00519 return 0;
00520 }
00521
00522
00535 int AlbaranClienteView::guardarPost() {
00536 _depura("AlbaranClienteView::guardarPost", 0);
00537
00538 m_listalineas->setColumnValue("idalbaran", DBvalue("idalbaran"));
00539 m_listalineas->guardar();
00540 m_listadescuentos->setColumnValue("idalbaran", DBvalue("idalbaran"));
00541 m_listadescuentos->guardar();
00542
00543 _depura("END AlbaranClienteView::guardarPost", 0);
00544 return 0;
00545 }
00546