00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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 }
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 }
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 }
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 }
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 }
00293 } else {
00294
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 }
00318 }
00319 fac->calculaypintatotales();
00320 fac->pintar();
00321 }
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 }
00329 delete cur1;
00330 periodo++;
00331 }
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