Inheritance diagram for StructureParser:

Public Member Functions | |
| StructureParser (postgresiface2 *, unsigned int tip=IMPORT_TODO) | |
| ~StructureParser () | |
| bool | startDocument () |
| bool | startElement (const QString &, const QString &, const QString &, const QXmlAttributes &) |
| bool | endElement (const QString &, const QString &, const QString &) |
| bool | characters (const QString &) |
Private Attributes | |
| postgresiface2 * | conexionbase |
| QString | cadintermedia |
| QString | idasiento |
| Variables usadas para almacenar los datos de un asiento. | |
| QString | ordenasiento |
| QString | fechaasiento |
| QString | idapunte |
| Variables usadas para almacenar los datos de un apunte. | |
| QString | idborrador |
| QString | fechaapunte |
| QString | codigocuentaapunte |
| QString | debeapunte |
| QString | haberapunte |
| QString | conceptocontableapunte |
| int | m_ordenapunte |
| QString | idcuenta |
| Variables usadas para almacenar los datos de una cuenta. | |
| QString | descripcioncuenta |
| QString | codigocuenta |
| QString | codigopadre |
| QString | m_bloqueadaCuenta |
| QString | m_nodebeCuenta |
| QString | m_nohaberCuenta |
| QString | m_tipoCuenta |
| QString | m_idRegistroIva |
| Variables usadas para almacenar los datos del registro de IVA. | |
| QString | m_rIvaContrapartida |
| QString | m_rIvaBaseImp |
| QString | m_rIvaIva |
| QString | m_rIvaFFactura |
| QString | m_rIvaFactura |
| QString | m_rIvaCIF |
| QString | m_rIvaIdFPago |
| QString | m_rIvRecRegIva |
| QString | m_idTipoIva |
| Variables usadas para almacenar los datos de la tabla de IVA's. | |
| QString | m_baseIva |
| QString | m_nombreTipoIva |
| QString | tagpadre |
| El tagpadre indica en que posicion estamos. Si estamos en un asiento, un apunte, una cuenta, etc etc etc. | |
| QString | indent |
| unsigned int | m_tipo |
Definition at line 86 of file pgimportfiles.cpp.
| StructureParser::StructureParser | ( | postgresiface2 * | con, | |
| unsigned int | tip = IMPORT_TODO | |||
| ) |
| con | ||
| tip |
Definition at line 1475 of file pgimportfiles.cpp.
References _depura(), postgresiface2::begin(), postgresiface2::commit(), conexionbase, postgresiface2::ejecuta(), and m_tipo.
01475 { 01476 _depura("StructureParser::StructureParser", 0); 01477 conexionbase = con; 01478 m_tipo = tip; 01479 conexionbase->begin(); 01480 QString query = "INSERT INTO cuenta (codigo, descripcion) VALUES ('AUX', 'Una descripcion auxiliar de cuenta')"; 01481 conexionbase->ejecuta(query); 01482 for (int i = 0; i <= 12; i++) { 01483 QString query2 = "INSERT INTO ejercicios (ejercicio, periodo, bloqueado) VALUES (2005, " + QString::number(i) + ", FALSE)"; 01484 conexionbase->ejecuta(query2); 01485 } // end for 01486 conexionbase->commit(); 01487 _depura("END StructureParser::StructureParser", 0); 01488 }
| StructureParser::~StructureParser | ( | ) |
Definition at line 1494 of file pgimportfiles.cpp.
References _depura(), conexionbase, and postgresiface2::ejecuta().
01494 { 01495 _depura("StructureParser::~StructureParser", 0); 01496 QString query = "DELETE FROM cuenta WHERE codigo = 'AUX'"; 01497 conexionbase->ejecuta(query); 01498 _depura("END StructureParser::~StructureParser", 0); 01499 }
| bool StructureParser::startDocument | ( | ) |
| bool StructureParser::startElement | ( | const QString & | , | |
| const QString & | , | |||
| const QString & | qName, | |||
| const QXmlAttributes & | ||||
| ) |
| qName | ||
| QXmlAttributes |
Iniciamos el orden para que los apuntes salgan en orden empezando desde cero.
Borramos todos los elementos para que no haya traspasos de informacion.
Definition at line 1519 of file pgimportfiles.cpp.
References _depura(), postgresiface2::begin(), cadintermedia, postgresiface2::cargacursor(), codigocuenta, codigopadre, postgresiface2::commit(), conexionbase, descripcioncuenta, postgresiface2::ejecuta(), cursor2::eof(), idasiento, idborrador, IMPORT_ASIENTOS, IMPORT_CUENTAS, IMPORT_FACTURAS, indent, m_bloqueadaCuenta, m_idRegistroIva, m_nodebeCuenta, m_nohaberCuenta, m_ordenapunte, m_tipo, m_tipoCuenta, tagpadre, TRUE, and cursor2::valor().
01519 { 01520 _depura("StructureParser::startElement", 0); 01521 fprintf(stderr, "%s<%s>\n", indent.toAscii().data(), qName.toAscii().data()); 01522 indent += ".."; 01523 if (qName == "ASIENTO" && m_tipo & IMPORT_ASIENTOS) { 01524 tagpadre = "ASIENTO"; 01525 QString query = "INSERT INTO ASIENTO (descripcion, fecha) VALUES ('un nuevo asiento', '01/01/2005')"; 01526 conexionbase->begin(); 01527 conexionbase->ejecuta(query); 01528 cursor2 *cur= conexionbase->cargacursor("SELECT MAX(idasiento) AS max FROM asiento", "otroquery"); 01529 conexionbase->commit(); 01530 if (!cur->eof() ) { 01531 idasiento = cur->valor("max"); 01532 fprintf(stderr, "INSERCION DE ASIENTO:%s\n", idasiento.toAscii().data()); 01533 } // end if 01535 m_ordenapunte = 0; 01536 delete cur; 01537 } // end if 01538 if (qName == "APUNTE" && m_tipo & IMPORT_ASIENTOS) { 01539 QString query = "INSERT INTO borrador (idasiento, debe, haber, idcuenta, fecha, orden) VALUES (" + idasiento + ", 0, 0, id_cuenta('AUX'), '01/01/2003', " + QString::number(m_ordenapunte++) + ")"; 01540 conexionbase->begin(); 01541 conexionbase->ejecuta(query); 01542 cursor2 *cur= conexionbase->cargacursor("SELECT MAX(idborrador) AS max FROM borrador", "otroquery1"); 01543 conexionbase->commit(); 01544 if (!cur->eof()) { 01545 idborrador = cur->valor("max"); 01546 fprintf(stderr, "INSERCION DE APUNTE:%s\n", idborrador.toAscii().data()); 01547 } // end if 01548 delete cur; 01549 tagpadre = "APUNTE"; 01550 } // end if 01551 if (qName == "REGISTROIVA" && m_tipo & IMPORT_FACTURAS) { 01552 QString query = "INSERT INTO registroiva (contrapartida, idborrador) VALUES (id_cuenta('AUX'), " + idborrador + ")"; 01553 conexionbase->begin(); 01554 conexionbase->ejecuta(query); 01555 cursor2 *cur= conexionbase->cargacursor("SELECT MAX(idregistroiva) AS max FROM registroiva", "otroquery13"); 01556 conexionbase->commit(); 01557 if (!cur->eof()) { 01558 m_idRegistroIva = cur->valor("max"); 01559 fprintf(stderr, "INSERCION DE REGISTRO DE IVA:%s\n", idborrador.toAscii().data()); 01560 } // end if 01561 delete cur; 01562 tagpadre = "REGISTROIVA"; 01563 } // end if 01564 if (qName == "RIVA" && m_tipo & IMPORT_FACTURAS) { 01565 tagpadre = "RIVA"; 01566 } // end if 01567 if (qName == "CUENTA" && m_tipo & IMPORT_CUENTAS) { 01568 tagpadre = "CUENTA"; 01570 codigocuenta = ""; 01571 descripcioncuenta = ""; 01572 codigopadre = ""; 01573 m_bloqueadaCuenta = ""; 01574 m_nodebeCuenta = ""; 01575 m_nohaberCuenta = ""; 01576 m_tipoCuenta = ""; 01577 } // end if 01578 cadintermedia = ""; 01579 _depura("END StructureParser::startElement", 0); 01580 return TRUE; 01581 }
| bool StructureParser::endElement | ( | const QString & | , | |
| const QString & | , | |||
| const QString & | qName | |||
| ) |
| qName |
Vamos a ir distinguiendo casos y actuando segun cada caso. En la mayoria de casos iremos actuando en consecuencia. Ha terminado un asiento, por tanto hacemos el update de los campos.
Si es un apunte hacemos su insercion.
Ha terminado una cuenta, por tanto hacemos la insercion de la misma. Podemos hacer la insercion y no un sistema de update pq la cuenta no tiene hijos en el XML. Nuevo Socio M.Mezo
Primero debemos determinar si existe o no dicha cuenta para hacer la insercion o la modificacion.
Si el tipo de cuenta esta vacio lo ponemos a NULL para que no haya error en la base de datos.
Si es un registro de iva vamos a por el.
Insercion de IVA's dentro del registro de IVA.
Definition at line 1589 of file pgimportfiles.cpp.
References _depura(), postgresiface2::begin(), cadintermedia, postgresiface2::cargacursor(), codigocuenta, codigocuentaapunte, codigopadre, postgresiface2::commit(), conceptocontableapunte, conexionbase, debeapunte, descripcioncuenta, postgresiface2::ejecuta(), cursor2::eof(), fechaapunte, fechaasiento, haberapunte, idasiento, idborrador, IMPORT_ASIENTOS, IMPORT_CUENTAS, IMPORT_FACTURAS, indent, m_baseIva, m_bloqueadaCuenta, m_idRegistroIva, m_idTipoIva, m_nodebeCuenta, m_nohaberCuenta, m_nombreTipoIva, m_rIvaBaseImp, m_rIvaCIF, m_rIvaContrapartida, m_rIvaFactura, m_rIvaFFactura, m_rIvaIdFPago, m_rIvaIva, m_rIvRecRegIva, m_tipo, m_tipoCuenta, postgresiface2::sanearCadena(), tagpadre, TRUE, and cursor2::valor().
01589 { 01590 _depura("StructureParser::endElement", 0); 01591 indent.remove((uint)0, 2); 01595 if (qName == "ASIENTO" && m_tipo & IMPORT_ASIENTOS) { 01596 fprintf(stderr, "Fin de Asiento"); 01597 QString query = "UPDATE asiento set fecha = '" + 01598 conexionbase->sanearCadena(fechaasiento) + "' WHERE idasiento = " + 01599 conexionbase->sanearCadena(idasiento); 01600 conexionbase->begin(); 01601 conexionbase->ejecuta(query); 01602 cursor2 *cur = conexionbase->cargacursor("SELECT cierraasiento(" + idasiento + ")"); 01603 conexionbase->commit(); 01604 delete cur; 01605 } // end if 01607 if (qName == "APUNTE" && m_tipo & IMPORT_ASIENTOS) { 01608 QString query = "UPDATE borrador SET debe = "+ 01609 conexionbase->sanearCadena(debeapunte) + ", haber = "+ 01610 conexionbase->sanearCadena(haberapunte) + ", idcuenta = id_cuenta('" + 01611 conexionbase->sanearCadena(codigocuentaapunte) + "'), fecha = '" + 01612 conexionbase->sanearCadena(fechaapunte) + "', conceptocontable = '" + 01613 conexionbase->sanearCadena(conceptocontableapunte) + "' WHERE idborrador = " + idborrador; 01614 conexionbase->ejecuta(query); 01615 } // end if 01616 if (qName == "FECHA" && tagpadre == "ASIENTO") 01617 fechaasiento = cadintermedia; 01618 if (qName == "FECHA" && tagpadre == "APUNTE") 01619 fechaapunte = cadintermedia; 01620 if (qName == "DEBE" && tagpadre == "APUNTE") 01621 debeapunte = cadintermedia; 01622 if (qName == "HABER" && tagpadre == "APUNTE") 01623 haberapunte = cadintermedia; 01624 if (qName == "CODIGO" && tagpadre == "APUNTE") 01625 codigocuentaapunte = cadintermedia; 01626 if (qName == "CONCEPTOCONTABLE" && tagpadre == "APUNTE") 01627 conceptocontableapunte = cadintermedia; 01628 if (qName == "CUENTA" && m_tipo & IMPORT_CUENTAS) { 01632 QString idgrupo = codigocuenta.left(1); 01634 QString vidcuenta; 01635 if (codigopadre != "") { 01636 vidcuenta = "id_cuenta('" + conexionbase->sanearCadena(codigopadre) + "')"; 01637 } else { 01638 vidcuenta = "NULL"; 01639 } // end if 01641 if (m_tipoCuenta == "") 01642 m_tipoCuenta = "NULL"; 01643 01644 QString query = "SELECT * FROM cuenta WHERE codigo = '" + codigocuenta + "'"; 01645 cursor2 *cur = conexionbase->cargacursor(query); 01646 if (cur->eof()) { 01647 QString query = "INSERT INTO cuenta (tipocuenta, codigo, descripcion, padre, bloqueada, nodebe, nohaber) VALUES ("+ 01648 conexionbase->sanearCadena(m_tipoCuenta) + ",'" + 01649 conexionbase->sanearCadena(codigocuenta) + "','" + 01650 conexionbase->sanearCadena(descripcioncuenta) + "', " + 01651 vidcuenta + ", '" + 01652 conexionbase->sanearCadena(m_bloqueadaCuenta) + "','" + 01653 conexionbase->sanearCadena(m_nodebeCuenta) + "','" + 01654 conexionbase->sanearCadena(m_nohaberCuenta) + "')"; 01655 conexionbase->ejecuta(query); 01656 } else { 01657 QString query = "UPDATE cuenta SET "; 01658 query += "descripcion = '" + conexionbase->sanearCadena(descripcioncuenta) + "'"; 01659 query += ", tipocuenta = " + conexionbase->sanearCadena(m_tipoCuenta); 01660 query += ", bloqueada = '" + conexionbase->sanearCadena(m_bloqueadaCuenta)+"'"; 01661 query += ", nodebe = '" + conexionbase->sanearCadena(m_nodebeCuenta) + "'"; 01662 query += ", nohaber = '" + conexionbase->sanearCadena(m_nohaberCuenta) + "'"; 01663 query += " WHERE codigo = '" + conexionbase->sanearCadena(codigocuenta) + "'"; 01664 conexionbase->ejecuta(query); 01665 } //end if 01666 delete cur; 01667 } // end if 01668 if (qName == "CODIGO" && tagpadre == "CUENTA") 01669 codigocuenta = cadintermedia; 01670 if (qName == "DESCRIPCION" && tagpadre == "CUENTA") 01671 descripcioncuenta = cadintermedia; 01672 if (qName == "CODPADRE" && tagpadre == "CUENTA") 01673 codigopadre = cadintermedia; 01674 if (qName == "BLOQUEADA" && tagpadre == "CUENTA") 01675 m_bloqueadaCuenta = cadintermedia; 01676 if (qName == "NODEBE" && tagpadre == "CUENTA") 01677 m_nodebeCuenta = cadintermedia; 01678 if (qName == "NOHABER" && tagpadre == "CUENTA") 01679 m_nohaberCuenta = cadintermedia; 01680 if (qName == "TIPOCUENTA" && tagpadre == "CUENTA") 01681 m_tipoCuenta = cadintermedia; 01683 if (qName == "REGISTROIVA" && m_tipo & IMPORT_FACTURAS) { 01684 QString query = "UPDATE registroiva SET contrapartida = id_cuenta('" + m_rIvaContrapartida + "'), ffactura = '" + m_rIvaFFactura + "'"; 01685 if (m_rIvaBaseImp != "") 01686 query += ", baseimp = " + m_rIvaBaseImp; 01687 if (m_rIvaIva != "") 01688 query += ", iva = " + m_rIvaIva; 01689 query +=" WHERE idregistroiva = " + m_idRegistroIva; 01690 conexionbase->ejecuta(query); 01691 } // end if 01692 if (qName == "CONTRAPARTIDA" && tagpadre == "REGISTROIVA") 01693 m_rIvaContrapartida = cadintermedia; 01694 if (qName == "BASEIMP" && tagpadre == "REGISTROIVA") 01695 m_rIvaBaseImp = cadintermedia; 01696 if (qName == "IVA" && tagpadre == "REGISTROIVA") 01697 m_rIvaIva = cadintermedia; 01698 if (qName == "FFACTURA" && tagpadre == "REGISTROIVA") 01699 m_rIvaFFactura = cadintermedia; 01700 if (qName == "FACTURA" && tagpadre == "REGISTROIVA") 01701 m_rIvaFactura = cadintermedia; 01702 if (qName == "CIF" && tagpadre == "REGISTROIVA") 01703 m_rIvaCIF = cadintermedia; 01704 if (qName == "IDFPAGO" && tagpadre == "REGISTROIVA") 01705 m_rIvaIdFPago = cadintermedia; 01706 if (qName == "RECTIFICAAREGISTROIVA" && tagpadre == "REGISTROIVA") 01707 m_rIvRecRegIva = cadintermedia; 01709 if (qName == "RIVA" && m_tipo & IMPORT_FACTURAS) { 01710 QString query1 = "SELECT idtipoiva FROM tipoiva WHERE nombretipoiva = '" + m_nombreTipoIva + "'"; 01711 conexionbase->begin(); 01712 cursor2 * cur = conexionbase->cargacursor(query1, "elqueryd"); 01713 if (!cur->eof()) { 01714 QString query = "INSERT INTO IVA (idregistroiva, idtipoiva, baseiva) VALUES (" + m_idRegistroIva + ", " + cur->valor("idtipoiva") + ", " + m_baseIva + ")"; 01715 conexionbase->ejecuta(query); 01716 } // end if 01717 delete cur; 01718 conexionbase->commit(); 01719 } // end if 01720 if (qName == "IDTIPOIVA" && tagpadre == "RIVA") 01721 m_idTipoIva = cadintermedia; 01722 if (qName == "NOMBRETIPOIVA" && tagpadre == "RIVA") 01723 m_nombreTipoIva = cadintermedia; 01724 if (qName == "BASEIVA" && tagpadre == "RIVA") 01725 m_baseIva = cadintermedia; 01726 cadintermedia = ""; 01727 _depura("END StructureParser::endElement", 0); 01728 return TRUE; 01729 }
| bool StructureParser::characters | ( | const QString & | n1 | ) |
| nl |
Definition at line 1736 of file pgimportfiles.cpp.
References _depura(), cadintermedia, and TRUE.
01736 { 01737 _depura("StructureParser::characters", 0); 01738 cadintermedia += n1; 01739 _depura("END StructureParser::characters", 0); 01740 return TRUE; 01741 }
postgresiface2* StructureParser::conexionbase [private] |
Definition at line 88 of file pgimportfiles.cpp.
Referenced by endElement(), startElement(), StructureParser(), and ~StructureParser().
QString StructureParser::cadintermedia [private] |
Definition at line 89 of file pgimportfiles.cpp.
Referenced by characters(), endElement(), and startElement().
QString StructureParser::idasiento [private] |
Variables usadas para almacenar los datos de un asiento.
Esta variable va almacenando los valores que van saliendo en la clase.
Definition at line 91 of file pgimportfiles.cpp.
Referenced by endElement(), and startElement().
QString StructureParser::ordenasiento [private] |
Definition at line 92 of file pgimportfiles.cpp.
QString StructureParser::fechaasiento [private] |
QString StructureParser::idapunte [private] |
Variables usadas para almacenar los datos de un apunte.
Definition at line 95 of file pgimportfiles.cpp.
QString StructureParser::idborrador [private] |
QString StructureParser::fechaapunte [private] |
QString StructureParser::codigocuentaapunte [private] |
QString StructureParser::debeapunte [private] |
QString StructureParser::haberapunte [private] |
QString StructureParser::conceptocontableapunte [private] |
int StructureParser::m_ordenapunte [private] |
QString StructureParser::idcuenta [private] |
Variables usadas para almacenar los datos de una cuenta.
Definition at line 104 of file pgimportfiles.cpp.
QString StructureParser::descripcioncuenta [private] |
QString StructureParser::codigocuenta [private] |
QString StructureParser::codigopadre [private] |
QString StructureParser::m_bloqueadaCuenta [private] |
QString StructureParser::m_nodebeCuenta [private] |
QString StructureParser::m_nohaberCuenta [private] |
QString StructureParser::m_tipoCuenta [private] |
QString StructureParser::m_idRegistroIva [private] |
Variables usadas para almacenar los datos del registro de IVA.
Definition at line 113 of file pgimportfiles.cpp.
Referenced by endElement(), and startElement().
QString StructureParser::m_rIvaContrapartida [private] |
QString StructureParser::m_rIvaBaseImp [private] |
QString StructureParser::m_rIvaIva [private] |
QString StructureParser::m_rIvaFFactura [private] |
QString StructureParser::m_rIvaFactura [private] |
QString StructureParser::m_rIvaCIF [private] |
QString StructureParser::m_rIvaIdFPago [private] |
QString StructureParser::m_rIvRecRegIva [private] |
QString StructureParser::m_idTipoIva [private] |
Variables usadas para almacenar los datos de la tabla de IVA's.
Definition at line 123 of file pgimportfiles.cpp.
Referenced by endElement().
QString StructureParser::m_baseIva [private] |
QString StructureParser::m_nombreTipoIva [private] |
QString StructureParser::tagpadre [private] |
El tagpadre indica en que posicion estamos. Si estamos en un asiento, un apunte, una cuenta, etc etc etc.
Definition at line 127 of file pgimportfiles.cpp.
Referenced by endElement(), and startElement().
QString StructureParser::indent [private] |
Definition at line 138 of file pgimportfiles.cpp.
Referenced by endElement(), startDocument(), and startElement().
unsigned int StructureParser::m_tipo [private] |
Definition at line 139 of file pgimportfiles.cpp.
Referenced by endElement(), startElement(), and StructureParser().
1.5.1