All pastes #283972 Raw Edit

Something

public text v1 · immutable
#283972 ·published 2006-12-18 19:46 UTC
rendered paste body
#define EURO  166.386
#define S_EURO  "166.386"

#define LEN_CODIGO_CUENTA 12
#define LEN_TITULO  40
#define LEN_NIF  15
#define LEN_DOMICILIO  35
#define LEN_POBLACION  25
#define LEN_PROVINCIA  20
#define LEN_CODPOSTAL  5
#define LEN_DIVISA  1
#define LEN_CTA_CODDIVISA  5
#define LEN_CTA_DOCUMENTO  1
#define LEN_AJUSTAME  1
#define LEN_TIPOIVA  1

#define LEN_ASIEN  6
#define LEN_FECHA  8
#define LEN_SUBCTA  12
#define LEN_CONTRA  12
#define LEN_PTADEBE  16
#define LEN_CONCEPTO  25
#define LEN_PTAHABER  16
#define LEN_FACTURA  8
#define LEN_BASEIMPO  16
#define LEN_IVA  5
#define LEN_RECEQUIV  5
#define LEN_DOCUMENTO  10
#define LEN_DEPARTA  3
#define LEN_CLAVE  6
#define LEN_ESTADO  1
#define LEN_NCASADO  6
#define LEN_TCASADO  1
#define LEN_TRANS  6
#define LEN_CAMBIO  16
#define LEN_DEBEME  16
#define LEN_HABERME  16
#define LEN_AUXILIAR  1
#define LEN_SERIE  1
#define LEN_SUCURSAL  4
#define LEN_CODDIVISA  5
#define LEN_IMPAUXME  16
#define LEN_MONEDAUSO  1
#define LEN_EURODEBE  16
#define LEN_EUROHABER  16
#define LEN_BASEEURO  16
#define LEN_NOCONV  1
#define LEN_NUMEROINV  10



