Esempio n. 1
0
def mkTotales(texto):
    """ Obtiene los totales de un archivo sua.

    :param texto: Línea de texto tipo 4 de un archivo sua.
    """
    lns = (58, 9, 9, 9, 9, 9, 9, 9, 11, 9, 9, 9, 9, 11, 9, 9, 11, 9, 9, 9, 9,
           9)
    l = Sp.splitLens(texto, lns)
    l = [l[0]] + [int(x) / 100.0 for x in l[1:]]
    mensual = Sp.list2dict(
        l, ("cf", "exc", "pd", "gmp", "rt", "iv", "gps", "subt", "act", "rec"),
        (1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
    mensual["total"] = sum(l[1:11]) - l[8]
    rcv = Sp.list2dict(l, ("retiro", "cyv", "subt", "act", "rec"),
                       (11, 12, 13, 14, 15))
    rcv["total"] = sum(l[14:16]) + rcv["subt"]
    infonavit = Sp.list2dict(l, ("sin", "con", "amort", "act", "rec"),
                             (17, 18, 19, 20, 21))
    infonavit["subt"] = sum(l[17:20])
    infonavit["total"] = sum(l[17:22])
    d = {}
    d["total"] = mensual["total"] + rcv["total"] + infonavit["total"]
    d["mensual"] = mensual
    d["rcv"] = rcv
    d["infonavit"] = infonavit
    return d
Esempio n. 2
0
def mkHeader(texto):
    """ Separa una línea de texto en longitudes específicas.

    :param texto: Texto a procesar. Se llama con la primera línea (virtual)
                  de un archivo sua.
    """
    lns = (2, 11, 13, 4, 2, 6, 50, 102, 7, 50, 1, 13, 7)
    return Sp.splitLens(texto, lns)
Esempio n. 3
0
def prsBteEnvioDet(txt):
    lens = (1, 10, 20, 20, 20, 5, 2, 19, 2, 24, 7, 2, 2, 2, 4, 40, 3, 2, 5, 12,
            1, 8, 3, 1, 1, 3, 3, 2, 13, 18, 2, 1, 16, 4, 3, 2, 18, 4, 1, 15,
            16, 10)
    rec = Sp.subLista(Sp.splitLens(txt, lens), (1, 2, 3, 4, 5, 28, 29, 32, 30))
    rec[0] = str(int(rec[0]))
    rec[1:4] = list(map(lambda x: x.strip(), rec[1:4]))
    rec[4] = str(int(rec[4]))
    return rec
Esempio n. 4
0
def prsBteRespDet(txt):
    lens = (1, 10, 20, 20, 20, 5, 13, 2, 1, 16, 4, 3, 2, 18, 4, 2, 8)
    rec = Sp.subLista(Sp.splitLens(txt, lens),
                      (1, 2, 3, 4, 5, 6, 7, 9, 13, 15))
    rec[0] = str(int(rec[0]))
    rec[1:4] = list(map(lambda x: x.strip(), rec[1:4]))
    rec[8] = rec[8][-10:]
    rec[4] = str(int(rec[4]))
    return rec
Esempio n. 5
0
def mkMovs(datos):
    """ Procesa las línesa tipo 3 de un archivo sua.

    :param datos: Lista de líneas de texto.
    :returns: Lista de movimientos.
    La longitud de un campo de movimientos es 38.
    """
    lnRec = 38
    lns = (11, 2, 8, 8, 2, 7)
    mvs = [x[13:].strip() for x in datos]
    movs = []
    for x in mvs:
        l = Sp.splitEqual(x, lnRec)
        movs += [Sp.splitLens(r, lns) for r in l]
    return movs
Esempio n. 6
0
def mkCuotas(datos):
    """ Analiza las líneas de tipo 2 de un archivo sua.

    :param datos: Lista de líneas de texto.

    Se llama con las líneas virtuales del archivo sua que empiezan con "02.
    """

    lns = (26, 4, 2, 11, 13, 18, 10, 8, 2, 50, 7, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7,
           7, 7, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7)
    l = [Sp.splitLens(x, lns) for x in datos]
    l = [mkCuotasTrab(x) for x in l]
    d = {}
    for x in l:
        d[x["afil"]] = x
    return d
Esempio n. 7
0
def prsBteRespHdr(txt):
    return Sp.subLista(Sp.splitLens(txt, (1, 5, 40, 2, 6, 95)), (1, 2, 3, 4))
Esempio n. 8
0
def prsBteEnvioHdr(txt):
    return Sp.subLista(Sp.splitLens(txt, (1, 2, 8, 5, 40, 2, 6)), (3, 4, 5, 6))