pedidoclienteview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by Tomeu Borras Riera                              *
00003  *   tborras@conetxia.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 <fstream>
00022 
00023 #include <QMessageBox>
00024 #include <QWidget>
00025 #include <QObject>
00026 #include <QComboBox>
00027 #include <QToolButton>
00028 #include <QLayout>
00029 #include <QCloseEvent>
00030 
00031 #include "pedidoclienteview.h"
00032 #include "company.h"
00033 #include "listlinpedidoclienteview.h"
00034 #include "clientslist.h"
00035 #include "presupuestoview.h"
00036 #include "presupuestolist.h"
00037 #include "cobroview.h"
00038 #include "albaranclienteview.h"
00039 #include "informereferencia.h"
00040 #include "funcaux.h"
00041 #include "plugins.h"
00042 
00043 
00045 
00050 PedidoClienteView::PedidoClienteView(Company *comp, QWidget *parent)
00051         : FichaBf(comp, parent) {
00052     _depura("PedidoClienteView::PedidoClienteView", 0);
00053     setAttribute(Qt::WA_DeleteOnClose);
00054     try {
00056         setupUi(this);
00057 
00058         setTitleName(tr("Pedido Cliente"));
00059         setDBTableName("pedidocliente");
00060         setDBCampoId("idpedidocliente");
00061         addDBCampo("idpedidocliente", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate("PedidoCliente", "Identificador"));
00062         addDBCampo("idcliente", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("PedidoCliente", "Cliente"));
00063         addDBCampo("idalmacen", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("PedidoCliente", "Almacen"));
00064         addDBCampo("numpedidocliente", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Numero pedido cliente"));
00065         addDBCampo("fechapedidocliente", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Identificador presupuesto"));
00066         addDBCampo("descpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Fecha"));
00067         addDBCampo("idforma_pago", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Forma pago"));
00068         addDBCampo("idtrabajador", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Trabajador"));
00069         addDBCampo("contactpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Contacto"));
00070         addDBCampo("telpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Telefono"));
00071         addDBCampo("comentpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Comentarios"));
00072         addDBCampo("procesadopedidocliente", DBCampo::DBboolean, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Procesado"));
00073         addDBCampo("refpedidocliente", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("PedidoCliente", "Referencia"));
00074 
00075 
00077         int res = g_plugins->lanza("PedidoClienteView_PedidoClienteView", this);
00078         if (res != 0)
00079             return;
00080         subform3->setEmpresaBase(comp);
00081         mui_idcliente->setEmpresaBase(comp);
00082         mui_idforma_pago->setEmpresaBase(comp);
00083         mui_idforma_pago->setidforma_pago("");
00084         m_descuentos->setEmpresaBase(comp);
00085         mui_idalmacen->setEmpresaBase(comp);
00086         mui_idalmacen->setidalmacen("");
00087         mui_idtrabajador->setEmpresaBase(comp);
00088         mui_idtrabajador->setidtrabajador("");
00089         mui_refpedidocliente->setEmpresaBase(comp);
00090         setListaLineas(subform3);
00091         setListaDescuentos(m_descuentos);
00092         meteWindow(windowTitle(), this, FALSE);
00093     } catch (...) {
00094         mensajeInfo(tr("Error al crear el pedido cliente"));
00095     } // end try
00096     _depura("END PedidoClienteView::PedidoClienteView", 0);
00097 }
00098 
00099 
00101 
00103 PedidoClienteView::~PedidoClienteView() {
00104     _depura("PedidoClienteView::~PedidoClienteView", 0);
00105     empresaBase()->refreshPedidosCliente();
00106     _depura("END PedidoClienteView::~PedidoClienteView", 0);
00107 }
00108 
00109 
00111 
00113 void PedidoClienteView::inicializar() {
00114     _depura("PedidoClienteView::inicializar", 0);
00115     subform3->inicializar();
00116     m_descuentos->inicializar();
00117     pintar();
00118     dialogChanges_cargaInicial();
00119     _depura("END PedidoClienteView::inicializar", 0);
00120 }
00121 
00122 
00124 
00132 void PedidoClienteView::pintatotales(Fixed iva, Fixed base, Fixed total, Fixed desc, Fixed irpf, Fixed reqeq) {
00133     _depura("PedidoClienteView::pintatotales", 0);
00134     m_totalBases->setText(QString(base.toQString()));
00135     m_totalTaxes->setText(QString(iva.toQString()));
00136     m_totalDiscounts->setText(QString(desc.toQString()));
00137     m_totalIRPF->setText(QString(irpf.toQString()));
00138     m_totalReqEq->setText(QString(reqeq.toQString()));
00139     m_totalpedidocliente->setText(total.toQString());
00140     _depura("END PedidoClienteView::pintatotales", 0);
00141 }
00142 
00143 
00145 
00147 void PedidoClienteView::on_mui_verpresupuesto_clicked() {
00148     _depura("PedidoClienteView::on_mui_verpresupuesto_clicked", 0);
00149     QString SQLQuery = "SELECT * FROM presupuesto WHERE refpresupuesto = '" + DBvalue("refpedidocliente") + "' AND idcliente = " + DBvalue("idcliente");
00150     cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00151     if (!cur->eof()) {
00152         while (!cur->eof()) {
00153             PresupuestoView *bud = empresaBase()->nuevoPresupuestoView();
00154             empresaBase()->m_pWorkspace->addWindow(bud);
00155             if (bud->cargar(cur->valor("idpresupuesto"))) {
00156                 delete bud;
00157                 return;
00158             } // end if
00159             bud->show();
00160             cur->siguienteregistro();
00161         } // end while
00162     } else {
00163         _depura("No hay presupuestos con la misma referencia.", 2);
00164     } // end if
00165     delete cur;
00166     _depura("END PedidoClienteView::on_mui_verpresupuesto_clicked", 0);
00167 }
00168 
00169 
00176 void PedidoClienteView::generarAlbaran() {
00177     _depura("PedidoClienteView::generarAlbaran", 0);
00179     QString SQLQuery = "SELECT * FROM albaran WHERE refalbaran = '" + DBvalue("refpedidocliente") + "' AND idcliente = " + DBvalue("idcliente");
00180     cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00181     if (!cur->eof()) {
00184         if (QMessageBox::question(this,
00185                                   tr("Albaran ya existe"),
00186                                   tr("Existe un albaran a este cliente con la misma referencia que este pedido. Desea abrirlo para verificar?"),
00187                                   tr("&Si"), tr("&No"), QString::null, 0, 1)) {
00188             return;
00189         } // end if
00190         AlbaranClienteView *bud = new AlbaranClienteView(empresaBase(), NULL);
00191         empresaBase()->m_pWorkspace->addWindow(bud);
00192         bud->cargar(cur->valor("idalbaran"));
00193         bud->show();
00194         return;
00195     } // end if
00196     delete cur;
00197 
00199     AlbaranClienteView *bud = empresaBase()->newAlbaranClienteView();
00200     empresaBase()->m_pWorkspace->addWindow(bud);
00201     bud->cargar("0");
00202 
00204     bud->setDBvalue("comentalbaran", DBvalue("comentpedidocliente"));
00205     bud->setDBvalue("descalbaran",DBvalue("descpedidocliente"));
00206     bud->setDBvalue("idforma_pago",DBvalue("idforma_pago"));
00207     bud->setDBvalue("refalbaran",DBvalue("refpedidocliente"));
00208     bud->setDBvalue("idcliente",DBvalue("idcliente"));
00209     bud->setDBvalue("idalmacen",DBvalue("idalmacen"));
00210     bud->setDBvalue("contactalbaran",DBvalue("contactpedidocliente"));
00211     bud->setDBvalue("telalbaran",DBvalue("telpedidocliente"));
00212     bud->setDBvalue("idtrabajador",DBvalue("idtrabajador"));
00213 
00214 
00216     SDBRecord *linea, *linea1;
00217     for (int i = 0; i < m_listalineas->rowCount(); ++i) {
00218         linea = m_listalineas->lineaat(i);
00219         if (linea->DBvalue("idarticulo") != "") {
00220             linea1 = bud->getlistalineas()->lineaat(bud->getlistalineas()->rowCount() - 1);
00221             bud->getlistalineas()->nuevoRegistro();
00222             bud->getlistalineas()->setProcesarCambios(FALSE);
00223             linea1->setDBvalue("desclalbaran", linea->DBvalue("desclpedidocliente"));
00224             linea1->setDBvalue("cantlalbaran", linea->DBvalue("cantlpedidocliente"));
00225             linea1->setDBvalue("pvplalbaran", linea->DBvalue("pvplpedidocliente"));
00226             linea1->setDBvalue("ivalalbaran", linea->DBvalue("ivalpedidocliente"));
00227             linea1->setDBvalue("descuentolalbaran", linea->DBvalue("descuentolpedidocliente"));
00228             linea1->setDBvalue("idarticulo", linea->DBvalue("idarticulo"));
00229             linea1->setDBvalue("codigocompletoarticulo", linea->DBvalue("codigocompletoarticulo"));
00230             linea1->setDBvalue("nomarticulo", linea->DBvalue("nomarticulo"));
00231             bud->getlistalineas()->setProcesarCambios(TRUE);
00232         } // end if
00233     } // end for
00234 
00236     for (int i = 0; i < m_listadescuentos->rowCount(); ++i) {
00237         linea1 = m_listadescuentos->lineaat(i);
00238         if (linea1->DBvalue("proporciondpedidocliente") != "") {
00239             linea = bud->getlistadescuentos()->lineaat(bud->getlistadescuentos()->rowCount() - 1);
00240             bud->getlistadescuentos()->setProcesarCambios(FALSE);
00241             linea->setDBvalue("conceptdalbaran", linea1->DBvalue("conceptdpedidocliente"));
00242             linea->setDBvalue("proporciondalbaran", linea1->DBvalue("proporciondpedidocliente"));
00243             bud->getlistadescuentos()->setProcesarCambios(TRUE);
00244             bud->getlistadescuentos()->nuevoRegistro();
00245         } // end if
00246     } // end for
00248     bud->pintar();
00249     bud->show();
00250     _depura("END PedidoClienteView::generarAlbaran", 0);
00251 }
00252 
00253 
00255 
00257 void PedidoClienteView::on_mui_cobrar_clicked() {
00258     _depura("PedidoClienteView::on_mui_cobrar_clicked", 0);
00259     CobroView *bud = empresaBase()->newCobroView();
00260     bud->setDBvalue("idcliente", DBvalue("idcliente"));
00261     bud->setDBvalue("cantcobro", m_totalpedidocliente->text());
00262     bud->setDBvalue("refcobro", DBvalue("refpedidocliente"));
00263     bud->setDBvalue("comentcobro", DBvalue("descpedidocliente"));
00264     bud->pintar();
00265     bud->show();
00266     _depura("END PedidoClienteView::on_mui_cobrar_clicked", 0);
00267 }
00268 
00269 
00271 
00274 void PedidoClienteView::on_mui_idcliente_valueChanged(QString id) {
00275     _depura("PedidoClienteView::on_m_cliente_valueChanged", 0);
00276     subform3->setIdCliente(id);
00277     mui_idforma_pago->setIdCliente(id);
00278     _depura("END PedidoClienteView::on_m_cliente_valueChanged", 0);
00279 }
00280 
00281 
00283 
00286 int PedidoClienteView::borrarPre() {
00287     _depura("PedidoClienteView::borrar", 0);
00288     m_listalineas->borrar();
00289     m_listadescuentos->borrar();
00290     _depura("PedidoClienteView::borrar", 0);
00291     return 0;
00292 }
00293 
00294 
00296 
00300 int PedidoClienteView::cargarPost(QString idbudget) {
00301     _depura("PedidoClienteView::cargarPost", 0);
00302 
00303     m_listalineas->cargar(idbudget);
00304     m_listadescuentos->cargar(idbudget);
00305 
00307     g_plugins->lanza("PedidoClienteView_cargarPost_Post", this);
00308 
00309     calculaypintatotales();
00310 
00311     _depura("END PedidoClienteView::cargar", 0);
00312     return 0;
00313 }
00314 
00315 
00317 
00320 int PedidoClienteView::guardarPost() {
00321     _depura("PedidoClienteView::guardar", 0);
00322     m_listalineas->setColumnValue("idpedidocliente", DBvalue("idpedidocliente"));
00323     m_listalineas->guardar();
00324     m_listadescuentos->setColumnValue("idpedidocliente", DBvalue("idpedidocliente"));
00325     m_listadescuentos->guardar();
00326     return 0;
00327 }
00328 
00329 
00331 
00333 void PedidoClienteView::s_pintaTotales() {
00334     _depura("PedidoClienteView::s_pintaTotales", 0);
00335     calculaypintatotales();
00336     _depura("END PedidoClienteView::s_pintaTotales", 0);
00337 }
00338 
00339 
00341 
00343 void PedidoClienteView::on_mui_pasaraalbaran_clicked() {
00344     _depura("PedidoClienteView::on_mui_pasaraalbaran_clicked", 0);
00345     generarAlbaran();
00346     _depura("END PedidoClienteView::on_mui_pasaraalbaran_clicked", 0);
00347 }
00348 
00349 
00351 
00353 void PedidoClienteView::on_m_descuentos_editFinish(int, int) {
00354     _depura("PedidoClienteView::on_m_descuentos_editFinish", 0);
00355     calculaypintatotales();
00356     _depura("END PedidoClienteView::on_m_descuentos_editFinish", 0);
00357 }
00358 
00359 
00361 
00363 void PedidoClienteView::on_subform3_editFinish(int, int) {
00364     _depura("PedidoClienteView::on_subform3_editFinish", 0);
00365     calculaypintatotales();
00366     _depura("END sPedidoClienteView::on_subform3_editFinish", 0);
00367 }
00368 

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