00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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 }
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 }
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 }
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 }
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 }
00139 if (activo) {
00140 saldofinal = debefinal - haberfinal;
00141 } else {
00142 saldofinal = haberfinal - debefinal;
00143 }
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 }
00149 cursoraux1->cerrar();
00150 delete cursoraux1;
00151 cursoraux->siguienteregistro();
00152 }
00153 fclose(mifile);
00154 empresaBase()->commit();
00155 delete cursoraux;
00156 }
00157 QString cadaux = confpr->valor(CONF_EDITOR) + " mayor.txt";
00158 system(cadaux.toAscii().constData());
00159 _depura("END libromayorprint::accept", 0);
00160 }
00161