libromayorprint.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 <unistd.h>
00022 
00023 #include "libromayorprint.h"
00024 #include "fixed.h"
00025 
00026 
00028 
00031 libromayorprint::libromayorprint( Empresa *emp) : PEmpresaBase (emp) {
00032     _depura("libromayorprint::libromayorprint", 0);
00033     fichero = NULL;
00034     _depura("END libromayorprint::libromayorprint", 0);
00035 }
00036 
00037 
00039 
00041 libromayorprint::~libromayorprint() {
00042     _depura("libromayorprint::~libromayorprint", 0);
00043     _depura("END libromayorprint::~libromayorprint", 0);
00044 }
00045 
00046 
00048 
00054 void libromayorprint::inicializa1(QString codinicial1, QString codfinal1, QString finicial1, QString ffinal1) {
00055     _depura("libromayorprint::inicializa1", 0);
00056     codinicial= codinicial1;
00057     codfinal = codfinal1;
00058     finicial = finicial1;
00059     ffinal = ffinal1;
00060     _depura("END libromayorprint::inicializa1", 0);
00061 }
00062 
00063 
00065 
00068 void libromayorprint::inicializa2(char *fich) {
00069     _depura("libromayorprint::inicializa2", 0);
00070     fichero = fich;
00071     _depura("libromayorprint::inicializa2", 0);
00072 }
00073 
00074 
00075 
00077 
00079 void libromayorprint::accept() {
00080     _depura("libromayorprint::accept", 0);
00081     Fixed debe("0"), haber("0"), saldo("0");
00082     Fixed debeinicial("0"), haberinicial("0"), saldoinicial("0");
00083     Fixed debefinal("0"), haberfinal("0"), saldofinal("0");
00084 
00085     int idcuenta;
00086     int idasiento;
00087     char *textasiento;
00088     int activo;
00089     string cad;
00090     cursor2 *cursoraux, *cursoraux1, *cursoraux2;
00091 
00092     FILE *mifile;
00093     mifile = fopen("mayor.txt", "wt");
00094     if (mifile != NULL) {
00095         empresaBase()->begin();
00096         cursoraux = empresaBase()->cargacuentascodigo(-1, codinicial, codfinal);
00097         while(!cursoraux->eof()) {
00098             idcuenta = atoi(cursoraux->valor(0).toAscii());
00099             cursoraux1 = empresaBase()->cargaapuntesctafecha(idcuenta, finicial, ffinal);
00100             if (!cursoraux1->eof()) {
00101                 activo = strcmp((char *) cursoraux->valor(13).toAscii().constData() , "f");
00102                 fprintf(mifile, "\n\n%12s %50s", cursoraux->valor(1).toAscii().constData(), cursoraux->valor(2).toAscii().constData());
00103                 if (activo) {
00104                     fprintf(mifile, " Cuenta de Activo\n");
00105                 } else {
00106                     fprintf(mifile, " Cuenta de Pasivo\n");
00107                 } // end if
00108                 cursoraux2 = empresaBase()->cargasaldoscuentafecha(idcuenta, finicial);
00109                 if (!cursoraux2->eof()) {
00110                     debeinicial = Fixed(cursoraux2->valor(0).toAscii().constData());
00111                     haberinicial = Fixed(cursoraux2->valor(1).toAscii().constData());
00112                     if (activo) {
00113                         saldoinicial = debeinicial - haberinicial;
00114                     } else {
00115                         saldoinicial = haberinicial - debeinicial;
00116                     } // end if
00117                     fprintf(mifile, "%5.5s %10.10s %10.10s %-40.40s %10.10s %10.10s %10.10s\n", "Asiento", "Fecha", "Asiento", "Descripcion", "Debe", "Haber", "Saldo");
00118                     fprintf(mifile, "                                                 SUMAS ANTERIORES... %10.2s %10.2s %10.2s\n", debeinicial.toQString().toAscii().constData(), haberinicial.toQString().toAscii().constData(), saldoinicial.toQString().toAscii().constData());
00119                     fprintf(mifile, "---------------------------------------------------------------------------------------------------------\n");
00120                 } // end if
00121                 saldo = saldoinicial;
00122                 debefinal = debeinicial;
00123                 haberfinal = haberinicial;
00124                 for (; !cursoraux1->eof(); cursoraux1->siguienteregistro()) {
00125                     idasiento = atoi(cursoraux1->valor(2).toAscii());
00126                     textasiento = (char *) cursoraux1->valor(5).toAscii().constData();
00127                     debe = Fixed(cursoraux1->valor(8).toAscii().constData());
00128                     haber = Fixed(cursoraux1->valor(9).toAscii().constData());
00129                     if (activo) {
00130                         saldo = saldo + debe - haber;
00131                     } else {
00132                         saldo = saldo +haber - debe;
00133                     } // end if
00134                     debefinal = debefinal + debe;
00135                     haberfinal = haberfinal + haber;
00136                     cad = cursoraux1->valor(4).toAscii().constData();
00137                     fprintf(mifile,"%5.5d %10.10s %10.10s %-40.40s %10.2s %10.2s %10.2s\n", idasiento, cad.substr(1,10).c_str(), textasiento, cursoraux1->valor(5).toAscii().constData(), debe.toQString().toAscii().constData(), haber.toQString().toAscii().constData(), saldo.toQString().toAscii().constData());
00138                 } // end for
00139                 if (activo) {
00140                     saldofinal = debefinal - haberfinal;
00141                 } else {
00142                     saldofinal = haberfinal - debefinal;
00143                 } // end if
00144                 fprintf(mifile, "                                       -----------------------------------------------------------------\n");
00145                 fprintf(mifile, "                                                  TOTAL SUBCUENTA... %10.2s %10.2s %10.2s\n", debefinal.toQString().toAscii().constData(), haberfinal.toQString().toAscii().constData(), saldofinal.toQString().toAscii().constData());
00146                 cursoraux2->cerrar();
00147                 delete cursoraux2;
00148             } // end if
00149             cursoraux1->cerrar();
00150             delete cursoraux1;
00151             cursoraux->siguienteregistro();
00152         } // end while
00153         fclose(mifile);
00154         empresaBase()->commit();
00155         delete cursoraux;
00156     } // end if
00157     QString cadaux = confpr->valor(CONF_EDITOR) + " mayor.txt";
00158     system(cadaux.toAscii().constData());
00159     _depura("END libromayorprint::accept", 0);
00160 }
00161 

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