00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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 }
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 }
00236 }
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 }
00266 } else {
00267 _depura("no hay albaranes con esta referencia", 2);
00268 }
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