contratoview.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 <QCloseEvent>
00022 #include <QComboBox>
00023 #include <QLayout>
00024 #include <QMessageBox>
00025 #include <QObject>
00026 #include <QToolButton>
00027 #include <QWidget>
00028 
00029 #include <fstream>
00030 
00031 #include "facturaview.h"
00032 #include "company.h"
00033 #include "contrato.h"
00034 #include "contratoview.h"
00035 #include "funcaux.h"
00036 #include "plugins.h"
00037 
00046 ContratoView::ContratoView(Company *comp, QWidget *parent)
00047         : Contrato(comp, parent) {
00048     _depura("ContratoView::ContratoView", 0);
00049     setAttribute(Qt::WA_DeleteOnClose);
00050     try {
00051         setupUi(this);
00052 
00054         int res = g_plugins->lanza("ContratoView_ContratoView", this);
00055         if (res != 0)
00056             return;
00057 
00058         subform2->setEmpresaBase(comp);
00059         mui_lineas->setEmpresaBase(comp);
00060         mui_idcliente->setEmpresaBase(comp);
00061         mui_refcontrato->setEmpresaBase(comp);
00062 
00064         setListaLineas(mui_lineas);
00065         meteWindow(windowTitle(), this, FALSE);
00066     } catch (...) {
00067         mensajeInfo(tr("Error al crear la contrato"));
00068     }
00069     _depura("END ContratoView::ContratoView");
00070 }
00071 
00072 
00078 ContratoView::~ContratoView() {
00079     _depura("ContratoView::~ContratoView", 0);
00080     _depura("END ContratoView::~ContratoView", 0);
00081 }
00082 
00083 
00088 void ContratoView::inicializar() {
00089     _depura("ContratoView::inicializar", 0);
00090     subform2->inicializar();
00091     dialogChanges_cargaInicial();
00092     _depura("END ContratoView::inicializar", 0);
00093 }
00094 
00095 
00104 int ContratoView::cargar(QString id) {
00105     _depura("ContratoView::cargar", 0);
00106     try {
00107         Contrato::cargar(id);
00108         if (DBvalue("idcontrato") != "") {
00109             setWindowTitle(tr("Contrato") + " " + DBvalue("refcontrato") + " " + DBvalue("idcontrato"));
00110             meteWindow(windowTitle(), this);
00111         } // end if
00112         mui_lineas->cargar(id);
00113         subform2->cargar("SELECT * FROM factura LEFT JOIN cliente ON cliente.idcliente = factura.idcliente LEFT JOIN almacen ON factura.idalmacen = almacen.idalmacen  WHERE factura.idcliente ="+DBvalue("idcliente")+ " AND reffactura = '"+DBvalue("refcontrato")+"'");
00114         dialogChanges_cargaInicial();
00115     } catch (...) {
00116         return -1;
00117     } // end try
00118     _depura("END ContratoView::cargar", 0);
00119     return 0;
00120 }
00121 
00122 
00127 
00128 
00129 
00132 int ContratoView::guardar() {
00133     _depura("ContratoView::guardar", 0);
00134     try {
00135         setDBvalue("refcontrato", mui_refcontrato->text());
00136         setDBvalue("nomcontrato", mui_nomcontrato->text());
00137         setDBvalue("idcliente", mui_idcliente->idcliente());
00138         setDBvalue("fincontrato", mui_fincontrato->text());
00139         setDBvalue("ffincontrato", mui_ffincontrato->text());
00140         setDBvalue("loccontrato", mui_loccontrato->text());
00141         setDBvalue("descontrato", mui_descontrato->toPlainText());
00142         setDBvalue("periodicidadcontrato",mui_periodicidadcontrato->periodo());
00143         Contrato::guardar();
00144         dialogChanges_cargaInicial();
00145     } catch (...) {
00146         _depura("ContratoView::guardar error al guardar", 0);
00147         throw -1;
00148     } // end try
00149     _depura("END ContratoView::guardar", 0);
00150     return 0;
00151 }
00152 
00153 
00155 
00158 void ContratoView::on_m_cliente_valueChanged(QString id) {
00159     _depura("ContratoView::on_m_cliente_valueChanged", 0);
00160     subform2->setIdCliente(id);
00161     _depura("END ContratoView::on_m_cliente_valueChanged", 0);
00162 }
00163 
00164 
00166 
00169 void ContratoView::pintaidcliente(QString id) {
00170     _depura("ContratoView::pintaidcliente", 0);
00171     mui_idcliente->setidcliente(id);
00172     _depura("END ContratoView::pintaidcliente", 0);
00173 }
00174 
00175 
00177 
00180 void ContratoView::pintafincontrato(QString id) {
00181     _depura("ContratoView::pintafincontrato", 0);
00182     mui_fincontrato->setText(id);
00183     _depura("ContratoView::pintafincontrato", 0);
00184 }
00185 
00186 
00188 
00191 void ContratoView::pintaffincontrato(QString id) {
00192     _depura("ContratoView::pintaffincontrato", 0);
00193     mui_ffincontrato->setText(id);
00194     _depura("END ContratoView::pintaffincontrato", 0);
00195 }
00196 
00197 
00199 
00202 void ContratoView::pintadescontrato(QString id) {
00203     _depura("ContratoView::pintadescontrato", 0);
00204     mui_descontrato->setText(id);
00205     _depura("END ContratoView::pintadescontrato", 0);
00206 }
00207 
00208 
00210 
00213 void ContratoView::pintarefcontrato(QString id) {
00214     _depura("ContratoView::pintarefcontrato", 0);
00215     mui_refcontrato->setText(id);
00216     _depura("END ContratoView::pintarefcontrato", 0);
00217 }
00218 
00219 
00221 
00224 void ContratoView::pintanomcontrato(QString id) {
00225     _depura("ContratoView::pintanomcontrato", 0);
00226     mui_nomcontrato->setText(id);
00227     _depura("ContratoView::pintanomcontrato", 0);
00228 }
00229 
00230 
00232 
00235 void ContratoView::pintaperiodicidadcontrato(QString id) {
00236     _depura("ContratoView::pintaperiodicidadcontrato", 0, id);
00237     mui_periodicidadcontrato->setperiodo(id);
00238 }
00239 
00240 
00242 
00245 void ContratoView::pintaloccontrato(QString id) {
00246     _depura("ContratoView::pintaloccontrato", 0);
00247     mui_loccontrato->setText(id);
00248     _depura("END ContratoView::pintaloccontrato", 0);
00249 }
00250 
00251 
00253 
00256 void ContratoView::on_subform2_itemDoubleClicked(QTableWidgetItem *) {
00257     _depura("ContratoView::on_subform2_itemDoubleClicked", 0);
00258     QString idfactura = subform2->DBvalue(QString("idfactura"), subform2->currentRow());
00259     FacturaView *prov = empresaBase()->newFacturaView();
00260     if (prov->cargar(idfactura)) {
00261         delete prov;
00262         return;
00263     } // end if
00264     empresaBase()->m_pWorkspace->addWindow(prov);
00265     prov->show();
00266     _depura("END ContratoView::on_subform2_itemDoubleClicked", 0);
00267 }
00268 
00269 
00271 
00273 void ContratoView::on_mui_facturar_clicked() {
00274     _depura("ContratoView::on_mui_facturar_clicked", 0);
00275     int periodo = 1;
00276     QString query;
00277     bool end = FALSE;
00278     while(!end) {
00279         query = "SELECT ('"+DBvalue("fincontrato")+"'::DATE +"+QString::number(periodo-1)+"* '"+DBvalue("periodicidadcontrato")+"'::INTERVAL) AS finperiodo";
00280         query += ", ('"+DBvalue("fincontrato")+"'::DATE +"+QString::number(periodo)+"* '"+DBvalue("periodicidadcontrato")+"'::INTERVAL) AS ffinperiodo";
00281         cursor2 *cur1=empresaBase()->cargacursor(query);
00282 
00283         query = "SELECT count(idfactura) AS cuenta FROM factura WHERE ffactura >= '"+cur1->valor("finperiodo")+"'";
00284         query += " AND ffactura <  '"+cur1->valor("ffinperiodo")+"'";
00285         query += " AND reffactura = '"+DBvalue("refcontrato")+"'";
00286         query += " AND idcliente = "+DBvalue("idcliente");
00287 
00288         cursor2 *cur = empresaBase()->cargacursor(query);
00289         if(cur->valor("cuenta") != "0") {
00290                 if (cur->valor("cuenta") != "1") {
00291                         _depura("Detectada doble factura en un periodo", 2, cur->valor("cuenta"));
00292                 } // end if
00293         } else {
00294             // GENERAMOS LA FACTURA
00295             FacturaView *fac = empresaBase()->newFacturaView();
00296             empresaBase()->m_pWorkspace->addWindow(fac);
00297             fac->cargar("0");
00298             fac->show();
00299             fac->setDBvalue("reffactura", DBvalue("refcontrato"));
00300             fac->setDBvalue("idcliente", DBvalue("idcliente"));
00301             fac->setDBvalue("descfactura", DBvalue("nomcontrato")+" Periodo:  "+cur1->valor("finperiodo").left(10)+ " -- "+cur1->valor("ffinperiodo").left(10));
00302 
00303             QString l;
00304             SDBRecord *linea, *linea1;
00305             for (int i = 0; i < m_listalineas->rowCount(); ++i) {
00306                 linea = m_listalineas->lineaat(i);
00307                 if (linea->DBvalue( "idarticulo") != "") {
00308                     linea1 = fac->getlistalineas()->lineaat(fac->getlistalineas()->rowCount() - 1);
00309                     linea1->setDBvalue("idarticulo", linea->DBvalue("idarticulo"));
00310                     linea1->setDBvalue("codigocompletoarticulo", linea->DBvalue("codigocompletoarticulo"));
00311                     linea1->setDBvalue("nomarticulo", linea->DBvalue("nomarticulo"));
00312                     linea1->setDBvalue("desclfactura", linea->DBvalue("desclcontrato"));
00313                     linea1->setDBvalue("descuentolfactura", "0");
00314                     linea1->setDBvalue("cantlfactura", linea->DBvalue("cantlcontrato"));
00315                     linea1->setDBvalue("pvplfactura", linea->DBvalue("pvplcontrato"));
00316                     fac->getlistalineas()->nuevoRegistro();
00317                 } // end if
00318             } // end for
00319             fac->calculaypintatotales();
00320             fac->pintar();
00321         } // end if
00322         delete cur;
00323 
00324         query = "SELECT (now() < '"+DBvalue("fincontrato")+"'::DATE + '"+DBvalue("periodicidadcontrato")+"'::INTERVAL *"+QString::number(periodo)+" ) AS dato";
00325         cur = empresaBase()->cargacursor(query);
00326         if(cur->valor("dato") == "t") {
00327             end = TRUE;
00328         }// end if
00329         delete cur1;
00330         periodo++;
00331     } // end while
00332     _depura("END ContratoView::on_mui_facturar_clicked", 0);
00333 }
00334 
00338 
00343 FacturasContratoListSubForm::FacturasContratoListSubForm(QWidget *parent, const char *) : SubForm2Bf(parent) {
00344     _depura("FacturasContratoListSubForm::FacturasContratoListSubForm", 0);
00345     setDBTableName("factura");
00346     setDBCampoId("idfactura");
00347     setFileConfig("contratofactura");
00348     addSHeader("numfactura", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Numero"));
00349     addSHeader("ffactura", DBCampo::DBdate, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Fecha"));
00350     addSHeader("nomcliente", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Nombre cliente"));
00351     addSHeader("telfactura", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Telefono factura"));
00352     addSHeader("bimpfactura", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Base imponible"));
00353     addSHeader("impfactura", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Impuestos"));
00354     addSHeader("totalfactura", DBCampo::DBnumeric, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Total"));
00355     addSHeader("procesadafactura", DBCampo::DBboolean, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Procesada"));
00356     addSHeader("idfactura", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Id factura"));
00357     addSHeader("reffactura", DBCampo::DBint, DBCampo::DBNotNull | DBCampo::DBPrimaryKey, SHeader::DBNoView | SHeader::DBNoWrite, tr("Ref factura"));
00358     addSHeader("codigoserie_factura", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Serie"));
00359     addSHeader("cifcliente", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("CIF cliente"));
00360     addSHeader("codigoalmacen", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Codigo almacen"));
00361     addSHeader("contactfactura", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Contact factura"));
00362     addSHeader("comentfactura", DBCampo::DBvarchar, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Comentario factura"));
00363     addSHeader("idtrabajador", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Id trabajador"));
00364     addSHeader("idcliente", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Id cliente"));
00365     addSHeader("idalmacen", DBCampo::DBint, DBCampo::DBNoSave, SHeader::DBNone | SHeader::DBNoWrite, tr("Id almacen"));
00366     setinsercion(FALSE);
00367     setDelete(FALSE);
00368     setSortingEnabled(TRUE);
00369     _depura("END FacturasContratoListSubForm::FacturasContratoListSubForm", 0);
00370 }
00371 
00372 

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