albaranclienteview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by Alvaro de Miguel                                *
00003  *   alvaro.demiguel@gmail.com                                             *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
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     } // end try
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         } // end while
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         } // end if
00186     } else if (!cur->eof()) {
00187         PresupuestoView *bud = empresaBase()->nuevoPresupuestoView();
00188         bud->cargar(cur->valor("idpresupuesto"));
00189         bud->show();
00190     } // end if
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         } // end while
00214     } else {
00215         _depura("no hay pedidos con esta referencia", 2);
00216     } // end if
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     } // end if
00254     delete cur;
00255 
00258     //    if (QMessageBox::question(this,
00259     //                              tr("Factura inexistente"),
00260     //                              tr("No existe una factura asociada a este albaran. Desea crearla?"),
00261     //                              tr("&Si"), tr("&No"), QString::null, 0, 1)) {
00262     //        return;
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         } // end if
00300     } // end for
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         } // end if
00313     } // end for
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 //    bud->pintaComentFactura(bud->DBvalue("comentfactura") + tr("Num. albaran") + DBvalue("numalbaran") + "\n" );
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         } // end if
00381     } // end for
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 

Generated on Sat Dec 15 00:01:11 2007 for BulmaGes by  doxygen 1.5.1