#include <importbalance.h>
Inheritance diagram for ImportBalance:

Public Member Functions | |
| ImportBalance (Empresa *) | |
| Constructor de la clase que inicializa determinadas variables de clase. | |
| bool | startElement (const QString &, const QString &, const QString &, const QXmlAttributes &) |
| Implementación del analizador (parser) que procesa un tag de inicio. | |
| bool | endElement (const QString &, const QString &, const QString &) |
| Implementación del analizador (parser) que procesa un tag de cierre. | |
| bool | startElement1 (const QString &, const QString &, const QString &, const QXmlAttributes &) |
| bool | endElement1 (const QString &, const QString &, const QString &) |
| bool | startElement2 (const QString &, const QString &, const QString &, const QXmlAttributes &) |
| En el segundo paso se registran compmasap y compbalance. | |
| bool | endElement2 (const QString &, const QString &, const QString &) |
| En el segundo paso introducimos los compmasap y los compbalance. | |
| bool | characters (const QString &) |
| Recoge valores asignados a un determinado tag y los almacena en la variable m_data. | |
| void | cambiapaso () |
Private Attributes | |
| QString | m_tag |
| Esta variable global indica siempre el tag que está procesando el parser. | |
| QString | m_data |
| QMap< QString, QString > | m_tvalores |
| QMap< QString, QString > | m_identmasasp |
| Este hash sirve para almacenar las claves provisionales de las masas patrimoniales. | |
| int | m_paso |
Definition at line 39 of file importbalance.h.
| ImportBalance::ImportBalance | ( | Empresa * | emp | ) |
Constructor de la clase que inicializa determinadas variables de clase.
| emp |
Definition at line 34 of file importbalance.cpp.
References _depura(), m_data, m_paso, and m_tag.
00034 : QXmlDefaultHandler(), PEmpresaBase(emp) { 00035 _depura("ImportBalance::ImportBalance", 0); 00036 m_tag = ""; 00037 m_data = ""; 00038 m_paso = 0; 00039 _depura("END ImportBalance::ImportBalance", 0); 00040 }
| bool ImportBalance::startElement | ( | const QString & | a, | |
| const QString & | b, | |||
| const QString & | c, | |||
| const QXmlAttributes & | d | |||
| ) |
Implementación del analizador (parser) que procesa un tag de inicio.
| a | ||
| b | ||
| c | ||
| d |
Definition at line 56 of file importbalance.cpp.
References _depura(), m_paso, startElement1(), and startElement2().
00056 { 00057 _depura("ImportBalance::startElement", 0); 00058 if (m_paso == 0) { 00059 return startElement1(a, b, c, d); 00060 } else { 00061 return startElement2(a, b, c, d); 00062 } // end if 00063 _depura("END ImportBalance::startElement", 0); 00064 }
| bool ImportBalance::endElement | ( | const QString & | a, | |
| const QString & | b, | |||
| const QString & | c | |||
| ) |
Implementación del analizador (parser) que procesa un tag de cierre.
| a | ||
| b | ||
| c |
Definition at line 73 of file importbalance.cpp.
References _depura(), endElement1(), endElement2(), and m_paso.
00073 { 00074 _depura("ImportBalance::endlement", 0); 00075 if (m_paso == 0) { 00076 return endElement1 (a, b, c); 00077 } else { 00078 return endElement2 (a, b, c); 00079 } // end if 00080 _depura("END ImportBalance::startElement", 0); 00081 }
| bool ImportBalance::startElement1 | ( | const QString & | , | |
| const QString & | , | |||
| const QString & | , | |||
| const QXmlAttributes & | ||||
| ) |
Implementación del analizador (parser) que procesa un tag de inicio en la primera pasada.
Definition at line 92 of file importbalance.cpp.
References _depura(), postgresiface2::begin(), postgresiface2::cargacursor(), postgresiface2::commit(), postgresiface2::ejecuta(), PEmpresaBase::empresaBase(), cursor2::eof(), m_tag, m_tvalores, TRUE, and cursor2::valor().
Referenced by startElement().
00092 { 00093 _depura("ImportBalance::startElement1", 0); 00094 m_tag = qName; 00095 QString SQLQuery; 00096 if (m_tag == "balance") { 00097 SQLQuery.sprintf("INSERT INTO balance (nombrebalance) VALUES ('Elemento importado')\n"); 00098 empresaBase()->begin(); 00099 empresaBase()->ejecuta(SQLQuery); 00100 SQLQuery = "SELECT max(idbalance) AS idbalance FROM balance"; 00101 cursor2 *cur = empresaBase()->cargacursor(SQLQuery, "unquerymas"); 00102 empresaBase()->commit(); 00103 if (!cur->eof()) { 00104 m_tvalores["idbalance"] = cur->valor("idbalance"); 00105 } // end if 00106 delete cur; 00107 } // end if 00108 if (m_tag == "mpatrimonial") { 00109 SQLQuery.sprintf("INSERT INTO mpatrimonial (idbalance) VALUES (%s)\n", empresaBase()->sanearCadena(m_tvalores["idbalance"]).toAscii().constData()); 00110 empresaBase()->begin(); 00111 empresaBase()->ejecuta(SQLQuery); 00112 SQLQuery = "SELECT max(idmpatrimonial) AS idmpatrimonial FROM mpatrimonial"; 00113 cursor2 *cur = empresaBase()->cargacursor(SQLQuery, "unquerymas"); 00114 empresaBase()->commit(); 00115 if (!cur->eof()) { 00116 m_tvalores["idmpatrimonial_nueva"] = cur->valor("idmpatrimonial"); 00117 } // end if 00118 delete cur; 00119 } // end if 00120 _depura("END ImportBalance::startElement1", 0); 00121 return TRUE; 00122 }
| bool ImportBalance::endElement1 | ( | const QString & | , | |
| const QString & | , | |||
| const QString & | ||||
| ) |
Implementación del analizador (parser) que procesa un tag de cierre en la primera pasada.
En la inserción de masas patrimoniales hay que hacer una reconversión de la clave. Cuando todo haya terminado debemos actualizar el cambo idmpatrimonial de los compmasap para que la cosa funcione.
Definition at line 136 of file importbalance.cpp.
References _depura(), postgresiface2::begin(), postgresiface2::commit(), postgresiface2::ejecuta(), PEmpresaBase::empresaBase(), m_data, m_identmasasp, m_tag, m_tvalores, and TRUE.
Referenced by endElement().
00136 { 00137 _depura("ImportBalance::endElement1", 0); 00138 m_tag = qName; 00139 QString SQLQuery; 00140 if (qName == "balance") { 00141 SQLQuery.sprintf("UPDATE balance SET nombrebalance = '%s' WHERE idbalance = %s\n", m_tvalores["nombrebalance"].toAscii().constData(), m_tvalores["idbalance"].toAscii().constData()); 00142 empresaBase()->begin(); 00143 empresaBase()->ejecuta(SQLQuery); 00144 empresaBase()->commit(); 00145 } 00146 if (qName == "mpatrimonial") { 00151 m_identmasasp[m_tvalores["idmasa"]] = m_tvalores["idmpatrimonial_nueva"]; 00152 SQLQuery.sprintf("UPDATE mpatrimonial SET descmpatrimonial = '%s' WHERE idmpatrimonial = %s\n", m_tvalores["descmpatrimonial"].toAscii().constData(), m_tvalores["idmpatrimonial_nueva"].toAscii().constData()); 00153 empresaBase()->begin(); 00154 empresaBase()->ejecuta(SQLQuery); 00155 empresaBase()->commit(); 00156 if (m_tvalores["orden"] != "") { 00157 SQLQuery.sprintf("UPDATE mpatrimonial SET orden = %s WHERE idmpatrimonial = %s\n", m_tvalores["orden"].toAscii().constData(), m_tvalores["idmpatrimonial_nueva"].toAscii().constData()); 00158 empresaBase()->begin(); 00159 empresaBase()->ejecuta(SQLQuery); 00160 empresaBase()->commit(); 00161 m_tvalores["orden"] = ""; 00162 } // end if 00163 if (m_tvalores["tabulacion"] != "") { 00164 SQLQuery.sprintf("UPDATE mpatrimonial SET tabulacion = %s WHERE idmpatrimonial = %s\n", m_tvalores["tabulacion"].toAscii().constData(), m_tvalores["idmpatrimonial_nueva"].toAscii().constData()); 00165 empresaBase()->begin(); 00166 empresaBase()->ejecuta(SQLQuery); 00167 empresaBase()->commit(); 00168 m_tvalores["tabulacion"] = ""; 00169 } // end if 00170 if (m_tvalores["opdesc"] != "") { 00171 SQLQuery.sprintf("UPDATE mpatrimonial SET opdesc = %s WHERE idmpatrimonial = %s\n", m_tvalores["opdesc"].toAscii().constData(), m_tvalores["idmpatrimonial_nueva"].toAscii().constData()); 00172 empresaBase()->begin(); 00173 empresaBase()->ejecuta(SQLQuery); 00174 empresaBase()->commit(); 00175 m_tvalores["opdesc"] = ""; 00176 } // end if 00177 if (m_tvalores["tipompatrimonial"] != "") { 00178 SQLQuery.sprintf("UPDATE mpatrimonial SET tipompatrimonial = %s WHERE idmpatrimonial=%s\n", m_tvalores["tipompatrimonial"].toAscii().constData(), m_tvalores["idmpatrimonial_nueva"].toAscii().constData()); 00179 empresaBase()->begin(); 00180 empresaBase()->ejecuta(SQLQuery); 00181 empresaBase()->commit(); 00182 m_tvalores["tipompatrimonial"] = ""; 00183 } // end if 00184 } // end if 00185 m_tag = ""; 00186 m_data = ""; 00187 _depura("END ImportBalance::endElement1", 0); 00188 return TRUE; 00189 }
| bool ImportBalance::startElement2 | ( | const QString & | , | |
| const QString & | , | |||
| const QString & | , | |||
| const QXmlAttributes & | ||||
| ) |
En el segundo paso se registran compmasap y compbalance.
Implementación del analizador (parser) que procesa un tag de inicio en la segunda pasada.
Definition at line 197 of file importbalance.cpp.
References _depura(), m_tag, and TRUE.
Referenced by startElement().
00197 { 00198 _depura("ImportBalance::startElement2", 0); 00199 m_tag = qName; 00200 _depura("END ImportBalance::startElement2", 0); 00201 return TRUE; 00202 }
| bool ImportBalance::endElement2 | ( | const QString & | , | |
| const QString & | , | |||
| const QString & | ||||
| ) |
En el segundo paso introducimos los compmasap y los compbalance.
Implementación del analizador (parser) que procesa un tag de cierre en la primera pasada.
En el segundo paso se hacen las inserciones por el flanco de final en lugar de por el flanco de principio. Así nos aseguramos que ya existen los valores de idmpatrimonial y masaperteneciente.
Como la inserción está hecha, podemos hacer los updates sin miedo a que no exista el registro.
Actualizamos el idmasapatrimonial del compmasap, que es el que más dolores de cabeza causa.
Con los componentes del balance también intervienen las masas patrimoniales.
Definition at line 211 of file importbalance.cpp.
References _depura(), postgresiface2::begin(), postgresiface2::cargacursor(), postgresiface2::commit(), postgresiface2::ejecuta(), PEmpresaBase::empresaBase(), cursor2::eof(), m_data, m_identmasasp, m_tag, m_tvalores, TRUE, and cursor2::valor().
Referenced by endElement().
00211 { 00212 _depura("ImportBalance::endElement2", 0); 00213 m_tag = qName; 00214 QString SQLQuery; 00219 if (m_tag == "compmasap") { 00220 SQLQuery.sprintf("INSERT INTO compmasap (masaperteneciente) VALUES (%s)\n", empresaBase()->sanearCadena(m_identmasasp[m_tvalores["masaperteneciente"]]).toAscii().constData()); 00221 empresaBase()->begin(); 00222 empresaBase()->ejecuta(SQLQuery); 00223 SQLQuery = "SELECT max(idcompmasap) AS idcompmasap FROM compmasap"; 00224 cursor2 *cur = empresaBase()->cargacursor(SQLQuery, "unquerymas"); 00225 empresaBase()->commit(); 00226 if (!cur->eof()) { 00227 m_tvalores["idcompmasap"] = cur->valor("idcompmasap"); 00228 } // end if 00229 delete cur; 00230 } // end if 00231 if (m_tag == "compbalance") { 00232 SQLQuery.sprintf("INSERT INTO compbalance (idbalance) VALUES (%s)\n", empresaBase()->sanearCadena(m_tvalores["idbalance"]).toAscii().constData()); 00233 empresaBase()->begin(); 00234 empresaBase()->ejecuta(SQLQuery); 00235 SQLQuery = "SELECT max(idcompbalance) AS idcompbalance FROM compbalance"; 00236 cursor2 *cur = empresaBase()->cargacursor(SQLQuery, "unquerymas"); 00237 empresaBase()->commit(); 00238 if (!cur->eof()) { 00239 m_tvalores["idcompbalance"] = cur->valor("idcompbalance"); 00240 } // end if 00241 delete cur; 00242 } // end if 00245 if (m_tag == "compmasap") { 00248 if (m_tvalores["idmpatrimonial"] != "" && m_tvalores["codigo"] == "") { 00249 SQLQuery.sprintf("UPDATE compmasap SET idmpatrimonial = %s WHERE idcompmasap = %s\n", empresaBase()->sanearCadena(m_identmasasp[m_tvalores["idmpatrimonial"]]).toAscii().constData(), empresaBase()->sanearCadena(m_tvalores["idcompmasap"]).toAscii().constData()); 00250 empresaBase()->begin(); 00251 empresaBase()->ejecuta(SQLQuery); 00252 empresaBase()->commit(); 00253 } // end if 00254 if (m_tvalores["codigo"] != "") { 00255 SQLQuery.sprintf("UPDATE compmasap SET idcuenta = id_cuenta('%s') WHERE idcompmasap = %s\n", 00256 empresaBase()->sanearCadena(m_tvalores["codigo"]).toAscii().constData(), 00257 empresaBase()->sanearCadena(m_tvalores["idcompmasap"]).toAscii().constData()); 00258 empresaBase()->begin(); 00259 empresaBase()->ejecuta(SQLQuery); 00260 empresaBase()->commit(); 00261 } // end if 00262 SQLQuery.sprintf("UPDATE compmasap SET signo = '%s' WHERE idcompmasap = %s\n", 00263 empresaBase()->sanearCadena(m_tvalores["signo"]).toAscii().constData(), 00264 empresaBase()->sanearCadena(m_tvalores["idcompmasap"]).toAscii().constData()); 00265 empresaBase()->begin(); 00266 empresaBase()->ejecuta(SQLQuery); 00267 empresaBase()->commit(); 00268 SQLQuery.sprintf("UPDATE compmasap SET nombre = '%s' WHERE idcompmasap = %s\n", 00269 empresaBase()->sanearCadena(m_tvalores["nombre"]).toAscii().constData(), 00270 empresaBase()->sanearCadena(m_tvalores["idcompmasap"]).toAscii().constData()); 00271 empresaBase()->begin(); 00272 empresaBase()->ejecuta(SQLQuery); 00273 empresaBase()->commit(); 00274 m_tvalores["codigo"] = ""; 00275 m_tvalores["idmpatrimonial"] = ""; 00276 } // end if 00277 if (m_tag == "compbalance") { 00279 SQLQuery.sprintf("UPDATE compbalance SET idmpatrimonial = %s WHERE idcompbalance = %s\n", 00280 empresaBase()->sanearCadena(m_identmasasp[m_tvalores["idmpatrimonial"]]).toAscii().constData(), 00281 empresaBase()->sanearCadena(m_tvalores["idcompbalance"]).toAscii().constData()); 00282 empresaBase()->begin(); 00283 empresaBase()->ejecuta(SQLQuery); 00284 empresaBase()->commit(); 00285 SQLQuery.sprintf("UPDATE compbalance SET orden = %s WHERE idcompbalance = %s\n", 00286 empresaBase()->sanearCadena(m_tvalores["orden"]).toAscii().constData(), 00287 empresaBase()->sanearCadena(m_tvalores["idcompbalance"]).toAscii().constData()); 00288 empresaBase()->begin(); 00289 empresaBase()->ejecuta(SQLQuery); 00290 empresaBase()->commit(); 00291 SQLQuery.sprintf("UPDATE compbalance SET concepto = '%s' WHERE idcompbalance = %s\n", 00292 empresaBase()->sanearCadena(m_tvalores["concepto"]).toAscii().constData(), 00293 empresaBase()->sanearCadena(m_tvalores["idcompbalance"]).toAscii().constData()); 00294 empresaBase()->begin(); 00295 empresaBase()->ejecuta(SQLQuery); 00296 empresaBase()->commit(); 00297 SQLQuery.sprintf("UPDATE compbalance SET tabulacion = %s WHERE idcompbalance = %s\n", 00298 empresaBase()->sanearCadena(m_tvalores["tabulacion"]).toAscii().constData(), 00299 empresaBase()->sanearCadena(m_tvalores["idcompbalance"]).toAscii().constData()); 00300 empresaBase()->begin(); 00301 empresaBase()->ejecuta(SQLQuery); 00302 empresaBase()->commit(); 00303 m_tvalores["codigo"] = ""; 00304 m_tvalores["idmpatrimonial"] = ""; 00305 } // end if 00306 m_tag=""; 00307 m_data=""; 00308 _depura("END ImportBalance::endElement2", 0); 00309 return TRUE; 00310 }
| bool ImportBalance::characters | ( | const QString & | ch | ) |
Recoge valores asignados a un determinado tag y los almacena en la variable m_data.
Para que pueda ser utilizado posteriormente
| ch | El valor del tag abierto. |
Definition at line 318 of file importbalance.cpp.
References _depura(), m_data, m_tag, m_tvalores, and TRUE.
00318 { 00319 _depura("ImportBalance::characters", 0); 00320 if (m_tag != "") { 00321 m_data =ch; 00322 m_tvalores[m_tag] = m_data; 00323 } // end if 00324 _depura("END ImportBalance::characters", 0); 00325 return TRUE; 00326 }
| void ImportBalance::cambiapaso | ( | ) |
Cambia de numero de paso. Recordar que en este caso la importación se hace en dos pasos.
Definition at line 43 of file importbalance.cpp.
References m_paso.
00043 { 00044 m_paso = 1; 00045 }
QString ImportBalance::m_tag [private] |
Esta variable global indica siempre el tag que está procesando el parser.
Definition at line 43 of file importbalance.h.
Referenced by characters(), endElement1(), endElement2(), ImportBalance(), startElement1(), and startElement2().
QString ImportBalance::m_data [private] |
Esta variable global indica la información que se acaba de recolectar en el parser. De modo que al llegar a un tag de cierre siempre sea m_data quien tenga el valor introducido para poder utilizarlo.
Definition at line 47 of file importbalance.h.
Referenced by characters(), endElement1(), endElement2(), and ImportBalance().
QMap<QString, QString> ImportBalance::m_tvalores [private] |
En este mapa se almacenan los valores que se van rescatando del XML, de tal forma que al llegar a un tag de cierre importante se recuperen de aquí los datos a ser introducidos en la base de datos.
Definition at line 51 of file importbalance.h.
Referenced by characters(), endElement1(), endElement2(), and startElement1().
QMap<QString, QString> ImportBalance::m_identmasasp [private] |
Este hash sirve para almacenar las claves provisionales de las masas patrimoniales.
Definition at line 55 of file importbalance.h.
Referenced by endElement1(), and endElement2().
int ImportBalance::m_paso [private] |
Indica que paso estamos realizando. Recordemos que en esta ocasión se hacen dos pasadas de analizador (parser) para hacer la importación completamente.
Definition at line 58 of file importbalance.h.
Referenced by cambiapaso(), endElement(), ImportBalance(), and startElement().
1.5.1