Beispiel #1
0
    def _make_PGServer(self, data_path):
        """initialize a database instance, and start the database service

        ..note:
          before start the service, some parameters in configuration should
          be added or changed, they are mainly used to turn on enough logs
        """
        logger.info('TestMode:check,try to start a PG server......')
        DBServer.initDB(data_path)
        DBServer.set_dbconf(
            data_path,
            port=_PORT,
            log_autovacuum_min_duration='0',
            log_checkpoints='on',
            #log_line_prefix="'%m [%p] %q%a '",
            log_lock_waits='on',
            log_temp_files='128kB',
            max_prepared_transactions='2')
        logger.info('TestMode:check,DONE to config file......')

        self.server = DBServer.start(data_path, self.checker._logs_dir)

        while not self.server.is_ready():
            logger.debug("keep trying to start the PostgreSQL service")
            time.sleep(1)

        logger.info('PG server is ready,start to run test......')
Beispiel #2
0
    def _clear_PGServer(self, data_path):
        #DBServer.stopDB(self.server,data_path)
        logger.info('TestMode:check,try to stop PG server......')
        DBServer.stopDB(data_path, self.checker._logs_dir)
        DBServer.removeDB(data_path)
        if DBServer.check_database_data_exist(data_path):
            raise Exception("fail to remove the DB data")

        logger.info('PG server is cleared')
Beispiel #3
0
def devolverCuentas():
    db = DBServer()

    ejercicio = request.json['ejercicio']

    orden = "Select cuenta,nro_cuenta,num_sucursal from cta_cuentas where ejercicio = {} and cod_banco = 'BP' "
    datos = db.contestarQuery(orden.format(ejercicio))

    datosFinales = []
    for cuenta in datos:
        datosFinales.append({
            'nro_cuenta': cuenta[0],
            'cuenta': cuenta[1],
            'sucursal': cuenta[2],
        })

    return dumps(datosFinales)
def _actualizarCabecera(nroresumen,saldoanterior,salida):

    db = DBServer()

    orden = 'update tes_resumenes_bancarios set saldo_ant = {} where numero = {}'.format(saldoanterior,nroresumen)
    salida.write(orden + '\n')
    db.contestarQuery(orden,None,False)
    db.aceptarCambios()

    db.desconectar()
Beispiel #5
0
#coding:utf8

import os
if os.name != 'nt' and os.name != 'posix':
    from twisted.internet import epollreactor
    epollreactor.install()

import json
from dbserver import DBServer

if __name__ == "__main__":

    servername = "dbfront"
    config = json.load(open("config.json", 'r'))

    dbconf = config.get('db')
    memconf = config.get('memcached')
    sersconf = config.get('servers', {})
    masterconf = config.get('master', {})
    serconfig = sersconf.get(servername)

    ser = DBServer()
    ser.config(serconfig,
               dbconfig=dbconf,
               memconfig=memconf,
               masterconf=masterconf)
    ser.start()
Beispiel #6
0
# coding:utf8

import os

if os.name != "nt" and os.name != "posix":
    from twisted.internet import epollreactor

    epollreactor.install()

import json
from dbserver import DBServer

if __name__ == "__main__":

    servername = "dbfront"
    config = json.load(open("config.json", "r"))

    dbconf = config.get("db")
    memconf = config.get("memcached")
    sersconf = config.get("servers", {})
    masterconf = config.get("master", {})
    serconfig = sersconf.get(servername)

    ser = DBServer()
    ser.config(serconfig, dbconfig=dbconf, memconfig=memconf, masterconf=masterconf)
    ser.start()
