facturapview.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 <QTextStream>
00030 
00031 #include "facturapview.h"
00032 #include "company.h"
00033 #include "listlinfacturapview.h"
00034 #include "providerslist.h"
00035 #include "pagoview.h"
00036 #include "funcaux.h"
00037 #include "albaranproveedorview.h"
00038 
00039 
00046 FacturaProveedorView::FacturaProveedorView(Company *comp, QWidget *parent)
00047         : FichaBf(comp, parent) {
00048     _depura("FacturaProveedorView::FacturaProveedorView", 0);
00049     setAttribute(Qt::WA_DeleteOnClose);
00050     try {
00052         setupUi(this);
00053 
00054         setTitleName(tr("Factura Proveedor"));
00055         setDBTableName("facturap");
00056         setDBCampoId("idfacturap");
00057         addDBCampo("idfacturap", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate("FacturaProveedor", "Id facturap"));
00058         addDBCampo("idproveedor", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate("FacturaProveedor", "Id proveedor"));
00059         addDBCampo("numfacturap", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Numero"));
00060         addDBCampo("ffacturap", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Fecha"));
00061         addDBCampo("procesadafacturap", DBCampo::DBboolean, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Procesada facturap"));
00062         addDBCampo("comentfacturap", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Comentario facturap"));
00063         addDBCampo("reffacturap", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Referencia facturap"));
00064         addDBCampo("descfacturap", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Descripcion facturap"));
00065         addDBCampo("idtrabajador", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Id trabajador"));
00066         addDBCampo("idforma_pago", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate("FacturaProveedor", "Id forma de pago"));
00067 
00068         subform2->setEmpresaBase(comp);
00069         m_descuentos->setEmpresaBase(comp);
00070         mui_idforma_pago->setEmpresaBase(comp);
00071         mui_idforma_pago->setidforma_pago("");
00072         mui_idproveedor->setEmpresaBase(comp);
00073         mui_idproveedor->setidproveedor("");
00074         mui_reffacturap->setEmpresaBase(comp);
00075 
00076         setListaLineas(subform2);
00077         setListaDescuentos(m_descuentos);
00078 
00079         m_totalBases->setReadOnly(TRUE);
00080         m_totalBases->setAlignment(Qt::AlignRight);
00081         m_totalTaxes->setReadOnly(TRUE);
00082         m_totalTaxes->setAlignment(Qt::AlignRight);
00083         m_totalDiscounts->setReadOnly(TRUE);
00084         m_totalDiscounts->setAlignment(Qt::AlignRight);
00085         m_totalfacturap->setReadOnly(TRUE);
00086         m_totalfacturap->setAlignment(Qt::AlignRight);
00087         meteWindow(windowTitle(), this, FALSE);
00088     } catch (...) {
00089         mensajeInfo(tr("Error al crear la factura proveedor"));
00090     } // end try
00091     _depura("END FacturaProveedorView::FacturaProveedorView", 0);
00092 }
00093 
00094 
00099 FacturaProveedorView::~FacturaProveedorView() {
00100     _depura("FacturaProveedorView::~FacturaProveedorView", 0);
00101     empresaBase()->refreshFacturasProveedor();
00102     _depura("END FacturaProveedorView::~FacturaProveedorView", 0);
00103 
00104 }
00105 
00106 
00108 
00110 void FacturaProveedorView::on_mui_pagar_clicked() {
00111     _depura("FacturaProveedorView::on_mui_pagar_clicked", 0);
00112     s_nuevoPago();
00113     _depura("END FacturaProveedorView::on_mui_pagar_clicked", 0);
00114 }
00115 
00116 
00118 
00120 void FacturaProveedorView::on_m_descuentos_editFinish(int, int) {
00121     _depura("FacturaProveedorView::on_m_descuentos_editFinish", 0);
00122     calculaypintatotales();
00123     _depura("END FacturaProveedorView::on_m_descuentos_editFinish", 0);
00124 }
00125 
00126 
00128 
00130 void FacturaProveedorView::on_subform2_editFinish(int, int) {
00131     _depura("FacturaProveedorView::on_subform2_editFinish", 0);
00132     calculaypintatotales();
00133     _depura("END FacturaProveedorView::on_subform2_editFinish", 0);
00134 }
00135 
00136 
00142 void FacturaProveedorView::inicializar() {
00143     _depura("FacturaProveedorView::inicializar", 0);
00144     subform2->inicializar();
00145     m_descuentos->inicializar();
00146     pintar();
00147     dialogChanges_cargaInicial();
00148     _depura("END FacturaProveedorView::inicializar", 0);
00149 }
00150 
00151 
00162 void FacturaProveedorView::pintatotales(Fixed iva, Fixed base, Fixed total, Fixed desc, Fixed irpf, Fixed reqeq) {
00163     _depura("PresupuestoView::pintatotales", 0);
00164     m_totalBases->setText(QString(base.toQString()));
00165     m_totalTaxes->setText(QString(iva.toQString()));
00166     m_totalfacturap->setText(QString(total.toQString()));
00167     m_totalDiscounts->setText(QString(desc.toQString()));
00168     m_totalIRPF->setText(QString(irpf.toQString()));
00169     m_totalReqEq->setText(QString(reqeq.toQString()));
00170     _depura("END PresupuestoView::pintatotales", 0);
00171 }
00172 
00173 
00178 
00179 
00181 void FacturaProveedorView::s_nuevoPago() {
00182     _depura("FacturaProveedorView::s_nuevoPago", 0);
00183     PagoView *bud = empresaBase()->newPagoView();
00184     empresaBase()->m_pWorkspace->addWindow(bud);
00185     bud->setDBvalue("idproveedor", DBvalue("idproveedor"));
00186     bud->setDBvalue("cantpago", m_totalfacturap->text());
00187     bud->setDBvalue("refpago", DBvalue("reffacturap"));
00188     bud->setDBvalue("comentpago", DBvalue("descfacturap"));
00189     bud->pintar();
00190     bud->show();
00191     _depura("END FacturaProveedorView::s_nuevoPago", 0);
00192 }
00193 
00194 
00200 void FacturaProveedorView::on_mui_veralbaranes_clicked() {
00201     _depura("FacturaProveedorView::on_mui_veralbaranes_clicked", 0);
00202     QString query = "SELECT * FROM albaranp WHERE refalbaranp='"+DBvalue("reffacturap")+"'";
00203     cursor2 *cur = empresaBase()->cargacursor(query);
00204     while (!cur->eof()) {
00205         AlbaranProveedorView *albpro = empresaBase()->newAlbaranProveedorView();
00206         albpro->cargar(cur->valor("idalbaranp"));
00207         empresaBase()->m_pWorkspace->addWindow( albpro);
00208         albpro->show();
00209         cur->siguienteregistro();
00210     } // end while
00211     delete cur;
00212     _depura("END FacturaProveedorView::on_mui_veralbaranes_clicked", 0);
00213 }
00214 
00215 
00217 
00220 void FacturaProveedorView::on_mui_idproveedor_valueChanged(QString id) {
00221     _depura("FacturaProveedorView::on_m_proveedor_valueChanged", 0);
00222     subform2->setIdProveedor(id);
00223     mui_idforma_pago->setIdProveedor(id);
00224     _depura("END FacturaProveedorView::on_m_proveedor_valueChanged", 0);
00225 }
00226 
00227 
00238 int FacturaProveedorView::borrarPre() {
00239     _depura("FacturaProveedorView::borrar", 0);
00240     m_listalineas->borrar();
00241     m_listadescuentos->borrar();
00242     _depura("END FacturaProveedorView::borrar", 0);
00243     return 0;
00244 }
00245 
00246 
00247 
00258 int FacturaProveedorView::cargarPost(QString idfacturap) {
00259     _depura("FacturaProveedorView::cargar", 0);
00260     m_listalineas->cargar(idfacturap);
00261     m_listadescuentos->cargar(idfacturap);
00262 
00264     g_plugins->lanza("FacturaProveedorView_cargarPost_Post", this);
00265 
00266     calculaypintatotales();
00267     _depura("END FacturaProveedorView::cargar", 0);
00268     return 0;
00269 }
00270 
00280 int FacturaProveedorView::guardarPost() {
00281     _depura("FacturaProveedorView::guardar()", 0);
00282     m_listalineas->setColumnValue("idfacturap", DBvalue("idfacturap"));
00283     m_listadescuentos->setColumnValue("idfacturap", DBvalue("idfacturap"));
00284     m_listalineas->guardar();
00285     m_listadescuentos->guardar();
00286     _depura("END FacturaProveedorView::guardar()", 0);
00287     return 0;
00288 }
00289 
00290 
00293 
00294 
00297 void FacturaProveedorView::imprimirFacturaProveedor() {
00299     int res = g_plugins->lanza("imprimirFacturaProveedor", this);
00300     if (res)
00301         return;
00302 
00303     base basesimp;
00304 
00305     QString archivo = confpr->valor(CONF_DIR_OPENREPORTS) + "facturap.rml";
00306     QString archivod = confpr->valor(CONF_DIR_USER) + "facturap.rml";
00307     QString archivologo = confpr->valor(CONF_DIR_OPENREPORTS) + "logo.jpg";
00308 
00310 #ifdef WINDOWS
00311 
00312     archivo = "copy " + archivo + " " + archivod;
00313 #else
00314 
00315     archivo = "cp " + archivo + " " + archivod;
00316 #endif
00317 
00318     system(archivo.toAscii().constData());
00319 
00321 #ifdef WINDOWS
00322 
00323     archivologo = "copy " + archivologo + " " + confpr->valor(CONF_DIR_USER) + "logo.jpg";
00324 #else
00325 
00326     archivologo = "cp " + archivologo + " " + confpr->valor(CONF_DIR_USER) + "logo.jpg";
00327 #endif
00328 
00329     system(archivologo.toAscii().constData());
00330 
00331     QFile file;
00332     file.setFileName(archivod);
00333     file.open(QIODevice::ReadOnly);
00334     QTextStream stream(&file);
00335     QString buff = stream.readAll();
00336     file.close();
00337     QString fitxersortidatxt="";
00338 
00340     QString SQLQuery = "SELECT * FROM proveedor WHERE idproveedor = " + DBvalue("idproveedor");
00341     cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00342     if (!cur->eof()) {
00343         buff.replace("[dirproveedor]", cur->valor("dirproveedor"));
00344         buff.replace("[poblproveedor]", cur->valor("poblproveedor"));
00345         buff.replace("[telproveedor]", cur->valor("telproveedor"));
00346         buff.replace("[nomproveedor]", cur->valor("nomproveedor"));
00347         buff.replace("[cifproveedor]", cur->valor("cifproveedor"));
00348     } // end if
00349     delete cur;
00350 
00351     buff.replace("[numfacturap]", DBvalue("numfacturap"));
00352     buff.replace("[ffacturap]", DBvalue("ffacturap"));
00353     buff.replace("[comentfacturap]", DBvalue("comentfacturap"));
00354     buff.replace("[descfacturap]", DBvalue("descfacturap"));
00355     buff.replace("[reffacturap]", DBvalue("reffacturap"));
00356 
00358     fitxersortidatxt += "<blockTable style=\"tablacontenido\" colWidths=\"1.75cm, 8.75cm, 1.5cm, 1.5cm, 1.5cm, 2.25cm\" repeatRows=\"1\">\n";
00359     fitxersortidatxt += "<tr>\n";
00360     fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Codigo") + "</td>\n";
00361     fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Concepto") + "</td>\n";
00362     fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Cant.") + "</td>\n";
00363     fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Precio") + "</td>\n";
00364     fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Desc.") + "</td>\n";
00365     fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Total") + "</td>\n";
00366     fitxersortidatxt += "</tr>\n";
00367     QString l;
00368 
00370     int i = 0;
00371 
00372     SDBRecord *linea;
00373     for (int i = 0; i < m_listalineas->rowCount(); ++i) {
00374         linea = m_listalineas->lineaat(i);
00375         Fixed base = Fixed(linea->DBvalue("cantlfacturap").toAscii().constData()) * Fixed(linea->DBvalue("pvplfacturap").toAscii().constData());
00376         basesimp[linea->DBvalue("ivalfacturap")] = basesimp[linea->DBvalue("ivalfacturap")] + base - base * Fixed(linea->DBvalue("descuentolfacturap").toAscii().constData()) / 100;
00377 
00378         fitxersortidatxt += "<tr>\n";
00379         fitxersortidatxt += "        <td>" + linea->DBvalue("codigocompletoarticulo") + "</td>\n";
00380         fitxersortidatxt += "        <td>" + linea->DBvalue("desclfacturap") + "</td>\n";
00381         fitxersortidatxt += "        <td>" + linea->DBvalue("cantlfacturap") + "</td>\n";
00382         fitxersortidatxt += "        <td>" + linea->DBvalue("pvplfacturap") + "</td>\n";
00383         fitxersortidatxt += "        <td>" + linea->DBvalue("descuentolfacturap") + " %</td>\n";
00384         fitxersortidatxt += "        <td>" + (base - base * Fixed (linea->DBvalue("descuentolfacturap")) / 100).toQString() + "</td>\n";
00385         fitxersortidatxt += "</tr>";
00386         i++;
00387     } // end for
00388 
00389     while (i++ < 15)
00390         fitxersortidatxt += "<tr></tr>";
00391 
00392     fitxersortidatxt += "</blockTable>\n";
00393     buff.replace("[story]", fitxersortidatxt);
00394 
00395     Fixed basei("0.00");
00396     base::Iterator it;
00397     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00398         basei = basei + it.value();
00399     } // end for
00400 
00402     fitxersortidatxt = "";
00403     Fixed porcentt("0.00");
00404     SDBRecord *linea1;
00405     if (m_listadescuentos->rowCount()) {
00406         fitxersortidatxt += "<blockTable style=\"tabladescuento\" colWidths=\"12cm, 2cm, 3cm\" repeatRows=\"1\">\n";
00407         fitxersortidatxt += "<tr>\n";
00408         fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Descuento") + "</td>\n";
00409         fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Porcentaje") + "</td>\n";
00410         fitxersortidatxt += "        <td>" + QApplication::translate("FacturaProveedor", "Total") + "</td>\n";
00411         fitxersortidatxt += "</tr>\n";
00412         for (int i = 0; i < m_listadescuentos->rowCount(); ++i) {
00413             linea1 = m_listadescuentos->lineaat(i);
00414             porcentt = porcentt + Fixed(linea1->DBvalue("proporciondfacturap").toAscii().constData());
00415             fitxersortidatxt += "<tr>\n";
00416             fitxersortidatxt += "        <td>" + linea1->DBvalue("conceptdfacturap") + "</td>\n";
00417             fitxersortidatxt += "        <td>" + linea1->DBvalue("proporciondfacturap") + " %</td>\n";
00418             fitxersortidatxt += "        <td>" + l.sprintf("-%s", ( Fixed(linea1->DBvalue("proporciondfacturap")) * basei / 100).toQString().toAscii().constData()) + "</td>\n";
00419             fitxersortidatxt += "</tr>";
00420         } // end for
00421         fitxersortidatxt += "</blockTable>\n";
00422     } // end if
00423     buff.replace("[descuentos]", fitxersortidatxt);
00424 
00426     fitxersortidatxt= "";
00427     QString tr1 = "";   
00428     QString tr2 = "";   
00429     fitxersortidatxt += "<blockTable style=\"tablatotales\">\n";
00430 
00431     Fixed totbaseimp("0.00");
00432     Fixed parbaseimp("0.00");
00433     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00434         if (porcentt > 0) {
00435             parbaseimp = it.value() - it.value() * porcentt / 100;
00436         } else {
00437             parbaseimp = it.value();
00438         } // end if
00439         totbaseimp = totbaseimp + parbaseimp;
00440         tr1 += "        <td>" + QApplication::translate("FacturaProveedor", "Base ") + it.key() + " %</td>\n";
00441         tr2 += "        <td>" + l.sprintf("%s",parbaseimp.toQString().toAscii().constData()) + "</td>\n";
00442     } // end for
00443 
00444     Fixed totiva("0.0");
00445     Fixed pariva("0.0");
00446     for (it = basesimp.begin(); it != basesimp.end(); ++it) {
00447         if (porcentt > 0) {
00448             pariva = (it.value() - it.value() * porcentt / 100) * Fixed(it.key()) / 100;
00449         } else {
00450             pariva = it.value() * Fixed(it.key()) / 100;
00451         } // end if
00452         totiva = totiva + pariva;
00453         tr1 += "        <td>" + QApplication::translate("FacturaProveedor", "IVA ") + it.key() + " %</td>\n";
00454         tr2 += "        <td>" + l.sprintf("%s", pariva.toQString().toAscii().constData()) + "</td>\n";
00455     } // end for
00456     tr1 += "        <td>" + QApplication::translate("FacturaProveedor", "Total ") + "</td>\n";
00457     tr2 += "        <td>" + l.sprintf("%s", (totiva + totbaseimp).toQString().toAscii().constData()) + "</td>\n";
00458     fitxersortidatxt += "<tr>" + tr1 + "</tr><tr>" + tr2 + "</tr></blockTable>\n";
00459     buff.replace("[totales]", fitxersortidatxt);
00460 
00461     if (file.open(QIODevice::WriteOnly)) {
00462         QTextStream stream(&file) ;
00463         stream << buff;
00464         file.close();
00465     } // end if
00466     invocaPDF("facturap");
00467 }
00468 
00469 
00470 

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