presupuestoview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2004 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 <QMessageBox>
00022 #include <QWidget>
00023 #include <QObject>
00024 #include <QComboBox>
00025 #include <QToolButton>
00026 #include <QFile>
00027 #include <QTextStream>
00028 #include <QLayout>
00029 #include <QMessageBox>
00030 #include <QCloseEvent>
00031 
00032 #include "funcaux.h"
00033 #include "listlinpresupuestoview.h"
00034 #include "presupuestoview.h"
00035 #include "company.h"
00036 #include "clientslist.h"
00037 #include "articulolist.h"
00038 #include "configuracion.h"
00039 #include "pedidoclienteview.h"
00040 #include "albaranclienteview.h"
00041 #include "busquedacliente.h"
00042 #include "busquedaformapago.h"
00043 #include "informereferencia.h"
00044 #include "plugins.h"
00045 
00046 
00048 
00053 PresupuestoView::PresupuestoView(Company *comp, QWidget *parent)
00054         : FichaBf(comp, parent) {
00055     _depura("Inicializacion de PresupuestoView", 0);
00056     setAttribute(Qt::WA_DeleteOnClose);
00057     try {
00058         setupUi(this);
00059 
00060         setTitleName(tr("Presupuesto"));
00061         setDBTableName("presupuesto");
00062         setDBCampoId("idpresupuesto");
00063         addDBCampo("idpresupuesto", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate("Presupuesto", "ID presupuesto"));
00064         addDBCampo("idcliente", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("Presupuesto", "ID cliente"));
00065         addDBCampo("idalmacen", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("Presupuesto", "ID almacen"));
00066         addDBCampo("numpresupuesto", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Numero de presupuesto"));
00067         addDBCampo("fpresupuesto", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Fecha de creacion"));
00068         addDBCampo("vencpresupuesto", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Fecha de vencimiento"));
00069         addDBCampo("contactpresupuesto", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Persona de contacto"));
00070         addDBCampo("telpresupuesto", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Numero de telefono"));
00071         addDBCampo("comentpresupuesto", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Comentarios"));
00072         addDBCampo("procesadopresupuesto", DBCampo::DBboolean, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Presupuesto procesado"));
00073         addDBCampo("descpresupuesto", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("Presupuesto", "% Descuento"));
00074         addDBCampo("refpresupuesto", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("Presupuesto", "Referencia"));
00075         addDBCampo("idforma_pago", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("Presupuesto", "ID forma de pago"));
00076         addDBCampo("idtrabajador", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("Presupuesto", "ID trabajador"));
00077 
00079         int res = g_plugins->lanza("PresupuestoView_PresupuestoView", this);
00080         if (res != 0) {
00081             return;
00082         } // end if
00083 
00085         subform2->setEmpresaBase(comp);
00086         m_descuentos->setEmpresaBase(comp);
00087         mui_idcliente->setEmpresaBase(comp);
00088         mui_idforma_pago->setEmpresaBase(comp);
00089         mui_idalmacen->setEmpresaBase(comp);
00090         mui_idtrabajador->setEmpresaBase(comp);
00091         mui_refpresupuesto->setEmpresaBase(comp);
00092 
00093         setListaLineas(subform2);
00094         setListaDescuentos(m_descuentos);
00095 
00096         m_totalBases->setReadOnly(TRUE);
00097         m_totalBases->setAlignment(Qt::AlignRight);
00098         m_totalTaxes->setReadOnly(TRUE);
00099         m_totalTaxes->setAlignment(Qt::AlignRight);
00100         m_totalDiscounts->setReadOnly(TRUE);
00101         m_totalDiscounts->setAlignment(Qt::AlignRight);
00102         m_totalPresupuestoCliente->setReadOnly(TRUE);
00103         m_totalPresupuestoCliente->setAlignment(Qt::AlignRight);
00104 
00106         mui_idforma_pago->setValorCampo("0");
00107         mui_idalmacen->setValorCampo("0");
00108         mui_idtrabajador->setValorCampo("0");
00109 
00110         meteWindow(windowTitle(), this, FALSE);
00112         g_plugins->lanza("PresupuestoView_PresupuestoView_Post", this);
00113     } catch (...) {
00114         mensajeInfo(tr("Error al crear el presupuesto"));
00115     } // end try
00116     _depura("Fin de la inicializacion de PresupuestoView", 0);
00117 }
00118 
00119 
00121 
00123 void PresupuestoView::inicializar() {
00124     _depura("PresupuestoView::inicializar", 0);
00125     subform2->inicializar();
00126     m_descuentos->inicializar();
00127     dialogChanges_cargaInicial();
00128     _depura("END PresupuestoView::inicializar", 0);
00129 }
00130 
00131 
00133 
00135 PresupuestoView::~PresupuestoView() {
00136     _depura("PresupuestoView::~PresupuestoView", 0);
00137     ((Company *)empresaBase())->refreshPresupuestos();
00138 
00140     g_plugins->lanza("PresupuestoView_DesPresupuestoView", this);
00141     _depura("END PresupuestoView::~PresupuestoView", 0);
00142 }
00143 
00144 
00146 
00148 void PresupuestoView::s_pintaTotales() {
00149     _depura("PresupuestoView::s_pintaTotales", 0);
00150     calculaypintatotales();
00151     _depura("END PresupuestoView::s_pintaTotales", 0);
00152 }
00153 
00154 
00156 
00158 void PresupuestoView::on_mui_pasarapedido_clicked() {
00159     _depura("PresupuestoView::on_mui_pasarapedido_clicked", 0);
00160     generarPedidoCliente();
00161     _depura("END PresupuestoView::on_mui_pasarapedido_clicked", 0);
00162 }
00163 
00164 
00166 
00168 void PresupuestoView::on_m_descuentos_editFinish(int, int) {
00169     _depura("PresupuestoView::on_m_descuentos_editFinish", 0);
00170     calculaypintatotales();
00171     _depura("END PresupuestoView::on_m_descuentos_editFinish", 0);
00172 }
00173 
00175 
00177 void PresupuestoView::on_subform2_editFinish(int, int) {
00178     _depura("PresupuestoView::on_subform2_editFinish", 0);
00179     calculaypintatotales();
00180     _depura("END PresupuestoView::on_subform2_editFinish", 0);
00181 }
00182 
00183 
00184 
00186 
00194 void PresupuestoView::pintatotales(Fixed iva, Fixed base, Fixed total, Fixed desc, Fixed irpf, Fixed reqeq) {
00195     _depura("PresupuestoView::pintatotales", 0);
00196     m_totalBases->setText(QString(base.toQString()));
00197     m_totalTaxes->setText(QString(iva.toQString()));
00198     m_totalPresupuestoCliente->setText(QString(total.toQString()));
00199     m_totalDiscounts->setText(QString(desc.toQString()));
00200     m_totalIRPF->setText(QString(irpf.toQString()));
00201     m_totalReqEq->setText(QString(reqeq.toQString()));
00202     _depura("END PresupuestoView::pintatotales", 0);
00203 }
00204 
00205 
00207 
00210 void PresupuestoView::generarPedidoCliente() {
00211     _depura("PresupuestoView::generarPedidoCliente", 0);
00213     QString SQLQuery = "SELECT * FROM pedidocliente WHERE refpedidocliente = '" + DBvalue("refpresupuesto") + "' AND idcliente = "+DBvalue("idcliente");
00214     cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00215     if (!cur->eof()) {
00216 
00217 
00220         if (QMessageBox::question(this,
00221                                   tr("Pedido existente"),
00222                                   tr("Existe un pedido a este cliente con la misma referencia que este presupuesto. Desea abrirla para verificar?"),
00223                                   tr("&Si"), tr("&No"), QString::null, 0, 1)) {
00224             return;
00225         }
00226         PedidoClienteView *bud = empresaBase()->newPedidoClienteView();
00227         empresaBase()->m_pWorkspace->addWindow(bud);
00228         bud->cargar(cur->valor("idpedidocliente"));
00229         bud->show();
00230         delete cur;
00231         return;
00232     } // end if
00233     delete cur;
00234 
00237     //    if (QMessageBox::question(this,
00238     //                              tr("Pedido de cliente inexistente"),
00239     //                              tr("No existe un pedido asociado a este presupuesto. Desea crearlo?"),
00240     //                              tr("&Si"), tr("&No"),
00241     //                              QString::null, 0, 1))
00242     //        return;
00243 
00245     PedidoClienteView *bud = empresaBase()->newPedidoClienteView();
00246     bud->cargar("0");
00247     empresaBase()->m_pWorkspace->addWindow(bud);
00248 
00250     recogeValores();
00251     bud->setDBvalue("idcliente", DBvalue("idcliente"));
00252     bud->setDBvalue("comentpedidocliente", DBvalue("comentpresupuesto"));
00253     bud->setDBvalue("descpedidocliente", DBvalue("descpresupuesto"));
00254     bud->setDBvalue("fechapedidocliente", DBvalue("fpresupuesto"));
00255     bud->setDBvalue("idforma_pago", DBvalue("idforma_pago"));
00256     bud->setDBvalue("refpedidocliente", DBvalue("refpresupuesto"));
00257     bud->setDBvalue("procesadopedidocliente", DBvalue("procesadopresupuesto"));
00258     bud->setDBvalue("idalmacen", DBvalue("idalmacen"));
00259     bud->setDBvalue("contactpedidocliente", DBvalue("contactpresupuesto"));
00260     bud->setDBvalue("telpedidocliente", DBvalue("telpresupuesto"));
00261 
00263     SDBRecord *linea;
00264     SDBRecord *linea2;
00265 
00266 
00267     for (int i = 0; i < m_listalineas->rowCount(); i++) {
00268         linea = m_listalineas->lineaat(i);
00269         if (linea->DBvalue("idarticulo") != "") {
00270             linea2 = bud->getlistalineas()->lineaat(bud->getlistalineas()->rowCount() - 1);
00271             bud->getlistalineas()->nuevoRegistro();
00272             bud->getlistalineas()->setProcesarCambios(FALSE);
00273             linea2->setDBvalue("desclpedidocliente", linea->DBvalue("desclpresupuesto"));
00274             linea2->setDBvalue("cantlpedidocliente", linea->DBvalue("cantlpresupuesto"));
00275             linea2->setDBvalue("pvplpedidocliente", linea->DBvalue("pvplpresupuesto"));
00276             linea2->setDBvalue("ivalpedidocliente", linea->DBvalue("ivalpresupuesto"));
00277             linea2->setDBvalue("descuentolpedidocliente", linea->DBvalue("descuentolpresupuesto"));
00278             linea2->setDBvalue("idarticulo", linea->DBvalue("idarticulo"));
00279             linea2->setDBvalue("codigocompletoarticulo", linea->DBvalue("codigocompletoarticulo"));
00280             linea2->setDBvalue("nomarticulo", linea->DBvalue("nomarticulo"));
00281             bud->getlistalineas()->setProcesarCambios(TRUE);
00282         } // end if
00283     } // end for
00284 
00285 
00286 
00288     SDBRecord *linea1;
00289     SDBRecord *linea3;
00290     for (int i = 0; i < m_listadescuentos->rowCount(); i++) {
00291         linea1 = m_listadescuentos->lineaat(i);
00292         if (linea1->DBvalue("proporciondpresupuesto") != "") {
00293             linea3 = bud->getlistadescuentos()->lineaat(bud->getlistadescuentos()->rowCount() - 1);
00294             bud->getlistadescuentos()->setProcesarCambios(FALSE);
00295             linea3->setDBvalue("conceptdpedidocliente", linea1->DBvalue("conceptdpresupuesto"));
00296             linea3->setDBvalue("proporciondpedidocliente", linea1->DBvalue("proporciondpresupuesto"));
00297             bud->getlistadescuentos()->setProcesarCambios(TRUE);
00298             bud->getlistadescuentos()->nuevoRegistro();
00299         } // end if
00300     } // end for
00301 
00302 
00304     bud->pintar();
00305     bud->show();
00306     _depura("END PresupuestoView::generarPedidoCliente", 0);
00307 }
00308 
00309 
00311 
00314 void PresupuestoView::on_mui_idcliente_valueChanged(QString id) {
00315     _depura("PresupuestoView::on_m_cliente_valueChanged", 0);
00316     subform2->setIdCliente(id);
00317     mui_idforma_pago->setIdCliente(id);
00318     _depura("END PresupuestoView::on_m_cliente_valueChanged", 0);
00319 }
00320 
00321 
00323 
00326 int PresupuestoView::borrarPre() {
00327     _depura("PresupuestoView::borrar", 0);
00329     g_plugins->lanza("Presupuesto_borrarPre", this);
00330     m_listalineas->borrar();
00331     m_listadescuentos->borrar();
00332 
00333     _depura("END PresupuestoView::borrar", 0);
00334     return 0;
00335 }
00336 
00337 
00339 
00343 int PresupuestoView::cargarPost(QString idbudget) {
00344     _depura("PresupuestoView::cargarPost", 0);
00345 
00346     m_listalineas->cargar(idbudget);
00347     m_listadescuentos->cargar(idbudget);
00348 
00349     calculaypintatotales();
00350 
00351     _depura("END PresupuestoView::cargar", 0);
00352     return 0;
00353 }
00354 
00355 
00357 
00360 int PresupuestoView::guardarPost() {
00361     _depura("PresupuestoView::guardarPost", 0);
00362 
00363     m_listalineas->setColumnValue("idpresupuesto", DBvalue("idpresupuesto"));
00364     m_listadescuentos->setColumnValue("idpresupuesto", DBvalue("idpresupuesto"));
00365 
00366     m_listalineas->guardar();
00367     m_listadescuentos->guardar();
00369     g_plugins->lanza("Presupuesto_guardarPost_Post", this);
00370 
00371     _depura("END PresupuestoView::guardar", 0);
00372     return 0;
00373 }
00374 
00375 
00377 
00380 QString PresupuestoView::detalleArticulos() {
00381     _depura("PresupuestoView::detalleArticulos", 0);
00382     QString texto = "";
00383     cursor2 *cur = empresaBase()->cargacursor("SELECT * FROM lpresupuesto LEFT JOIN articulo ON lpresupuesto.idarticulo = articulo.idarticulo WHERE presentablearticulo AND idpresupuesto=" + DBvalue("idpresupuesto"));
00384     int i = 0;
00385     while (!cur->eof()) {
00386         i = !i;
00387         if (i) {
00388             texto += "<blockTable style=\"tabladetalle1\" colWidths=\"5cm, 8cm\" rowHeights=\"5.5cm\">\n";
00389         } else {
00390             texto += "<blockTable style=\"tabladetalle2\" colWidths=\"8cm, 5cm\" rowHeights=\"5.5cm\">\n";
00391         } // end if
00392         texto += "<tr>\n";
00393         if (i) {
00394             texto += "<td><h1>" + cur->valor("nomarticulo") + "</h1>";
00395             texto += "<para><pre>" + cur->valor("obserarticulo") + "</pre></para></td>\n";
00396         } // end if
00397         QString file = confpr->valor(CONF_DIR_IMG_ARTICLES) + cur->valor("codigocompletoarticulo") + ".jpg";
00398         QFile f(file);
00399         if (f.exists()) {
00400             texto += "    <td><illustration x=\"0\" y=\"0\" height=\"5cm\">\n"
00401                      "        <image file=\"" + confpr->valor(CONF_DIR_IMG_ARTICLES) + cur->valor("codigocompletoarticulo") + ".jpg\" x=\"0\" y=\"0\" height=\"5cm\"/>\n"
00402                      "        </illustration></td>\n";
00403         } else {
00404             texto += "<td></td>\n";
00405         } // end if
00406         if (!i) {
00407             texto += "<td><h1>" + cur->valor("nomarticulo") + "</h1>";
00408             texto += "<para><pre>" + cur->valor("obserarticulo") + "</pre></para></td>\n";
00409         } // end if
00410         texto += "</tr>\n";
00411         texto += "</blockTable>";
00412         cur->siguienteregistro();
00413     } // end while
00414     delete cur;
00415     _depura("END PresupuestoView::detalleArticulos", 0);
00416     return texto;
00417 }
00418 
00419 
00420 
00421 
00422 
00423 
00424 

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