Beispiel #7
0
def _leerArchivo(entrada, resumen, hasta, salida):

    db = DBServer()

    lista = []

    ordenTipos = "SELECT COMPROB_TIPO,ABREV_BANCARIA FROM TES_TIPO_MOVIMIENTOS_CONC WHERE CODIGO = '{}'"

    orden = 'INSERT INTO TES_RESUMENES_BANCARIOS_MOV(NUMERO,FECHA,ORDEN,COMPROB_TIPO,COMPROB_NRO,COD_MOV,DEBITO,CREDITO,SALDO,ESTADO,ORIGEN_TIPO,ORIGEN_NRO,FECHA_CONCILIA)\
    VALUES({resumen},TO_DATE(\'{fecha}\',\'DD/MM/YYYY\'),{indice},\'{tipo}\',{comprobantenro},\'{tipomov}\',{debito},{credito},0,\'N\',\'{codbanco}\',{valorextra},NULL)'

    saldoanterior = 0

    indice = 0
    for linearaw in entrada:
        indice += 1
        if (indice < 11):
            continue

        dic = {}
        linea = linearaw.split(',')
        if (len(linea) <= 1):
            continue

        if (linea[POSTIPO] == 'SALDO ANTERIOR'):
            saldoanterior = float(linea[ESTADOCAJA])
            continue

        fecha = linea[POSFECHA]

        fechaObj = datetime.datetime.strptime(fecha, '%d/%m/%Y')
        if (fechaObj > datetime.datetime.strptime(hasta, '%d/%m/%Y')):
            continue

        signo = linea[MONTO][0]
        monto = linea[MONTO].replace('-', '')
        tipo = linea[POSTIPO]

        #comparo los tipos exclusivos
        for clave in EQUIVALENCIAS.keys():

            if (clave in tipo):

                if (EQUIVALENCIAS[clave] == 'CM'):
                    valorExtra = tipo[len(clave):len(clave) + 9].replace(
                        '\n', '').replace(' ', '')
                    comprobantenro = valorExtra

                elif (clave == 'BIP DB.TR.'):
                    valorExtra = tipo[len(clave) + 8:len(clave) + 15].replace(
                        ' ', '')
                    comprobantenro = valorExtra

                else:
                    valorExtra = tipo[len(clave) + 8:len(clave) + 20].replace(
                        '\n', '')
                    comprobantenro = valorExtra

                equivalencia = EQUIVALENCIAS[clave]
                break
            else:

                if (signo == '-'):
                    equivalencia = 'DEB'
                else:
                    equivalencia = 'CRED'

                comprobantenro = indice
                valorExtra = indice

        tipo, codbanco = db.contestarQuery(ordenTipos.format(equivalencia))[0]

        dic['fecha'] = fecha
        debito, credito = (monto, 0) if signo == '-' else (0, monto)
        dic['debito'] = float(debito)
        dic['credito'] = float(credito)
        dic['indice'] = indice
        dic['resumen'] = resumen
        dic['tipo'] = tipo
        dic['codbanco'] = codbanco
        dic['valorextra'] = valorExtra
        dic['tipomov'] = equivalencia
        dic['comprobantenro'] = comprobantenro

        salida.write(orden.format(**dic) + '\n')
        db.contestarQuery(orden.format(**dic), None, False)
        db.aceptarCambios()

        lista.append(orden.format(**dic))

    db.desconectar()
    return lista, saldoanterior
Beispiel #8
0
def _generarCabecera(desde, hasta, cuentabanco, cuentacontable, sucursal,
                     salida):

    db = DBServer()

    ordenConsulta = "select numero from tes_resumenes_bancarios where numero like '{}{}%' order by numero DESC".format(
        desde[8:], desde[3:5])
    nroresumen = db.contestarQuery(ordenConsulta)
    print nroresumen
    nroBase = int('{}{}000'.format(desde[8:], desde[3:5]))
    if (len(nroresumen) < 1):
        nroresumen = int('{}{}001'.format(desde[8:], desde[3:5]))
    else:
        if (nroresumen[0][0] > 1000000):
            nroresumen = nroresumen[0][0] + 1
        else:
            nroresumen = int('{}{}001'.format(desde[8:], desde[3:5]))

    ordenCabecera = "INSERT INTO TES_RESUMENES_BANCARIOS( NUMERO, FECHA, PERIODO1, PERIODO2, BANCO, SUCURSAL, CUENTA, CUENTA_BAN, SALDO_ANT)\
         values({},{},TO_DATE('{}',\'DD/MM/YYYY\'),TO_DATE('{}',\'DD/MM/YYYY\'),'{}','{}','{}','{}',{})".format(
        nroresumen, 'SYSDATE', desde, hasta, 'BP', sucursal, cuentacontable,
        cuentabanco, 0)

    print db.contestarQuery('select sysdate from dual')
    salida.write(ordenCabecera + '\n')
    print ordenCabecera
    db.contestarQuery(ordenCabecera, None, False)
    db.aceptarCambios()

    db.desconectar()
    return nroresumen