diarioprintview.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2003 by Tomeu Borras Riera                              *
00003  *   tborras@conetxia.com                                                  *
00004  *   Copyright (C) 2003 by Antoni Mirabete i Teres                         *
00005  *   amirabet@biada.org                                                    *
00006  *                                                                         *
00007  *   This program is free software; you can redistribute it and/or modify  *
00008  *   it under the terms of the GNU General Public License as published by  *
00009  *   the Free Software Foundation; either version 2 of the License, or     *
00010  *   (at your option) any later version.                                   *
00011  *                                                                         *
00012  *   This program is distributed in the hope that it will be useful,       *
00013  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00014  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00015  *   GNU General Public License for more details.                          *
00016  *                                                                         *
00017  *   You should have received a copy of the GNU General Public License     *
00018  *   along with this program; if not, write to the                         *
00019  *   Free Software Foundation, Inc.,                                       *
00020  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00021  ***************************************************************************/
00022 
00023 #include <unistd.h>
00024 #include <QCheckBox>
00025 #include <QTextStream>
00026 
00027 #include "diarioprintview.h"
00028 #include "empresa.h"
00029 #include "selectccosteview.h"
00030 #include "selectcanalview.h"
00031 #include "diarioview.h"
00032 
00033 using namespace std;
00034 
00035 
00037 
00041 DiarioPrintView::DiarioPrintView(Empresa  *emp, QWidget *parent)
00042         : QDialog(parent), PEmpresaBase(emp) {
00043     _depura("DiarioPrintView::DiarioPrintView", 0);
00044     setupUi(this);
00045     numdigitos = ((Empresa *)empresaBase())->numdigitosempresa();
00046     _depura("END DiarioPrintView::DiarioPrintView", 0);
00047 }
00048 
00049 
00051 
00053 DiarioPrintView::~DiarioPrintView() {
00054     _depura("DiarioPrintView::~DiarioPrintView", 0);
00055     _depura("END DiarioPrintView::~DiarioPrintView", 0);
00056 }
00057 
00058 
00062 
00065 QString DiarioPrintView::montaQuery() {
00066     _depura("DiarioPrintView::montaQuery", 0);
00067     DiarioView *diario = ((Empresa *)empresaBase())->diarioempresa();
00068     QString query;
00069     QString fecha;
00070     QString fechaasiento;
00071     QString descripcion;
00072     QString concepto;
00073     QString codigocuenta;
00074     QString nomcuenta;
00075     QString cadaux;
00076     QString finicial = diario->mui_fechainicial->text();
00077     QString ffinal = diario->mui_fechafinal->text();
00078     QString cad;
00079 
00081     selectcanalview *scanal = ((Empresa *)empresaBase())->getselcanales();
00082     SelectCCosteView *scoste = ((Empresa *)empresaBase())->getselccostes();
00083     QString ccostes = scoste->cadcoste();
00084     if (ccostes != "") {
00085         ccostes.sprintf(" AND idc_coste IN (%s) ", ccostes.toAscii().constData());
00086     } // end if
00087     QString ccanales = scanal->cadcanal();
00088     if (ccanales != "") {
00089         ccanales.sprintf(" AND idcanal IN (%s) ", ccanales.toAscii().constData());
00090     } // end if
00091     QString tabla;
00092     if (diario->mui_asAbiertos->isChecked()) {
00093         tabla = "borrador";
00094     } else {
00095         tabla = "apunte";
00096     } // end if
00097     query = "SELECT asiento.ordenasiento, " + tabla + ".contrapartida, " + tabla + ".fecha, asiento.fecha AS fechaasiento,cuenta.tipocuenta, cuenta.descripcion, "+tabla+".conceptocontable,"+tabla+".descripcion AS descapunte, to_char("+tabla+".debe,'MI999G999G990D99') AS debe, to_char("+tabla+".haber,'MI999G999G990D99') AS haber, cuenta.idcuenta, asiento.idasiento, "+tabla+".idc_coste, "+tabla+".idcanal, cuenta.codigo AS codigocuenta FROM asiento, "+tabla+", cuenta WHERE asiento.idasiento="+tabla+".idasiento AND "+tabla+".idcuenta = cuenta.idcuenta AND "+tabla+".fecha >= '"+finicial+"' AND "+tabla+".fecha <= '" + ffinal + "' " + ccostes + " " + ccanales + " ORDER BY asiento.ordenasiento, " + tabla + ".orden";
00098     _depura("END DiarioPrintView::montaQuery", 0);
00099     return query;
00100 }
00101 
00102 
00104 
00107 void DiarioPrintView::accept() {
00108     _depura("DiarioPrintView::accept", 0);
00110     if (radiotexto->isChecked()) {
00111         if (radionormal->isChecked()) {
00112             presentar("txt");
00113         } else if (radioaprendizaje->isChecked()) {
00114             presentar("txtapren");
00115         } // end if
00116     } else if (radiohtml->isChecked()) {
00117         if (radionormal->isChecked()) {
00118             presentar("html");
00119         } else if (radioaprendizaje->isChecked()) {
00120             presentar("htmlapren");
00121         } // end if
00122     } // end if
00123     _depura("END DiarioPrintView::accept", 0);
00124 }
00125 
00126 
00128 
00131 void DiarioPrintView::presentar(char *tipus) {
00132     _depura("DiarioPrintView::presentar", 0);
00133     DiarioView *diario = ((Empresa *)empresaBase())->diarioempresa();
00134     int txt, html, txtapren, htmlapren;
00135     float debe, haber;
00136     int idcuenta;
00137     int idasiento;
00138     char data[15];
00139     string fecha;
00140     string fechaasiento;
00141     string descripcion;
00142     string concepto;
00143     string codigocuenta;
00144     string cad;
00145     cursor2 *cursoraux;
00146 
00148     txt =! strcmp(tipus, "txt");
00149     html =! strcmp(tipus, "html");
00150     txtapren =! strcmp(tipus, "txtapren");
00151     htmlapren =! strcmp(tipus, "htmlapren");
00152 
00154     QString finicial = diario->mui_fechainicial->text();
00155     QString ffinal = diario->mui_fechafinal->text();
00156 
00157     if (txt | html) {
00159         ofstream fitxersortidatxt("diario.txt");
00160         ofstream fitxersortidahtml("diario.html");
00161 
00162         if (!fitxersortidatxt) {
00164             txt = 0;
00165         } // end if
00166         if (!fitxersortidahtml) {
00167             html = 0;
00168         } // end if
00169 
00170         if (txt | html) {
00172             if (txt) {
00174                 fitxersortidatxt.setf(ios::fixed);
00175                 fitxersortidatxt.precision(2);
00176                 fitxersortidatxt << "                                        LLIBRE DIARI \n" ;
00177                 fitxersortidatxt << "Data Inicial: " << finicial.toAscii().constData() << "   Data Final: " << ffinal.toAscii().constData() << endl;
00178                 fitxersortidatxt << "ASIENTO   FECHA    SUBCUENTA   DESCRIPCION                                   DEBE     HABER \n" ;
00179                 fitxersortidatxt << "_______________________________________________________________________________________________\n";
00180             } // end if
00181             if (html) {
00183                 fitxersortidahtml.setf(ios::fixed);
00184                 fitxersortidahtml.precision(2);
00185                 fitxersortidahtml << "<html>\n";
00186                 fitxersortidahtml << "<head>\n";
00187                 fitxersortidahtml << "  <!DOCTYPE / public \"-//w3c//dtd xhtml 1.0 transitional//en\"\n";
00188                 fitxersortidahtml << "    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
00189                 fitxersortidahtml << "  <LINK REL=StyleSheet HREF=\"" << confpr->valor(CONF_PLANTILLA).toAscii().constData() <<"\" TYPE=\"text/css\" MEDIA=screen>\n";
00190                 fitxersortidahtml << "  <title> Llibre Diari </title>\n";
00191                 fitxersortidahtml << "</head>\n";
00192                 fitxersortidahtml << "<body>\n";
00193                 fitxersortidahtml << "<table><tr><td colspan=\"6\" class=titoldiari> Llibre diari <hr></td></tr>\n\n";
00194                 fitxersortidahtml << "<tr><td colspan=\"6\" class=periodediari> Data Inicial: " << finicial.toAscii().constData() << " -  Data Final: " << ffinal.toAscii().constData() << "<hr></td></tr>\n\n";
00195                 fitxersortidahtml << "<tr><td class=titolcolumnadiari>Assentament</td><td class=titolcolumnadiari>Data</td><td class=titolcolumnadiari>Subcompte</td><td class=titolcolumnadiari>Descripció</td><td class=titolcolumnadiari>Deure</td><td class=titolcolumnadiari>Haver</td></tr>\n";
00196             } // end if
00197             QString query = montaQuery();
00198             empresaBase()->begin();
00199             cursoraux = empresaBase()->cargacursor(query, "elquerydb");
00200             empresaBase()->commit();
00201 
00202             for (; !cursoraux->eof(); cursoraux->siguienteregistro()) {
00203                 fechaasiento = cursoraux->valor("fechaasiento").toAscii().constData();
00204                 idasiento = atoi(cursoraux->valor("ordenasiento").toAscii());
00205                 fecha = cursoraux->valor("fecha").toAscii().constData();
00206                 descripcion = cursoraux->valor("descripcion").toAscii().constData();
00207                 concepto = cursoraux->valor("conceptocontable").toAscii().constData();
00208                 debe = atof(cursoraux->valor("debe").toAscii());
00209                 haber = atof(cursoraux->valor("haber").toAscii());
00210                 idcuenta = atoi(cursoraux->valor("idcuenta").toAscii());
00211                 codigocuenta = cursoraux->valor("codigocuenta").toAscii().constData();
00212                 strncpy(data,fecha.c_str(), 10);
00213                 data[10] = '\0';
00214                 if (txt) {
00216                     fitxersortidatxt << setw(5) << idasiento << "  " << setw(10) << data << " " << setw(10) << codigocuenta.c_str() <<  "  " << setw(40) <<  setiosflags(ios::left) << descripcion.c_str() <<  resetiosflags(ios::left)<< " " << setw(10) << debe << " " << setw(10) << haber << endl;
00217                 } // end if
00218                 if (html) {
00220                     fitxersortidahtml << "<tr><td class=assentamentdiari>" << idasiento << "</td><td class=datadiari>" << data << "</td><td class=codicomptediari>" << codigocuenta.c_str() << "</td><td class=descripciodiari>" <<  descripcion.c_str() << "</td><td class=dosdecimals>" << debe << "</td><td class=dosdecimals>" << haber << "</td></tr>\n";
00221                 } // end if
00222             } // end for
00223             delete cursoraux;
00224             if (html) {
00226                 fitxersortidahtml << "</table>\n<hr>\n</body>\n</html>\n";
00227                 fitxersortidahtml.close();
00228             } // end if
00229             if (txt) {
00230                 fitxersortidatxt << "_______________________________________________________________________________________________\n";
00231                 fitxersortidatxt.close();
00232             } // end if
00233         } // end if
00234         if (txt) {
00236             QString cadaux = confpr->valor(CONF_EDITOR) + " diairo.txt";
00237             system(cadaux.toAscii());
00238         }
00239         if (html) {
00241             QString cadaux = confpr->valor(CONF_NAVEGADOR) + " diario.html";
00242             system(cadaux.toAscii());
00243         } // end if
00244     } // end if
00245     if (txtapren | htmlapren ) {
00246         char *argstxt[] = {"diariaprenentatge.txt", "diariaprenentatge.txt", NULL};
00247         char *argshtml[] = {"diariaprenentatge.html", "diariaprenentatge.html", NULL};
00249         ofstream fitxersortidatxt(argstxt[0]);
00250         ofstream fitxersortidahtml(argshtml[0]);
00251 
00252         if (!fitxersortidatxt) {
00254             txtapren = 0;
00255         } // end if
00256         if (!fitxersortidahtml) {
00258             htmlapren = 0;
00259         } // end if
00260         if (txtapren | htmlapren) {
00262             if (txtapren) {
00264                 fitxersortidatxt.setf(ios::fixed)
00265                     ;
00266                 fitxersortidatxt.precision(2);
00267                 fitxersortidatxt << "                                                      LLIBRE DIARI \n" ;
00268                 fitxersortidatxt << "Data Inicial: " << finicial.toAscii().constData() << "   Data Final: " << ffinal.toAscii().constData() << endl;
00269                 fitxersortidatxt << "___________________________________________________________________________________________________________________________________\n";
00270             } // end if
00271             if (htmlapren) {
00273                 fitxersortidahtml.setf(ios::fixed)
00274                     ;
00275                 fitxersortidahtml.precision(2);
00276                 fitxersortidahtml << "<html>\n";
00277                 fitxersortidahtml << "<head>\n";
00278                 fitxersortidahtml << "  <!DOCTYPE / public \"-//w3c//dtd xhtml 1.0 transitional//en\"\n";
00279                 fitxersortidahtml << "    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
00280                 fitxersortidahtml << "  <LINK REL=StyleSheet HREF=\"estils.css\" TYPE=\"text/css\" MEDIA=screen>\n";
00281                 fitxersortidahtml << "  <title> Llibre Diari </title>\n";
00282                 fitxersortidahtml << "</head>\n";
00283                 fitxersortidahtml << "<body>\n";
00284                 fitxersortidahtml << "<table><tr><td colspan=\"7\" class=titoldiariapren> Llibre diari <hr></td></tr>\n\n";
00285                 fitxersortidahtml << "<tr><td colspan=\"7\" class=periodediariapren> Data Inicial: " << finicial.toAscii().constData() << " -  Data Final: " << ffinal.toAscii().constData() << "<hr></td></tr>\n\n";
00286             } // end if
00287             empresaBase()->begin();
00288             cursoraux = empresaBase()->cargaasientosfecha((char *)finicial.toAscii().constData(), (char *)ffinal.toAscii().constData());
00289 
00290             for (; !cursoraux->eof(); cursoraux->siguienteregistro()) {
00291                 int idasiento = atoi(cursoraux->valor("idasiento").toAscii());
00292                 if (txtapren) {
00294                     fitxersortidatxt << "_________________________________________________________   " << idasiento << "   ___________________________________________________________________\n";
00295                 } // end if
00296                 if (htmlapren) {
00298                     fitxersortidahtml << "\n<tr><td colspan=\"7\" class=liniadiariapren>____________________________________________________   " << idasiento << "   _____________________________________________________</td></tr>\n" ;
00299                 } // end if
00300                 char consulta[400];
00301                 char codicompte[20];
00302                 sprintf(consulta,"SELECT cuenta.codigo, cuenta.descripcion AS nomcuenta, apunte.debe AS debe, apunte.haber AS haber FROM apunte, cuenta WHERE apunte.idasiento=%d AND apunte.haber=0 AND cuenta.idcuenta=apunte.idcuenta",idasiento);
00303                 empresaBase()->begin();
00304                 cursor2 *cursasiento = empresaBase()->cargacursor(consulta,"asiento");
00305                 empresaBase()->commit();
00306 
00307                 while (!cursasiento->eof()) {
00308                     if (txtapren) {
00310                         sprintf(codicompte,"( %s )",cursasiento->valor("codigo").toAscii().constData());
00311                         fitxersortidatxt << setw(12) << atof(cursasiento->valor("debe").toAscii()) << "  " << setw(10) << codicompte << "  " << cursasiento->valor("nomcuenta").toAscii().constData() << endl;
00312                     } // end if
00313                     if (htmlapren) {
00315                         fitxersortidahtml << " <tr><td class=deurediariapren> " << atof(cursasiento->valor("debe").toAscii()) << " </td><td class=codidiariapren> ( " << cursasiento->valor("codigo").toAscii().constData() << " ) </td><td class=nomcomptediariapren> " << cursasiento->valor("nomcuenta").toAscii().constData() << " </td><td> </td><td> </td><td> </td><td> </td></tr>\n";
00316                     } // end if
00317                     cursasiento->siguienteregistro();
00318                 } // end while
00319 
00320                 delete cursasiento;
00321                 sprintf(consulta, "SELECT cuenta.codigo, cuenta.descripcion AS nomcuenta, apunte.debe AS debe, apunte.haber AS haber FROM apunte, cuenta WHERE apunte.idasiento = %d AND apunte.debe = 0 AND cuenta.idcuenta = apunte.idcuenta", idasiento);
00322                 empresaBase()->begin();
00323                 cursasiento = empresaBase()->cargacursor(consulta, "asiento");
00324                 empresaBase()->commit();
00325 
00326                 while (!cursasiento->eof()) {
00327                     if (txtapren) {
00329                         sprintf(codicompte, "( %s )", cursasiento->valor("codigo").toAscii().constData());
00330                         fitxersortidatxt << "                                                                 a  " << setw(30) << cursasiento->valor("nomcuenta").toAscii().constData() << "  " << setw(10) << codicompte << "  " << setw(12) <<  atof(cursasiento->valor("haber").toAscii()) <<endl;
00331                     } // end if
00332                     if (htmlapren) {
00334                         fitxersortidahtml << " <tr><td> </td><td> </td><td> </td><td class=adiariapren>  a  </td><td class=nomcomptediariapren> " << cursasiento->valor("nomcuenta").toAscii().constData() << " </td><td class=codidiariapren> ( " << cursasiento->valor("codigo").toAscii().constData() << " ) </td><td class=haverdiariapren> " <<  atof(cursasiento->valor("haber").toAscii()) << " </td></tr>\n";
00335                     } // end if
00336                     cursasiento->siguienteregistro();
00337                 } // end while
00338                 delete cursasiento;
00339             } // end for
00340 
00341             delete cursoraux;
00342             empresaBase()->commit();
00343 
00344             if (txtapren) {
00345                 fitxersortidatxt << "____________________________________________________________________________________________________________________________________\n" ;//presentació text format aprenentatge
00346                 fitxersortidatxt.close();
00347             } // end if
00348             if (htmlapren) {
00349                 fitxersortidahtml << "<tr><td colspan=\"7\"  class=liniadiariapren>\n_____________________________________________________________________________________________________________\n<hr></td></tr>\n</table>\n</body></html>\n";     //presentació html format aprenentatge
00350                 fitxersortidahtml.close();
00351             } // end if
00352             if (txtapren) {
00354                 QString cadaux = confpr->valor(CONF_EDITOR) + " diario.txt";
00355                 system(cadaux.toAscii());
00356             } // end if
00357             if (htmlapren) {
00359                 QString cadaux = confpr->valor(CONF_NAVEGADOR) + " diario.txt";
00360                 system(cadaux.toAscii());
00361             } // end if
00362         } // end if
00363     } // end if
00364     _depura("END DiarioPrintView::presentar", 0);
00365 }
00366 

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