/// Pasa archivos de Contaplus a BulmaGes
int pgimportfiles::contaplus2Bulmages(QFile &subcuentas, QFile &asientos) {
    QString idasiento;
    QString lopd_str, cuenta_str;
    QString debe, haber;
    QString query;
    QDate fecha1;
    QDate fechain(1, 1, 1);
    QDate fechafi(2999, 12, 31);
    int orden = 0;
    if (m_fInicial != "")
        fechain.setYMD(m_fInicial.mid(6, 4).toInt(), m_fInicial.mid(3, 2).toInt(), m_fInicial.mid(0, 2).toInt());
    if (m_fFinal != "")
        fechafi.setYMD(m_fFinal.mid(6, 4).toInt(), m_fFinal.mid(3, 2).toInt(), m_fFinal.mid(0, 2).toInt());
    /// Subcuentas.
    QTextStream stream(&subcuentas);
    while (!subcuentas.atEnd()) {
        alerta(subcuentas.pos() + asientos.pos(), subcuentas.size() + asientos.size());
        QString line = stream.readLine();
        if (line.length() < 2)
            break;
        int pos = 0;
        QString cod = line.mid(pos, LEN_CODIGO_CUENTA).trimmed();
        pos += LEN_CODIGO_CUENTA;
        QString titulo = line.mid(pos, LEN_TITULO).trimmed();
        pos += LEN_TITULO;
        QString nif = line.mid(pos, LEN_NIF).trimmed();
        pos += LEN_NIF;
        QString domicilio = line.mid(pos, LEN_DOMICILIO).trimmed();
        pos += LEN_DOMICILIO;
        QString poblacion = line.mid(pos,LEN_POBLACION).trimmed();
        pos += LEN_POBLACION;
        QString provincia = line.mid(pos, LEN_PROVINCIA).trimmed();
        pos += LEN_PROVINCIA;
        QString codpostal = line.mid(pos, LEN_CODPOSTAL).trimmed();
        pos += LEN_CODPOSTAL;
        QString divisa = line.mid(pos, LEN_DIVISA).trimmed();
        pos += LEN_DIVISA;
        QString cta_coddivisa = line.mid(pos, LEN_CTA_CODDIVISA).trimmed();
        pos += LEN_CTA_CODDIVISA;
        QString cta_documento = line.mid(pos, LEN_CTA_DOCUMENTO).trimmed();
        pos += LEN_CTA_DOCUMENTO;
        QString ajustame = line.mid(pos, LEN_AJUSTAME).trimmed();
        pos += LEN_AJUSTAME;
        QString tipoiva = line.mid(pos, LEN_TIPOIVA).trimmed();
        pos += LEN_TIPOIVA;
        /// Antes de hacer una insercion comprobamos que la cuenta no exista ya en el sistema.
        QString query = "SELECT * FROM cuenta WHERE codigo = '" + cod + "'";
        conexionbase->begin();
        cursor2 *cursaux=conexionbase->cargacursor(query, "hol");
        conexionbase->commit();
        if (cursaux->eof()) {
            if(!cod.isEmpty()) {
                QString padre = searchParent(cod);
                QString idgrupo = cod.left(1);
                query = "INSERT INTO cuenta (imputacion, activo, tipocuenta, codigo, descripcion, cifent_cuenta, padre, idgrupo, nombreent_cuenta, dirent_cuenta, telent_cuenta, coment_cuenta, bancoent_cuenta, emailent_cuenta, webent_cuenta) VALUES  (TRUE, TRUE, 1,'" + cod + "', '" + titulo + "', '" + nif + "', " + padre + ", " + idgrupo + ", 'importada de ContaPlus','" + domicilio + poblacion + provincia + codpostal + "','','','','','')";
                conexionbase->begin();
                int error = conexionbase->ejecuta(query);
                if (error) {
                    conexionbase->rollback();
                    return 1;
                } // end if
                conexionbase->commit();
                mensajeria(theApp->translate("pgimportfiles", "<LI>Se ha insertado la cuenta ") + cod + "</LI>\n");
            } // end if
        } else {
            mensajeria(theApp->translate("pgimportfiles", "<LI>Ya hay una cuenta con el codigo ") + cod + "</LI>\n");
        } // end if
        delete cursaux;
    } // end while

    QTextStream stream2(&asientos);
    QString lastasiento = "0";
    int napunte = 0;
    while (!asientos.atEnd()) {
        alerta(subcuentas.pos() + asientos.pos(), subcuentas.size() + asientos.size());
        QString line = stream2.readLine();
        if (line.length() < 2)
            break;
        int pos = 0;
        QString asiento = line.mid(pos, LEN_ASIEN).trimmed();
        pos += LEN_ASIEN;
        QString fecha = line.mid(pos, LEN_FECHA).trimmed();
        fecha1.setYMD(fecha.mid(0, 4).toInt(), fecha.mid(4, 2).toInt(), fecha.mid(6, 2).toInt());
        fecha = fecha.mid(0, 4) + "-" + fecha.mid(4, 2) + "-" + fecha.mid(6, 2);
        pos += LEN_FECHA;
        QString subcta = line.mid(pos, LEN_SUBCTA).trimmed();
        pos += LEN_SUBCTA;
        QString contra = line.mid(pos, LEN_CONTRA).trimmed();
        pos += LEN_CONTRA;
        QString ptadebe = line.mid(pos, LEN_PTADEBE).trimmed();
        pos += LEN_PTADEBE;
        QString concepto = line.mid(pos, LEN_CONCEPTO).trimmed();
        pos += LEN_CONCEPTO;
        QString ptahaber = line.mid(pos, LEN_PTAHABER).trimmed();
        pos += LEN_PTAHABER;
        QString factura = line.mid(pos, LEN_FACTURA).trimmed();
        pos += LEN_FACTURA;
        QString baseimpo = line.mid(pos, LEN_BASEIMPO).trimmed();
        pos += LEN_BASEIMPO;
        QString iva = line.mid(pos, LEN_IVA).trimmed();
        pos += LEN_IVA;
        QString recequiv = line.mid(pos, LEN_RECEQUIV).trimmed();
        pos += LEN_RECEQUIV;
        QString documento = line.mid(pos, LEN_DOCUMENTO).trimmed();
        pos += LEN_DOCUMENTO;
        QString departa = line.mid(pos, LEN_DEPARTA).trimmed();
        pos += LEN_DEPARTA;
        QString clave = line.mid(pos, LEN_CLAVE).trimmed();
        pos += LEN_CLAVE;
        QString estado = line.mid(pos, LEN_ESTADO).trimmed();
        pos += LEN_ESTADO;
        QString ncasado = line.mid(pos, LEN_NCASADO).trimmed();
        pos += LEN_NCASADO;
        QString tcasado = line.mid(pos, LEN_TCASADO).trimmed();
        pos += LEN_TCASADO;
        QString trans = line.mid(pos, LEN_TRANS).trimmed();
        pos += LEN_TRANS;
        QString cambio = line.mid(pos, LEN_CAMBIO).trimmed();
        pos += LEN_CAMBIO;
        QString debeme = line.mid(pos, LEN_DEBEME).trimmed();
        pos += LEN_DEBEME;
        QString haberme = line.mid(pos, LEN_HABERME).trimmed();
        pos += LEN_HABERME;
        QString auxiliar = line.mid(pos, LEN_AUXILIAR).trimmed();
        pos += LEN_AUXILIAR;
        QString serie = line.mid(pos, LEN_SERIE).trimmed();
        pos += LEN_SERIE;
        QString sucursal = line.mid(pos, LEN_SUCURSAL).trimmed();
        pos += LEN_SUCURSAL;
        QString coddivisa = line.mid(pos, LEN_CODDIVISA).trimmed();
        pos += LEN_CODDIVISA;
        QString impauxme = line.mid(pos, LEN_IMPAUXME).trimmed();
        pos += LEN_IMPAUXME;
        QString monedauso = line.mid(pos, LEN_MONEDAUSO).trimmed();
        pos += LEN_MONEDAUSO;
        QString eurodebe = line.mid(pos, LEN_EURODEBE).trimmed();
        pos += LEN_EURODEBE;
        QString eurohaber = line.mid(pos, LEN_EUROHABER).trimmed();
        pos += LEN_EUROHABER;
        QString baseeuro = line.mid(pos, LEN_BASEEURO).trimmed();
        pos += LEN_BASEEURO;
        QString noconv = line.mid(pos, LEN_NOCONV).trimmed();
        pos += LEN_NOCONV;
        QString numeroinv = line.mid(pos, LEN_NUMEROINV).trimmed();
        pos += LEN_NUMEROINV;

        if (asiento != lastasiento) {
            if (lastasiento != "0") {
                query = "SELECT cierraasiento(" + idasiento + ")";
                if (!modoTest()) {
                    conexionbase->begin();
                    cursor2 * cur = conexionbase->cargacursor(query, "hola");
                    conexionbase->commit();
                    delete cur;
                } // end if
            } // end if
            if (fecha1 >= fechain && fecha1 <= fechafi) {
                query="INSERT INTO asiento (fecha, comentariosasiento, clase) VALUES ('" + fecha + "','Importado de Contaplus', 1 )";
                conexionbase->begin();
                if (!modoTest()) {
                    int error = conexionbase->ejecuta(query);
                    if (error) {
                        conexionbase->rollback();
                        return 1;
                    } // end if
                } // end if
                query = "SELECT max(idasiento) as idasiento FROM asiento";
                cursor2 *cur=conexionbase->cargacursor(query);
                idasiento = cur->valor("idasiento");
                conexionbase->commit();
                delete cur;
                napunte = 0;
                lastasiento = asiento;
                orden = 0;
                mensajeria(theApp->translate("pgimportfiles","<LI>Insercion de asiento") + idasiento + "</LI>\n");
            } // end if
        } // end if
        napunte++;
        if (monedauso == "1") { /// Ptas.
            /// Aqui esta el peor error cometido, usar punto flotante
            debe = ptahaber + "/" + S_EURO;
            haber = ptadebe + "/" + S_EURO;
        } else {
            debe = eurodebe;
            haber = eurohaber;
        } // end if
        query = "SELECT * FROM cuenta WHERE codigo = '" + subcta + "'";
        conexionbase->begin();
        cursor2 *cur=conexionbase->cargacursor(query, "elquery");
        conexionbase->commit();
        if (!cur->eof()) {
            if (fecha1 >= fechain && fecha1 <= fechafi) {
                if (!modoTest() ) {
                    query = "INSERT INTO borrador (idasiento, idcuenta, fecha, conceptocontable, debe, haber, orden) VALUES (" + idasiento + ", id_cuenta('" + subcta + "'), '" + fecha + "','" + concepto + "'," + debe + "," + haber + "," + QString::number(orden++) + " )";
                    conexionbase->begin();
                    int error = conexionbase->ejecuta(query);
                    if (error) {
                        conexionbase->rollback();
                        return 1;
                    } // end if
                    conexionbase->commit();
                } // end if
                mensajeria(theApp->translate("pgimportfiles", "<LI>Insercion de apunte") + subcta + "," + concepto + "</LI>\n");
            } else {
                mensajeria(theApp->translate("pgimportfiles", "<LI>Apunte fuera de fecha</LI>\n"));
            } // end if
        } // end if
    } // end while
    if (lastasiento != "0") {
        if(!modoTest()) {
            query = "SELECT cierraasiento(" + idasiento + ")";
            cursor2 * cur = conexionbase->cargacursor(query);
            delete cur;
        } // end if
    } // end if
    mensajeria(theApp->translate("pgimportfiles", "<LI>Terminado</LI>\n"));
    alerta(subcuentas.size() + asientos.size(), subcuentas.size() + asientos.size());
    return 0;
}