q19qtoolbutton.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2006 by Arturo Martin Llado                             *
00003  *   amartin@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 <QWidget>
00022 #include "q19qtoolbutton.h"
00023 #include "funcaux.h"
00024 
00026 #include <QtXml/QDomDocument>
00027 #include <QtXml/QDomNodeList>
00028 #include <QtXml/QDomNode>
00029 #include <QString>
00030 #include <QFileDialog>
00031 #include <QMap>
00032 #include <QList>
00033 #include "facturapview.h"
00034 #include "fixed.h"
00035 #include "cobroslist.h"
00036 #include "cobroview.h"
00037 #include "company.h"
00038 #include "dbrecord.h"
00039 
00040 
00042 
00046 Q19QToolButton::Q19QToolButton( CobrosList *cob , QWidget *parent) : QToolButton(parent) {
00047     _depura("Q19QToolButton::Q19QToolButton", 0);
00048     m_cobrosList = cob;
00049     setBoton();
00050     _depura("END Q19QToolButton::Q19QToolButton", 0);
00051 }
00052 
00053 
00055 
00057 Q19QToolButton::~Q19QToolButton() {
00058     _depura("Q19QToolButton::~Q19QToolButton", 0);
00059     _depura("Q19QToolButton::~Q19QToolButton", 0);
00060 }
00061 
00062 
00064 
00066 void Q19QToolButton::setBoton() {
00067     _depura("Q19QToolButton::setBoton", 0);
00068     connect(this, SIGNAL(clicked()), this, SLOT(click()));
00069     setObjectName(QString::fromUtf8("exporta"));
00070     setStatusTip("Generar Q19");
00071     setToolTip("Generar archivo Q19 de los elementos seleccionados");
00072     setMinimumSize(QSize(32, 32));
00073     setIcon(QIcon(QString::fromUtf8("/usr/share/bulmages/icons/q19.png")));
00074     setIconSize(QSize(22, 22));
00075     _depura("END Q19QToolButton::setBoton", 0);
00076 }
00077 
00078 
00080 
00083 void Q19QToolButton::click() {
00084     _depura("Q19QToolButton::click", 0);
00085 
00086     QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
00087                        "",
00088                        tr("*.q19"));
00089     QFile file(fileName);
00090     if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
00091         return;
00092 
00093     QTextStream out(&file);
00094 
00095     m_companyact = (Company *)m_cobrosList->empresaBase();
00096     SubForm3 *sub = m_cobrosList->mui_list;
00097 
00098     Fixed total("0.00");
00099     int j= 0;
00101     for (int i = 0; i < sub->rowCount(); i++) {
00102         SDBRecord *rec = sub->lineaat(i);
00103         rec->refresh();
00104         QString val = rec->DBvalue("selector");
00105         if (val == "TRUE") {
00107             if (j == 0) {
00108                 cabeceraPresentador(out, rec->DBvalue("idcobro"));
00109                 cabeceraOrdenante(out, rec->DBvalue("idcobro"));
00110             }
00111             cobroQ19(out, rec->DBvalue("idcobro"));
00112             j++;
00113             total = total + Fixed(rec->DBvalue("cantcobro"));
00114         } // end if
00115     } // end for
00116     totalOrdenante(out, total.toQString().remove(',').remove('.'), QString::number(j), QString::number(j+2));
00117     totalGeneral(out, total.toQString().remove(',').remove('.'), QString::number(j), QString::number(j+4));
00118     file.close();
00119 
00120     _depura("END Q19QToolButton::click", 0);
00121 }
00122 
00123 
00125 
00130 QByteArray Q19QToolButton::cabeceraPresentador(QTextStream &out, QString idcobro) {
00131     _depura("Q19QToolButton::cabeceraPresentador", 0);
00132     cursor2 *curcobro = m_companyact->cargacursor("SELECT * FROM cobro NATURAL LEFT JOIN banco WHERE idcobro = "+idcobro);
00133 
00136     QString cab_present = "";
00138     cab_present.append("51");
00140     cab_present.append("80");
00141 
00143     cursor2 *cur = m_cobrosList->empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre='CIF'");
00144     QString nif = cur->valor("valor");
00145     delete cur;
00146     QString sufijo = "000";
00147     QString codpresent = nif+sufijo;
00148     codpresent = codpresent.rightJustified(12, '0');
00149     if (codpresent.size() > 12)  _depura("El CIF del ordenante supera la longitud maxima", 2);
00150     cab_present.append(codpresent.toAscii());
00151 
00153     QString fechaemfich = QDate::currentDate().toString("ddMMyy");
00154     cab_present.append(fechaemfich.toAscii());
00155 
00157     cab_present.append(QString(6, ' ').toAscii());
00158 
00160     cur = m_cobrosList->empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre='NombreEmpresa'");
00161     QString clientepresentador = cur->valor("valor");
00162     delete cur;
00163     clientepresentador = clientepresentador.leftJustified(40, ' ');
00164     clientepresentador = clientepresentador.left(40);
00165     cab_present.append(clientepresentador.toAscii());
00166 
00168     cab_present.append(QString(20, ' ').toAscii());
00169 
00171     QString ent_recept = curcobro->valor("codentidadbanco").leftJustified(4, '0');
00172     if (ent_recept.size() > 4) _depura("Entidad bancaria supera longitud maxima", 2);
00173     cab_present.append(ent_recept.toAscii());
00174 
00176     QString ofi_recept = curcobro->valor("codagenciabanco").leftJustified(4, '0');
00177     if (ofi_recept.size() > 4) _depura("Oficina bancaria supera longitud maxima", 2);
00178     cab_present.append(ofi_recept.toAscii());
00179 
00181     cab_present.append(QString(12, ' ').toAscii());
00182 
00184     cab_present.append(QString(40, ' ').toAscii());
00185 
00187     cab_present.append(QString(14, ' ').toAscii());
00188     out << cab_present.toAscii()  << "\n";
00189     delete curcobro;
00190     _depura("END Q19QToolButton::cabeceraPresentador", 0);
00191     return cab_present.toAscii();
00192 }
00193 
00194 
00196 
00201 QByteArray Q19QToolButton::cabeceraOrdenante(QTextStream &out, QString idcobro) {
00202     _depura("Q19QToolButton::cabeceraOrdenante", 0);
00203     cursor2 *curcobro = m_companyact->cargacursor("SELECT * FROM cobro NATURAL LEFT JOIN banco WHERE idcobro = "+idcobro);
00204 
00207     QString cab_orden = "";
00209     cab_orden.append("53");
00211     cab_orden.append("80");
00212 
00214     cursor2 *cur = m_cobrosList->empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre='CIF'");
00215     QString nif = cur->valor("valor");
00216     delete cur;
00217     QString sufijo = "000";
00218     QString codpresent = nif+sufijo;
00219     codpresent = codpresent.rightJustified(12, '0');
00220     if (codpresent.size() > 12) _depura("CIF demasiado largo", 2);
00221     cab_orden.append(codpresent.toAscii());
00222 
00224     QString fechaemfich = QDate::currentDate().toString("ddMMyy");
00225     cab_orden.append(fechaemfich.toAscii());
00226 
00228     QString fechacargo = normalizafecha(curcobro->valor("fechacobro")).toString("ddMMyy");
00229     cab_orden.append(fechacargo.toAscii());
00230 
00232     cur = m_cobrosList->empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre='NombreEmpresa'");
00233     QString clientepresentador = cur->valor("valor");
00234     delete cur;
00235     clientepresentador = clientepresentador.leftJustified(40, ' ');
00236     if (clientepresentador.size() > 40) _depura("Nombre de empresa demasiado largo", 2);
00237     cab_orden.append(clientepresentador.toAscii());
00238 
00240     QString ent_recept = curcobro->valor("codentidadbanco").leftJustified(4, '0');
00241     if (ent_recept.size() > 4) _depura("Entidad bancaria demasiado larga", 2);
00242     cab_orden.append(ent_recept.toAscii());
00243 
00245     QString ofi_recept = curcobro->valor("codagenciabanco").leftJustified(4, '0');
00246     if (ofi_recept.size() > 4) _depura("Oficina bancaria demasiado larga", 2);
00247     cab_orden.append(ofi_recept.toAscii());
00248 
00250     QString dc_recept = curcobro->valor("dcbanco").leftJustified(2, '0');
00251     if (dc_recept.size() > 4) _depura("Control bancario demasiado larga", 2);
00252     cab_orden.append(dc_recept.toAscii());
00253 
00255     QString cta_recept = curcobro->valor("numcuentabanco").leftJustified(10, '0');
00256     if (cta_recept.size() > 10) _depura("Cuenta bancaria demasiado larga", 2);
00257     cab_orden.append(cta_recept.toAscii());
00258 
00260     cab_orden.append(QString(8, ' '));
00261 
00263     cab_orden.append(QString("01").toAscii());
00264 
00266     cab_orden.append(QString(10, ' '));
00267 
00269     cab_orden.append(QString(40, ' '));
00270 
00272     cab_orden.append(QString(14, ' '));
00273     out << cab_orden.toAscii()  << "\n";
00274     delete curcobro;
00275     _depura("END Q19QToolButton::cabeceraOrdenante", 0);
00276     return cab_orden.toAscii();
00277 }
00278 
00279 
00281 
00286 QByteArray Q19QToolButton::cobroQ19(QTextStream &out, QString idcobro) {
00287     _depura("Q19QToolButton::cobroQ19", 0);
00288     cursor2 *curcobro = m_companyact->cargacursor("SELECT * FROM cobro NATURAL LEFT JOIN banco WHERE idcobro = "+idcobro);
00289 
00291     QString cab_indob="";
00293     cab_indob.append("56");
00295     cab_indob.append("80");
00298     cursor2 *cur = m_cobrosList->empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre='CIF'");
00299     QString nif = cur->valor("valor");
00300     delete cur;
00301     QString sufijo = "000";
00302     QString codpresent = nif+sufijo;
00303     codpresent = codpresent.rightJustified(12, '0');
00304     if (codpresent.size() > 12) _depura("CIF CLiente demasiado largo", 2);
00305     cab_indob.append(codpresent.toAscii());
00306 
00308     QString cod_ref = curcobro->valor("idcliente");
00309     cod_ref = cod_ref.rightJustified(12, '0');
00310     cab_indob.append(cod_ref.toAscii());
00311 
00312 
00314     cur = m_companyact->cargacursor("SELECT * FROM cliente WHERE idcliente= " + curcobro->valor("idcliente"));
00315     QString clientedomiciliacion = cur->valor("nomcliente");
00316 
00317     clientedomiciliacion = clientedomiciliacion.leftJustified(40, ' ');
00318     if(clientedomiciliacion.size() > 40) _depura("Nombre cliente demasiado largo", 2);
00319     cab_indob.append(clientedomiciliacion.toAscii());
00320 
00321 
00323     QString bancocliente = cur->valor("bancocliente").remove(QChar(' '));
00324     if (bancocliente.size() != 20)
00325         _depura("Banco de Cliente invalido en el cobro", 2);
00326     bancocliente = bancocliente.leftJustified(20,' ');
00327     QString ent_recept = bancocliente.left(4);
00328     cab_indob.append(ent_recept.toAscii());
00329 
00331     bancocliente = bancocliente.left(16);
00332     QString ofi_recept = bancocliente.left(4);
00333     cab_indob.append(ofi_recept.toAscii());
00334 
00336     bancocliente = bancocliente.left(12);
00337     QString dc_recept = bancocliente.left(2);
00338     cab_indob.append(dc_recept.toAscii());
00339 
00341     bancocliente = bancocliente.left(10);
00342     QString cta_recept = bancocliente.left(10);
00343     cab_indob.append(cta_recept.toAscii());
00344 
00345     delete cur;
00346 
00348     QString importe = curcobro->valor("cantcobro").remove('.').remove(',');
00349     importe = importe.rightJustified(10, '0');
00350     cab_indob.append(importe.toAscii());
00351 
00353     QString coddev = curcobro->valor("idcobro");
00354     coddev = coddev.rightJustified(6, '0');
00355     cab_indob.append(coddev.toAscii());
00356 
00358     QString codrefint = curcobro->valor("idcobro");
00359     codrefint = codrefint.rightJustified(10, ' ');
00360     cab_indob.append(codrefint.toAscii());
00361 
00363     QString concepto = curcobro->valor("comentcobro");
00364     concepto = concepto.leftJustified(40, ' ');
00365     concepto = concepto.left(40);
00366     cab_indob.append(concepto.toAscii());
00367 
00369     cab_indob.append(QString(8, ' ').toAscii());
00370     out << cab_indob.toAscii() << "\n";
00371     delete curcobro;
00372     _depura("END Q19QToolButton::cobroQ19", 0);
00373     return cab_indob.toAscii();
00374 }
00375 
00376 
00378 
00385 QByteArray Q19QToolButton::totalOrdenante(QTextStream &out, QString importes, QString ordenantes, QString registros) {
00386     _depura("Q19QToolButton::totalOrdenante", 0);
00388     QString cab_indob="";
00390     cab_indob.append("58");
00391 
00393     cab_indob.append("80");
00394 
00397     cursor2 *cur = m_cobrosList->empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre='CIF'");
00398     QString nif = cur->valor("valor");
00399     delete cur;
00400     QString sufijo = "000";
00401     QString codpresent = nif+sufijo;
00402     codpresent = codpresent.rightJustified(12, '0');
00403     if (codpresent.size() > 12) _depura("CIF demasiado largo", 2);
00404     cab_indob.append(codpresent.toAscii());
00405 
00406 
00408     cab_indob.append(QString(12, ' ').toAscii());
00409 
00410 
00412     cab_indob.append(QString(40, ' ').toAscii());
00413 
00415     cab_indob.append(QString(20, ' ').toAscii());
00416 
00418     QString importe = importes;
00419     importe = importe.rightJustified(10, '0');
00420     importe = importe.right(10);
00421     cab_indob.append(importe.toAscii());
00422 
00424     cab_indob.append(QString(6, ' ').toAscii());
00425 
00427     QString coddev = ordenantes;
00428     coddev = coddev.rightJustified(10, '0');
00429     coddev = coddev.right(10);
00430     cab_indob.append(coddev.toAscii());
00431 
00433     coddev = registros;
00434     coddev = coddev.rightJustified(10, '0');
00435    coddev = coddev.right(10);
00436     cab_indob.append(coddev.toAscii());
00437 
00439     cab_indob.append(QString(20, ' ').toAscii());
00440 
00442     cab_indob.append(QString(18, ' ').toAscii());
00443 
00444 
00446     out << cab_indob.toAscii() << "\n";
00447     _depura("END Q19QToolButton::totalOrdenante", 0);
00448     return cab_indob.toAscii();
00449 }
00450 
00451 
00453 
00460 QByteArray Q19QToolButton::totalGeneral(QTextStream &out, QString importes, QString domiciliaciones, QString registros) {
00461     _depura("Q19QToolButton::totalGeneral", 0);
00463     QString cab_indob="";
00465     cab_indob.append("59");
00467     cab_indob.append("80");
00470     cursor2 *cur = m_cobrosList->empresaBase()->cargacursor("SELECT * FROM configuracion WHERE nombre='CIF'");
00471     QString nif = cur->valor("valor");
00472     delete cur;
00473     QString sufijo = "000";
00474     QString codpresent = nif+sufijo;
00475     codpresent = codpresent.rightJustified(12, '0');
00476     codpresent = codpresent.right(12);
00477     cab_indob.append(codpresent.toAscii());
00478 
00479 
00481     cab_indob.append(QString(12, ' ').toAscii());
00482 
00483 
00485     cab_indob.append(QString(40, ' ').toAscii());
00486 
00489     QString coddev = "1";
00490     coddev = coddev.rightJustified(4, '0');
00491     cab_indob.append(coddev.toAscii());
00492 
00494     cab_indob.append(QString(16, ' ').toAscii());
00495 
00497     QString importe = importes;
00498     importe = importe.rightJustified(10, '0');
00499     cab_indob.append(importe.toAscii());
00500 
00502     cab_indob.append(QString(6, ' ').toAscii());
00503 
00505     coddev = domiciliaciones;
00506     coddev = coddev.rightJustified(10, '0');
00507     cab_indob.append(coddev.toAscii());
00508 
00510     coddev = registros;
00511     coddev = coddev.rightJustified(10, '0');
00512     cab_indob.append(coddev.toAscii());
00513 
00515     cab_indob.append(QString(20, ' ').toAscii());
00516 
00518     cab_indob.append(QString(18, ' ').toAscii());
00519 
00520 
00522     out << cab_indob.toAscii() << "\n";
00523     _depura("END Q19QToolButton::totalGeneral", 0);
00524     return cab_indob.toAscii();
00525 }
00526 
00527 

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