facturaview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by Tomeu Borras Riera                              *
00003  *   tborras@conetxia.com                                                  *
00004  *   http://www.iglues.org                                                 *
00005  *                                                                         *
00006  *   This program is free software; you can redistribute it and/or modify  *
00007  *   it under the terms of the GNU General Public License as published by  *
00008  *   the Free Software Foundation; either version 2 of the License, or     *
00009  *   (at your option) any later version.                                   *
00010  *                                                                         *
00011  *   This program is distributed in the hope that it will be useful,       *
00012  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00013  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00014  *   GNU General Public License for more details.                          *
00015  *                                                                         *
00016  *   You should have received a copy of the GNU General Public License     *
00017  *   along with this program; if not, write to the                         *
00018  *   Free Software Foundation, Inc.,                                       *
00019  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00020  ***************************************************************************/
00021 
00022 #include <QCloseEvent>
00023 #include <QComboBox>
00024 #include <QLayout>
00025 #include <QMessageBox>
00026 #include <QObject>
00027 #include <QToolButton>
00028 #include <QWidget>
00029 
00030 #include <fstream>
00031 
00032 #include "albaranclientelist.h"
00033 #include "albaranclienteview.h"
00034 #include "clientslist.h"
00035 #include "cobroview.h"
00036 #include "company.h"
00037 #include "facturaview.h"
00038 #include "funcaux.h"
00039 #include "informereferencia.h"
00040 #include "listdescfacturaview.h"
00041 #include "listlinfacturaview.h"
00042 #include "plugins.h"
00043 
00044 
00052 FacturaView::FacturaView(Company *comp, QWidget *parent)
00053         : FichaBf ( comp, parent ) {
00054     _depura("FacturaView::FacturaView", 0);
00055     setupUi(this);
00056     setAttribute(Qt::WA_DeleteOnClose);
00057     try {
00058         setTitleName(tr("Factura"));
00059         setDBTableName ( "factura" );
00060         setDBCampoId ( "idfactura" );
00061         addDBCampo ( "idfactura", DBCampo::DBint, DBCampo::DBPrimaryKey, QApplication::translate ( "Factura", "Id factura" ) );
00062         addDBCampo ( "idcliente", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate ( "Factura", "Id cliente" ) );
00063         addDBCampo ( "idalmacen", DBCampo::DBint, DBCampo::DBNotNull, QApplication::translate ( "Factura", "Id almacen" ) );
00064         addDBCampo ( "numfactura", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate ( "Factura", "Numero factura" ) );
00065         addDBCampo ( "ffactura", DBCampo::DBdate, DBCampo::DBNothing, QApplication::translate ( "Factura", "Ffactura" ) );
00066         addDBCampo ( "procesadafactura", DBCampo::DBboolean, DBCampo::DBNothing, QApplication::translate ( "Factura", "Procesada factura" ) );
00067         addDBCampo ( "codigoserie_factura", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate ( "Factura", "Codigo serie factura" ) );
00068         addDBCampo ( "comentfactura", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate ( "Factura", "Comentario factura" ) );
00069         addDBCampo ( "reffactura", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate ( "Factura", "Referencia factura" ) );
00070         addDBCampo ( "descfactura", DBCampo::DBvarchar, DBCampo::DBNothing, QApplication::translate ( "Factura", "Descripcion factura" ) );
00071         addDBCampo ( "idtrabajador", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate ( "Factura", "Id trabajador" ) );
00072         addDBCampo ( "idforma_pago", DBCampo::DBint, DBCampo::DBNothing, QApplication::translate ( "Factura", "Id formad de pago" ) );
00073 
00075         mui_labelAlmacen->setText(tr("Al&macen"));
00076         mui_labelAlmacen->setBuddy(mui_idalmacen);
00077 
00079         int res = g_plugins->lanza("FacturaView_FacturaView", this);
00080         if (res != 0) {
00081             return;
00082         } // end if
00083         subform2->setEmpresaBase(comp);
00084         mui_idalmacen->setEmpresaBase(comp);
00085         mui_idalmacen->setidalmacen("");
00086         mui_idforma_pago->setEmpresaBase(comp);
00087         mui_idforma_pago->setidforma_pago("");
00088         mui_idcliente->setEmpresaBase(comp);
00089         m_descuentos->setEmpresaBase(comp);
00090         mui_codigoserie_factura->setEmpresaBase(comp);
00091         mui_codigoserie_factura->setcodigoserie_factura("");
00092         mui_reffactura->setEmpresaBase(comp);
00093 
00095         setListaLineas(subform2);
00096         setListaDescuentos(m_descuentos);
00097 
00098         m_totalBases->setReadOnly(TRUE);
00099         m_totalBases->setAlignment(Qt::AlignRight);
00100         m_totalTaxes->setReadOnly(TRUE);
00101         m_totalTaxes->setAlignment(Qt::AlignRight);
00102         m_totalDiscounts->setReadOnly(TRUE);
00103         m_totalDiscounts->setAlignment(Qt::AlignRight);
00104         m_totalfactura->setReadOnly(TRUE);
00105         m_totalfactura->setAlignment(Qt::AlignRight);
00106         meteWindow(windowTitle(), this, FALSE);
00107     } catch (...) {
00108         mensajeInfo(tr("Error al crear la factura"));
00109     }
00110     _depura("END FacturaView::FacturaView");
00111 }
00112 
00113 
00119 FacturaView::~FacturaView() {
00120     _depura("FacturaView::~FacturaView", 0);
00121     empresaBase()->refreshFacturas();
00122     _depura("END FacturaView::~FacturaView", 0);
00123 }
00124 
00125 
00130 void FacturaView::inicializar() {
00131     _depura("FacturaView::inicializar", 0);
00132     subform2->inicializar();
00133     m_descuentos->inicializar();
00134     pintar();
00135     dialogChanges_cargaInicial();
00136     _depura("END FacturaView::inicializar", 0);
00137 }
00138 
00139 
00151 void FacturaView::pintatotales(Fixed iva, Fixed base, Fixed total, Fixed desc, Fixed irpf, Fixed reqeq) {
00152     _depura("FacturaView::pintatotales", 0);
00153     m_totalBases->setText(base.toQString());
00154     m_totalTaxes->setText(iva.toQString());
00155     m_totalfactura->setText(total.toQString());
00156     m_totalDiscounts->setText(desc.toQString());
00157     m_totalIRPF->setText(QString(irpf.toQString()));
00158     m_totalReqEq->setText(QString(reqeq.toQString()));
00159     _depura("FacturaView::pintatotales", 0);
00160 }
00161 
00162 
00169 void FacturaView::on_mui_cobrar_clicked() {
00170     _depura("FacturaView::on_mui_cobrar_clicked", 0);
00171     CobroView *bud = empresaBase()->newCobroView();
00172     empresaBase()->m_pWorkspace->addWindow(bud);
00173     bud->setDBvalue("idcliente", DBvalue("idcliente"));
00174     bud->setDBvalue("cantcobro", m_totalfactura->text());
00175     bud->setDBvalue("refcobro", DBvalue("reffactura"));
00176     bud->setDBvalue("comentcobro", DBvalue("descfactura"));
00177     bud->pintar();
00178     bud->show();
00179     _depura("END FacturaView::on_mui_cobrar_clicked", 0);
00180 }
00181 
00182 
00189 void FacturaView::on_mui_agregaralbaran_clicked() {
00190     _depura("FacturaView::on_mui_agregaralbaran_clicked", 0);
00191     QDialog *diag = new QDialog(0);
00192     diag->setModal(true);
00193     AlbaranClienteList *fac = new AlbaranClienteList(empresaBase(), diag, 0, AlbaranClienteList::SelectMode);
00194     connect(fac, SIGNAL(selected(QString)), diag, SLOT(accept()));
00195 
00197     fac->m_cliente->setidcliente(DBvalue("idcliente"));
00198     fac->on_mui_actualizar_clicked();
00199 
00201     diag->exec();
00202     QString idalbaran = fac->idCliDelivNote();
00203     delete diag;
00204 
00206     if (idalbaran == "")
00207         return;
00208 
00210     AlbaranClienteView *bud = new AlbaranClienteView(empresaBase(), NULL);
00211     bud->cargar(idalbaran);
00212 
00214     QString comm = DBvalue("comentfactura") + "(" + tr("ALBARAN: Num ") + bud->DBvalue("numalbaran") + tr("Ref:") + " " + bud->DBvalue("refalbaran") + tr("Fecha:") + " " + bud->DBvalue("fechaalbaran") + ")\n";
00215 
00216     setDBvalue("comentfactura", comm);
00217     pintar();
00218 
00220     SDBRecord *linea, *linea1;
00221     for (int i = 0; i < bud->getlistalineas()->rowCount(); ++i) {
00222         linea = bud->getlistalineas()->lineaat(i);
00224         if (linea->DBvalue("idarticulo") != "") {
00225             linea1 = getlistalineas()->lineaat(getlistalineas()->rowCount() - 1);
00226             linea1->setDBvalue("desclfactura", linea->DBvalue("desclalbaran"));
00227             linea1->setDBvalue("cantlfactura", linea->DBvalue("cantlalbaran"));
00228             linea1->setDBvalue("pvplfactura", linea->DBvalue("pvplalbaran"));
00229             linea1->setDBvalue("descuentolfactura", linea->DBvalue("descuentolalbaran"));
00230             linea1->setDBvalue("idarticulo", linea->DBvalue("idarticulo"));
00231             linea1->setDBvalue("codigocompletoarticulo", linea->DBvalue("codigocompletoarticulo"));
00232             linea1->setDBvalue("nomarticulo", linea->DBvalue("nomarticulo"));
00233             linea1->setDBvalue("ivalfactura", linea->DBvalue("ivalalbaran"));
00234             getlistalineas()->nuevoRegistro();
00235         } // end if
00236     } // end for
00237 
00239     bud->mui_procesadoalbaran->setChecked(TRUE);
00240     bud->guardar();
00241     delete bud;
00242 
00244     calculaypintatotales();
00245     _depura("END FacturaView::on_mui_agregaralbaran_clicked", 0);
00246 }
00247 
00248 
00254 void FacturaView::on_mui_veralbaranes_clicked() {
00255     _depura("FacturaView::on_mui_veralbaranes_clicked", 0);
00256     QString SQLQuery = "SELECT * FROM albaran WHERE refalbaran = '" + DBvalue("reffactura") + "'";
00257     cursor2 *cur = empresaBase()->cargacursor(SQLQuery);
00258     if (!cur->eof()) {
00259         while (!cur->eof()) {
00260             AlbaranClienteView *bud = new AlbaranClienteView(empresaBase(), NULL);
00261             empresaBase()->m_pWorkspace->addWindow(bud);
00262             bud->cargar(cur->valor("idalbaran"));
00263             bud->show();
00264             cur->siguienteregistro();
00265         } // end while
00266     } else {
00267         _depura("no hay albaranes con esta referencia", 2);
00268     } // end if
00269     delete cur;
00270     _depura("END FacturaView::on_mui_veralbaranes_clicked", 0);
00271 }
00272 
00273 
00275 
00278 void FacturaView::on_mui_idcliente_valueChanged(QString id) {
00279     _depura("FacturaView::on_m_cliente_valueChanged", 0);
00280     subform2->setIdCliente(id);
00281     mui_idforma_pago->setIdCliente(id);
00282     _depura("END FacturaView::on_m_cliente_valueChanged", 0);
00283 }
00284 
00285 
00287 
00289 void FacturaView::on_m_descuentos_editFinish(int, int) {
00290     _depura("FacturaView::on_m_descuentos_editFinish", 0);
00291     calculaypintatotales();
00292     _depura("END FacturaView::on_m_descuentos_editFinish", 0);
00293 }
00294 
00295 
00297 
00299 void FacturaView::on_subform2_editFinish(int, int) {
00300     _depura("FacturaView::on_subform2_editFinish", 0);
00301     calculaypintatotales();
00302     _depura("END FacturaView::on_subform2_editFinish", 0);
00303 }
00304 
00305 
00311 int FacturaView::borrarPre()
00312 {
00313     _depura ( "FacturaView::borrarPre", 0 );
00314     int error = m_listalineas->borrar();
00315     error = m_listadescuentos->borrar();
00316     _depura ( "END FacturaView::borrarPre", 0 );
00317     return 0;
00318 }
00319 
00320 
00327 int FacturaView::cargarPost ( QString idbudget )
00328 {
00329     _depura ( "FacturaView::cargarPost", 0 );
00330 
00331     m_listalineas->cargar ( idbudget );
00332     m_listadescuentos->cargar ( idbudget );
00333 
00335     g_plugins->lanza ( "FacturaView_cargarPost_Post", this );
00336 
00337     calculaypintatotales();
00338 
00339     _depura ( "END FacturaView::cargarPost", 0 );
00340     return 0;
00341 }
00342 
00343 
00349 int FacturaView::guardarPost()
00350 {
00351     _depura ( "FacturaView::guardarPost", 0 );
00352     m_listadescuentos->setColumnValue ( "idfactura", DBvalue ( "idfactura" ) );
00353     m_listalineas->setColumnValue ( "idfactura", DBvalue ( "idfactura" ) );
00354     m_listalineas->guardar();
00355     m_listadescuentos->guardar();
00356     _depura ( "END FacturaView::guardarPost", 0 );
00357     return 0;
00358 }
00359 
00360 
00361 

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