duplicarasientoview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2003 by Tomeu Borras Riera                              *
00003  *   tborras@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 "duplicarasientoview.h"
00022 #include "empresa.h"
00023 #include "funcaux.h"
00024 
00025 #define NUMDIGITOS   empresaBase()->numdigitosempresa()
00026 
00027 
00029 
00034 DuplicarAsientoView::DuplicarAsientoView(Empresa *emp, QWidget *parent, Qt::WFlags flag)
00035         : QDialog(parent, flag), PEmpresaBase(emp) {
00036     _depura("DuplicarAsientoView::DuplicarAsientoView", 0);
00037     setupUi(this);
00038     fdinicial->setText(QDate::currentDate().toString("dd/MM/yyyy"));
00039     _depura("END DuplicarAsientoView::DuplicarAsientoView", 0);
00040 }
00041 
00042 
00044 
00046 DuplicarAsientoView::~DuplicarAsientoView() {
00047     _depura("DuplicarAsientoView::~DuplicarAsientoView", 0);
00048     _depura("END DuplicarAsientoView::~DuplicarAsientoView", 0);
00049 }
00050 
00051 
00053 
00057 void DuplicarAsientoView::inicializa(QString ainicial, QString afinal) {
00058     _depura("DuplicarAsientoView::inicializa", 0);
00059     aoinicial->setText(ainicial);
00060     aofinal->setText(afinal);
00061     QString query = "SELECT * FROM asiento WHERE ordenasiento = " + ainicial;
00062     empresaBase()->begin();
00063     cursor2 *cur = empresaBase()->cargacursor(query, "hola");
00064     empresaBase()->commit();
00065     if (!cur->eof()) {
00066         foinicial->setText(cur->valor("fecha").left(10));
00067     } // end if
00068     delete cur;
00069     aoinicial->selectAll();
00070     aoinicial->setFocus();
00071     _depura("END DuplicarAsientoView::inicializa", 0);
00072 }
00073 
00075 
00077 void DuplicarAsientoView::lostFocus() {
00078     _depura("DuplicarAsientoView::lostFocus", 0);
00079     QString ainicial = aoinicial->text();
00080     QString query = "SELECT * FROM asiento WHERE ordenasiento = " + ainicial;
00081     empresaBase()->begin();
00082     cursor2 *cur = empresaBase()->cargacursor(query, "hola");
00083     empresaBase()->commit();
00084     if (!cur->eof()) {
00085         foinicial->setText(cur->valor("fecha").left(10));
00086     } // end if
00087     delete cur;
00088     _depura("END DuplicarAsientoView::lostFocus", 0);
00089 }
00090 
00091 
00093 
00095 void DuplicarAsientoView::on_mui_aceptar_clicked() {
00096     _depura("DuplicarAsientoView::on_mui_aceptar_clicked", 0);
00097     QString asientoi = aoinicial->text();
00098     QString asientof = aofinal->text();
00099     QString query1, query2;
00100     QString textidasiento;
00101     //int ordeninicial = 0;
00102     //int idasientoinicial = 0;
00103 
00104     QString idasiento;
00105     QString ordenasiento;
00106 
00107     QString textordeninicial;
00108     QDate fedinicial = normalizafecha(fdinicial->text());
00109 
00110 /*
00112     QString query = "SELECT max(ordenasiento) AS orden FROM asiento ";
00113     empresaBase()->begin();
00114     cursor2 *cur = empresaBase()->cargacursor(query);
00115     if (!cur->eof()) {
00116         ordeninicial = atoi(cur->valor("orden").toAscii()) + 1;
00117     } // end if
00118     delete cur;
00119 
00120     query1 = "SELECT max(idasiento) AS maxim FROM asiento";
00121     cursor2 *cursaux = empresaBase()->cargacursor(query1);
00122     if (!cursaux->eof()) {
00123         idasiento = atoi(cursaux->valor("maxim").toAscii());
00124         idasientoinicial = atoi(cursaux->valor("maxim").toAscii()) + 1;
00125     } // end if
00126     delete cursaux;
00127 */
00128 
00129     query1 = "SELECT * FROM asiento WHERE ordenasiento >= " + asientoi + " AND ordenasiento <= " + asientof +" AND EXTRACT (YEAR FROM fecha) = EXTRACT (YEAR FROM '" + fedinicial.toString("dd/MM/yyyy") + "'::date)";
00130     cursor2 *curasiento = empresaBase()->cargacursor(query1);
00131     while (!curasiento->eof()) {
00132 
00133         query1 = "INSERT INTO asiento (descripcion, fecha, comentariosasiento) VALUES('" + curasiento->valor("descripcion") + "','" + fedinicial.toString("dd/MM/yyyy") + "','" + curasiento->valor("comentariosasiento") + "')";
00134         empresaBase()->ejecuta(query1);
00135 
00136 
00137     query1 = "SELECT * FROM asiento  ORDER BY idasiento DESC LIMIT 1";
00138     cursor2 *cursaux = empresaBase()->cargacursor(query1);
00139     if (!cursaux->eof()) {
00140         idasiento = cursaux->valor("idasiento");
00141         ordenasiento = cursaux->valor("ordenasiento");
00142     } // end if
00143     delete cursaux;
00144 
00145 
00146 
00147         query2 = "SELECT * FROM borrador WHERE idasiento = " + curasiento->valor("idasiento");
00148         cursor2 *curborrador = empresaBase()->cargacursor(query2);
00149 
00150         while (!curborrador->eof()) {
00151             QString textiddiario = curborrador->valor("iddiario");
00152             if (textiddiario == "") {
00153                 textiddiario = "NULL";
00154             } // end if
00155             QString textfecha = curborrador->valor("fecha");
00156             textfecha = fedinicial.toString("dd/MM/yyyy");
00157             QString textconceptocontable = curborrador->valor("conceptocontable");
00158             QString textidcuenta = curborrador->valor("idcuenta");
00159             if (textidcuenta == "") {
00160                 textidcuenta = "NULL";
00161             } // end if
00162             QString textdescripcion = curborrador->valor("descripcion");
00163             QString textdebe = curborrador->valor("debe");
00164             QString texthaber = curborrador->valor("haber");
00165             QString textcontrapartida = curborrador->valor("contrapartida");
00166             if (textcontrapartida == "") {
00167                 textcontrapartida = "NULL";
00168             } // end if
00169             QString textorden = curborrador->valor("orden");
00170             if (textorden == "") {
00171                 textorden = "0";
00172             } // end if
00173             query2 = "INSERT INTO borrador (orden, idasiento, iddiario, fecha, conceptocontable, idcuenta, descripcion, debe, haber, contrapartida) VALUES (" + textorden + ","+idasiento + "," + textiddiario + ",'" + textfecha + "','" + textconceptocontable + "'," + textidcuenta + ",'" + textdescripcion + "'," + textdebe + "," + texthaber + "," + textcontrapartida + ")";
00174             empresaBase()->ejecuta(query2);
00175             curborrador->siguienteregistro();
00176         } // end while
00177         delete curborrador;
00178     query2 = "SELECT cierraasiento("+idasiento+")";
00179     cursor2 *cur = empresaBase()->cargacursor(query2);
00180     delete cur;
00181         curasiento->siguienteregistro();
00182     } // end while
00183     delete curasiento;
00184     empresaBase()->commit();
00185     done(1);
00186     _depura("END DuplicarAsientoView::on_mui_aceptar_clicked", 0);
00187 }
00188 

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