00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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 }
00115 }
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