#include <regivaprintview.h>
Inheritance diagram for regivaprintview:

Public Slots | |
| virtual void | accept () |
| Se ha pulsado sobre el botón aceptar del formulario. | |
Public Member Functions | |
| regivaprintview (Empresa *, QWidget *parent=0) | |
| ~regivaprintview () | |
| void | inicializa1 (QString, QString) |
| void | presentar (char *tipus) |
| Se ha pulsado sobre el botón aceptar del formulario. | |
Data Fields | |
| char * | fichero |
Definition at line 43 of file regivaprintview.h.
| emp | ||
| parent |
Definition at line 41 of file regivaprintview.cpp.
References _depura(), fichero, and Ui_RegIvaPrintBase::setupUi().
00042 : QDialog(parent), PEmpresaBase(emp) { 00043 _depura("regivaprintview::regivaprintview", 0); 00044 setupUi(this); 00045 fichero = NULL; 00046 _depura("END regivaprintview::regivaprintview", 0); 00047 }
| regivaprintview::~regivaprintview | ( | ) |
Definition at line 53 of file regivaprintview.cpp.
References _depura().
00053 { 00054 _depura("regivaprintview::~regivaprintview", 0); 00055 _depura("END regivaprintview::~regivaprintview", 0); 00056 }
| void regivaprintview::inicializa1 | ( | QString | finicial1, | |
| QString | ffinal1 | |||
| ) |
| finicial1 | ||
| ffinal1 |
Definition at line 83 of file regivaprintview.cpp.
References _depura(), Ui_RegIvaPrintBase::fechafinal1, and Ui_RegIvaPrintBase::fechainicial1.
00083 { 00084 _depura("regivaprintview::inicializa1", 0); 00085 fechainicial1->setText(finicial1); 00086 fechafinal1->setText(ffinal1); 00087 _depura("END regivaprintview::inicializa1", 0); 00088 }
| void regivaprintview::presentar | ( | char * | tipus | ) |
Se ha pulsado sobre el botón aceptar del formulario.
| tipus |
tipo de presentación.
Cogemos los valores del formulario.
Presentación txt normal.
Presentación html normal.
Creamos los archivos de salida.
Verificamos que se hayan creado correctamente los archivos.
Se puede mejorar el tratamiento de errores.
Sólo continuamos si hemos podido crear algún archivo.
Calculamos cuantos registros van a crearse y dimensionamos la tabla.
Presentación txt normal.
Presentación html normal.
Presentación txt normal.
Presentación html normal.
Calculamos la siguiente cuenta registro y finalizamos el bucle.
Vaciamos el cursor de la base de datos.
AHORA PONEMOS EL RESUMEN DEL IVA REPERCUTIDO.
Pasamos al formato de representación español las cantidades a mostrar.
Calculamos cuantos registros van a crearse y dimensionamos la tabla.
Presentación txt normal.
Presentación html normal.
Pasamos al formato de representacion español las cantidades a mostrar.
Hacemos el cálculo de la cuota (así nos sirve para ver si se cálculo el % correcto).
Acumulamos los totales para al final poder escribirlos.
Presentación txt normal.
Presentación html normal.
Calculamos la siguiente cuenta registro y finalizamos el bucle.
Vaciamos el cursor de la base de datos.
Ahora ponemos el resumen del IVA soportado.
Pasamos al formato de representación español las cantidades a mostrar.
Ahora cerramos los ficheros.
Presentación txt normal.
Presentación html normal.
Definition at line 95 of file regivaprintview.cpp.
References _depura(), postgresiface2::begin(), postgresiface2::cargacursor(), postgresiface2::commit(), CONF_EDITOR, CONF_NAVEGADOR, confpr, PEmpresaBase::empresaBase(), cursor2::eof(), Ui_RegIvaPrintBase::fechafinal1, Ui_RegIvaPrintBase::fechainicial1, iva, cursor2::siguienteregistro(), configuracion::valor(), and cursor2::valor().
Referenced by accept().
00095 { 00096 _depura("regivaprintview::presentar", 0); 00097 #ifndef WIN32 00098 int txt, html, txtapren, htmlapren; 00099 int error; 00100 int pid; 00101 QString data; 00102 QString datahora; 00103 00104 QString query; 00105 00107 txt =! strcmp(tipus, "txt"); 00108 html =! strcmp(tipus, "html"); 00109 txtapren =! strcmp(tipus, "txtapren"); 00110 htmlapren =! strcmp(tipus, "htmlapren"); 00111 00113 QString finicial = fechainicial1->text(); 00114 QString ffinal = fechafinal1->text(); 00115 00116 if (txt | html) { 00117 char *argstxt[] = {"iva.txt", "iva.txt", NULL}; 00118 char *argshtml[]={"iva.html","iva.html",NULL}; 00119 00120 ofstream fitxersortidatxt(argstxt[0]); 00121 ofstream fitxersortidahtml(argshtml[0]); 00122 00123 if (!fitxersortidatxt) 00124 txt = 0; 00125 if (!fitxersortidahtml) 00126 html = 0; 00127 if (txt | html) { 00128 int num1; 00129 cursor2 *cursorapt; 00130 empresaBase()->begin(); 00131 query.sprintf("SELECT * FROM registroiva, cuenta, borrador, asiento where cuenta.idcuenta = borrador.idcuenta AND borrador.idborrador = registroiva.idborrador AND asiento.idasiento = borrador.idasiento AND (cuenta.codigo LIKE '43%%' OR cuenta.codigo LIKE '600%%') AND borrador.fecha >= '%s' AND borrador.fecha <= '%s' ORDER BY asiento.ordenasiento", fechainicial1->text().toAscii().constData(), fechafinal1->text().toAscii().constData()); 00132 fprintf(stderr, "%s\n", query.toAscii().constData()); 00133 cursorapt = empresaBase()->cargacursor(query, "mycursor"); 00134 empresaBase()->commit(); 00136 num1 = cursorapt->numregistros(); 00137 int hoja = 0; 00138 00139 if (txt) { 00141 fitxersortidatxt.setf(ios::fixed) 00142 ; 00143 fitxersortidatxt.precision(2); 00144 fitxersortidatxt << " IVA Repercutido \n" ; 00145 fitxersortidatxt << "Fecha Inicial: " << finicial.toAscii().constData() << 00146 " Fecha Final: " << ffinal.toAscii().constData() << endl; 00147 fitxersortidatxt << "Asiento Fecha Cuenta Descripción Base imponible Factura \n" ; 00148 fitxersortidatxt << "__________________________________________________________________________________________________________\n"; 00149 } // end if 00150 if (html) { 00152 fitxersortidahtml.setf(ios::fixed) 00153 ; 00154 fitxersortidahtml.precision(2); 00155 fitxersortidahtml << "<html>\n"; 00156 fitxersortidahtml << "<head>\n"; 00157 fitxersortidahtml << " <!DOCTYPE / public \"-//w3c//dtd xhtml 1.0 transitional//en\"\n"; 00158 fitxersortidahtml << " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; 00159 fitxersortidahtml << " <LINK REL=StyleSheet HREF=\"estils.css\" TYPE=\"text/css\" MEDIA=screen>\n"; 00160 fitxersortidahtml << " <title> IVA Repercutit </title>\n"; 00161 fitxersortidahtml << "</head>\n"; 00162 fitxersortidahtml << "<body>\n"; 00163 fitxersortidahtml << "<table><tr><td colspan=\"10\" class=titoliva> IVA Repercutido <hr></td></tr>\n\n"; 00164 fitxersortidahtml << "<tr><td colspan=\"10\" class periodeiva> Data Inicial: " << finicial.toAscii().constData() << " - Data Final: " << ffinal.toAscii().constData() << "<hr></td></tr>\n\n"; 00165 fitxersortidahtml << "<tr><td class=titolcolumnaiva> Asiento </td><td class=titolcolumnaiva> Data </td><td class=titolcolumnaiva> Cuenta </td><td class=titolcolumnaiva> Descripción</td><td class=titolcolumnaiva> Base Imponible </td><td class=titolcolumnaiva> % IVA </td><td class=titolcolumnaiva> Quota IVA </td><td class=titolcolumnaiva> Factura </td><td class=titolcolumnaiva> CIF </td><td class=titolcolumnaiva> Cuenta IVA </td></tr>\n"; 00166 } // end if 00167 while (!cursorapt->eof()) { 00168 datahora = cursorapt->valor("fecha"); 00169 data = datahora.mid(0, 10); 00170 int baseimp = cursorapt->valor("baseimp").replace(".", "").toInt(); 00171 int total = baseimp *cursorapt->valor("baseimp").replace(".", "").toInt() / 10000; 00172 QString numberstr = QString::number(total); 00173 numberstr = numberstr.left(numberstr.length() - 2) + "." + numberstr.right(2); 00174 if (txt) { 00176 fitxersortidatxt << setw(10) << cursorapt->valor("ordenasiento").toAscii().data() << " " << 00177 data.toAscii().constData() << " " << 00178 cursorapt->valor("contrapartida").toAscii().constData() << " " << cursorapt->valor("descripcion").toAscii().constData() << " " << cursorapt->valor("baseimp").toAscii().constData() << " " << 00179 cursorapt->valor("iva").toAscii().constData() << " " << 00180 numberstr.toAscii().constData() <<" " << 00181 cursorapt->valor("factura").toAscii().constData() << " " << 00182 cursorapt->valor("cif").toAscii().constData() << " " << 00183 endl; 00184 } // end if 00185 if (html) { 00187 fitxersortidahtml << "<tr><td class=assentamentiva>" << cursorapt->valor("idasiento").toAscii().constData() << "</td><td class=dataiva>" << data.toAscii().constData() << "</td><td class=contrapartidaiva>" << cursorapt->valor("contrapartida").toAscii().constData() << "</td><td class=descripcioiva>" << cursorapt->valor("descripcion").toAscii().constData() << "</td><td class=baseimponibleiva>" << cursorapt->valor("baseimp").toAscii().constData() << "</td><td class=tipusiva>" << cursorapt->valor("iva").toAscii().constData() << "</td><td class=quotaiva>" << numberstr.toAscii().constData() << "</td><td class=facturaiva>" << cursorapt->valor("factura").toAscii().constData() << "</td><td class=cifiva>" << cursorapt->valor("cif").toAscii().constData() << "</td></tr> \n"; 00188 } // end if 00190 cursorapt->siguienteregistro(); 00191 } // end while 00193 delete cursorapt; 00194 00196 QString SQLQuery = "SELECT * FROM cuenta, tipoiva LEFT JOIN (SELECT idtipoiva, SUM(baseiva) AS tbaseiva FROM iva iva.idregistroiva IN (SELECT idregistroiva FROM registroiva WHERE ffactura >='"+fechainicial1->text()+"' AND ffactura <='"+fechafinal1->text()+"' ) GROUP BY idtipoiva) AS dd ON dd.idtipoiva=tipoiva.idtipoiva WHERE tipoiva.idcuenta = cuenta.idcuenta AND cuenta.codigo LIKE '477%'"; 00197 empresaBase()->begin(); 00198 cursor2* cur = empresaBase()->cargacursor(SQLQuery, "elcursor"); 00199 empresaBase()->commit(); 00200 int j = 0; 00201 Fixed tivar("0"); 00202 Fixed tbaseimpr("0"); 00203 while (!cur->eof()) { 00204 Fixed baseiva(cur->valor("tbaseiva").replace(".", "").toAscii().constData()); 00205 Fixed porcent(cur->valor("porcentajetipoiva").replace(".", "").toAscii().constData()); 00206 Fixed baseimp = baseiva * 1000000 / porcent; 00207 QString numberstr = baseimp.toQString(); 00208 00211 QString iva = QString::number(cursorapt->valor("tbaseiva").toDouble(), 'f', 2); 00212 QString bi = QString::number(numberstr.toDouble(), 'f', 2); 00213 00214 fitxersortidatxt << setiosflags( ios::left ) << setw(16) << cur->valor("nombretipoiva").toAscii().constData() << " IVA: "; 00215 fitxersortidatxt << resetiosflags( ios::left ) << setw(12) << iva.toAscii().constData() << " BI: "; 00216 fitxersortidatxt << setw(10) << bi.toAscii().constData() << endl; 00217 00218 tivar = tivar+baseiva; 00219 tbaseimpr = tbaseimpr+baseimp; 00220 cur->siguienteregistro(); 00221 j++; 00222 } // end while 00223 delete cur; 00224 00225 empresaBase()->begin(); 00226 query.sprintf("SELECT *, (baseimp + iva) AS total, (iva / baseimp * 100)::INTEGER AS cuota FROM registroiva, cuenta, borrador, asiento WHERE cuenta.idcuenta=borrador.idcuenta AND borrador.idborrador=registroiva.idborrador AND asiento.idasiento=borrador.idasiento AND (cuenta.codigo NOT LIKE '43%%' AND cuenta.codigo NOT LIKE '600%%') AND borrador.fecha >= '%s' AND borrador.fecha <= '%s' ORDER BY cuota, borrador.fecha", fechainicial1->text().toAscii().constData(), fechafinal1->text().toAscii().constData()); 00227 fprintf(stderr, "%s\n", query.toAscii().constData()); 00228 cursorapt = empresaBase()->cargacursor(query, "mycursor"); 00229 empresaBase()->commit(); 00231 num1 = cursorapt->numregistros(); 00232 hoja = 0; 00233 if (txt) { 00235 fitxersortidatxt.setf(ios::fixed) 00236 ; 00237 fitxersortidatxt.precision(2); 00238 fitxersortidatxt << " IVA Soportado \n" ; 00239 fitxersortidatxt << "Asiento Fecha Cuenta Descripción Subtotal Cuota IVA Total Factura CIF\n" ; 00240 fitxersortidatxt << "_______________________________________________________________________________________________________________________\n"; 00241 } 00242 if (html) { 00244 fitxersortidahtml.setf(ios::fixed) 00245 ; 00246 fitxersortidahtml.precision(2); 00247 fitxersortidahtml << "<html>\n"; 00248 fitxersortidahtml << "<head>\n"; 00249 fitxersortidahtml << " <!DOCTYPE / public \"-//w3c//dtd xhtml 1.0 transitional//en\"\n"; 00250 fitxersortidahtml << " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; 00251 fitxersortidahtml << " <LINK REL=StyleSheet HREF=\"estils.css\" TYPE=\"text/css\" MEDIA=screen>\n"; 00252 fitxersortidahtml << " <title> IVA Soportat </title>\n"; 00253 fitxersortidahtml << "</head>\n"; 00254 fitxersortidahtml << "<body>\n"; 00255 fitxersortidahtml << "<tr><td colspan=\"10\" class=titoliva> IVA Soportado <hr></td></tr>\n\n"; 00256 fitxersortidahtml << "<tr><td class=titolcolumnaiva> Asiento </td><td class=titolcolumnaiva> Fecha </td><td class=titolcolumnaiva> Cuenta </td><td class=titolcolumnaiva> Descripcion</td><td class=titolcolumnaiva> Base Imponible </td><td class=titolcolumnaiva> % IVA </td><td class=titolcolumnaiva> Quota IVA </td><td class=titolcolumnaiva> Factura </td><td class=titolcolumnaiva> CIF </td><td class=titolcolumnaiva> Cuenta IVA </td></tr>\n"; 00257 } 00258 while (!cursorapt->eof()) { 00259 datahora = cursorapt->valor("fecha"); 00260 data = datahora.mid(0, 10); 00262 QString bi = QString::number(cursorapt->valor("baseimp").toDouble(), 'f', 2); 00263 QString iva = QString::number(cursorapt->valor("iva").toDouble(), 'f', 2); 00264 QString total = QString::number(cursorapt->valor("total").toDouble(), 'f', 2); 00267 // int calculo = round(cursorapt->valor("iva").toDouble()/cursorapt->valor("baseimp").toDouble()*100); 00268 // QString cuota = QString::number(calculo); 00269 QString cuota = QString::number(cursorapt->valor("cuota").toInt()); 00271 if (txt) { 00273 fitxersortidatxt << setiosflags(ios::left) << setw(8) << cursorapt->valor("ordenasiento").toAscii().constData() << setw(12) << data.toAscii().constData() << setw(9) << cursorapt->valor("codigo").toAscii().constData() << setw(30) << cursorapt->valor("descripcion").left(30).toAscii().constData() << " " << resetiosflags( ios::left ) << setw(12) << bi.toAscii().constData() << " " << setw(3) << cuota.toAscii().constData() << "%" << setw(9) << iva.toAscii().constData() << setw(12) << total.toAscii().constData() << setiosflags( ios::left ) << " " << setw(10) << cursorapt->valor("factura").right(8).toAscii().constData() << setw(10) << cursorapt->valor("cif").toAscii().constData() << endl; 00274 } 00275 if (html) { 00277 fitxersortidahtml << "<tr><td class=assentamentiva>" << cursorapt->valor("ordenasiento").toAscii().constData() << "</td><td class=dataiva>" << data.toAscii().constData() << "</td><td class=contrapartidaiva>" << cursorapt->valor("contrapartida").toAscii().constData() << "</td><td class=descripcioiva>" << cursorapt->valor("descripcion").toAscii().constData() << "</td><td class=baseimponibleiva>" << cursorapt->valor("baseimp").toAscii().constData() << "</td><td class=tipusiva>" << cursorapt->valor("iva").toAscii().constData() << "</td><td class=quotaiva>" << total.toAscii().constData() << "</td><td class=facturaiva>" << cursorapt->valor("factura").toAscii().constData() << "</td><td class=cifiva>" << cursorapt->valor("cif").toAscii().constData() << "</td></tr> \n"; 00278 } 00280 cursorapt->siguienteregistro(); 00281 } // end while 00283 delete cursorapt; 00284 00286 SQLQuery = "SELECT * FROM cuenta, tipoiva LEFT JOIN (SELECT idtipoiva, SUM(baseiva) AS tbaseiva FROM iva WHERE iva.idregistroiva IN (SELECT idregistroiva FROM registroiva WHERE ffactura >='"+fechainicial1->text()+"' AND ffactura <='"+fechafinal1->text()+"' ) GROUP BY idtipoiva) AS dd ON dd.idtipoiva=tipoiva.idtipoiva WHERE tipoiva.idcuenta = cuenta.idcuenta AND cuenta.codigo LIKE '472%'"; 00287 empresaBase()->begin(); 00288 cur = empresaBase()->cargacursor(SQLQuery, "elcursor"); 00289 empresaBase()->commit(); 00290 j = 0; 00291 Fixed tivas("0"); 00292 Fixed tbaseimps("0"); 00293 while (!cur->eof()) { 00294 Fixed baseiva(cur->valor("tbaseiva").toAscii().constData()); 00295 Fixed porcent(cur->valor("porcentajetipoiva").toAscii().constData()); 00296 Fixed ivacalculado = baseiva * porcent / 100; 00297 QString numberstr = ivacalculado.toQString(); 00298 00301 QString bi = QString::number(cur->valor("tbaseiva").toDouble(), 'f', 2); 00302 QString iva = QString::number(numberstr.toDouble(), 'f', 2); 00303 00304 if (j == 0) { 00305 fitxersortidatxt << endl; 00306 } // end if 00307 fitxersortidatxt << setiosflags(ios::left) << setw(16) << cur->valor("nombretipoiva").toAscii().constData() << " BI: "; 00308 fitxersortidatxt << resetiosflags( ios::left ) << setw(12) << bi.toAscii().constData() << " IVA: "; 00309 fitxersortidatxt << setw(10) << iva.toAscii().constData() << endl; 00310 00311 tivas = tivas + ivacalculado; 00312 tbaseimps = tbaseimps + baseiva; 00313 cur->siguienteregistro(); 00314 j++; 00315 } // end while 00316 delete cur; 00317 00319 if (txt) { 00320 fitxersortidatxt.close(); 00322 if ((pid=fork()) < 0) { 00323 perror ("Fork failed"); 00324 exit(errno); 00325 } // end if 00326 if (!pid) { 00327 error = execvp(confpr->valor(CONF_EDITOR).toAscii(), argstxt); 00328 } // end if 00329 } // end if 00330 if (html) { 00331 fitxersortidahtml << "\n</table>\n</body>\n</html>\n"; 00332 fitxersortidahtml.close(); 00334 if ((pid = fork()) < 0) { 00335 perror("Fork failed"); 00336 exit(errno); 00337 } // end if 00338 if (!pid) { 00339 error = execvp(confpr->valor(CONF_NAVEGADOR).toAscii(),argshtml); 00340 } // end if 00341 } // end if 00342 } 00343 } 00344 00345 #endif 00346 _depura("END regivaprintview::presentar", 0); 00347 }
| void regivaprintview::accept | ( | ) | [virtual, slot] |
Se ha pulsado sobre el botón aceptar del formulario.
Lanza dialogo de generacion de modelo 300 Deberia revisarse el Widget parent de la variable modelo (listivaview--->modelo, en vez de regivaprintview--->modelo) modelo->exec();
Definition at line 62 of file regivaprintview.cpp.
References _depura(), presentar(), Ui_RegIvaPrintBase::radiohtml, Ui_RegIvaPrintBase::radioPS, and Ui_RegIvaPrintBase::radiotexto.
00062 { 00063 _depura("regivaprintview::accept", 0); 00064 if (radiotexto->isChecked()) 00065 presentar("txt"); 00066 if (radiohtml->isChecked()) 00067 presentar("html"); 00068 if (radioPS->isChecked()) { 00073 } // end if 00074 _depura("END regivaprintview::accept", 0); 00075 }
| char* regivaprintview::fichero |
1.5.1