예제 #1
0
def chequeXCedula(ci, llCh=None):
    'Maneja la lista de cheques y muestra los cheques en transito de un socio.'
    global lCh
    if None == llCh: llCh = lCh

    if 0 >= ci: return -2

    lCheq = [l for l in llCh
             if '' != l[2] and ci == int(l[2])]  # Nueva lista de cheques.
    if not lCheq:
        ES.alerta(
            droid, 'CHEQUE x CEDULA', "No hay cheque en transito con cedula "
            "%s!" % FG.formateaNumero(ci))
        return -2
    nCheques = len(lCheq)
    if 1 == nCheques:
        return mCheque(lCheq[0])
#  lCheq = map(creaOp, lCheq)  # En vez de list 'comprehensions', como en lCheques.
    lCheqO = list(
        map(COM.creaOp,
            lCheq))  # En vez de list 'comprehensions', como en lCheques.
    indice = ES.entradaConLista(droid, 'CHEQUES ENCONTRADOS: ' + str(nCheques),
                                'Seleccione cheque', lCheqO)
    if None == indice or 0 > indice: return -2
    mCheque(lCheq[indice])
예제 #2
0
def depositos():
    '''Maneja la lista de cheques y muestra los depositos de
    una fecha especifica.'''
    global lCh

    sFecha = ES.entradaFechaLocal(droid)

    lDep = [
        l for l in lCh if '' != l[2] and 6 <= len(l[1]) and sFecha == l[4]
    ]  # Nueva lista de cheques. Solo depositos (# cheque > 100000)
    if not lDep:
        ES.alerta(droid, 'DEPOSITOS X FECHA',
                  "No hay depositos en esa fecha %s!" % sFecha)
        return -3
    nlDep = len(lDep)
    if 1 == nlDep:
        return mCheque(lDep[0])
#  print("Numero de item en arreglo: %5d\n" % nlDep)
#  lCheq = map(creaOp, lDep)  # En vez de list 'comprehensions', como en lCheques.
    lCheq = list(
        map(COM.creaOp,
            lDep))  # En vez de list 'comprehensions', como en lCheques.
    indice = ES.entradaConLista(droid, 'DEPOSITOS ENCONTRADOS: ' + str(nlDep),
                                'Seleccione deposito', lCheq)
    if None == indice or 0 > indice: return -3
    mCheque(lDep[indice])
예제 #3
0
def cheque():
    '''Maneja la lista de cheques y muestra la informacion de uno o
    varios cheque(s).'''
    global lCh

    ch = ES.entradaNumero(droid, "CHEQUE", "Numero de cheque", "0", True, True)
    if None == ch or 0 > ch:
        ES.alerta(droid, 'CHEQUE', "Cheque no encontrado!")
        return None
    if 0 == ch:
        nCh = lCheques()
        if not nCh: return None
        else:
            mCheque(nCh)
            return None
    bEnc = False
    for l in lCh:
        if ch > int(l[1]): continue
        elif ch == int(l[1]):
            bEnc = True
            mCheque(l)
    # return	# Comentada para poder mostrar mas de un cheque con el mismo numero.
        else:
            break
    # Fin for
    if not bEnc:
        ES.alerta(droid, 'CHEQUE', "El cheque %5d no fue encontrado." % ch)
    return None
예제 #4
0
def mNombre(ci):

    try:
        sNombre = dPer.get(str(ci), "NO")
    except UnicodeError:
        sNombre = "UnicodeError: " + ci
    if ("NO" == sNombre):
        sNombre = "NO ENCONTRE EL NOMBRE"
        ES.alerta(droid, 'SOCIO ERROR', FG.formateaNumero(ci) + ', ' + sNombre)
    return sNombre
예제 #5
0
  def cargarNombres(nombArch='IPER*.TXT'):
    rutaDatos = DIR

    lFiles = [f for f in listdir(rutaDatos) if isfile(join(rutaDatos, f)) and 
                                                fnmatch.fnmatch(f, nombArch)]
    lFiles.sort()

    if not lFiles:
      ES.alerta(droid, nombArch, "No hubo coincidencias!")
      return None
    return lFiles
예제 #6
0
def buscarNombre():
    global dPer

    nombre = ES.entradaNombre(droid, 'Nombre del socio')
    if None == nombre:
        return -10, None
    nombres = []
    cedulas = []
    try:
        for k, v in dPer.items():
            if 0 <= v.lower().find(nombre.lower()):
                nombres.append(v)
                cedulas.append(k)
    except UnicodeError:
        pass
    if not nombres:
        ES.alerta(droid, nombre, "No hubo coincidencias!")
        return -10, None
    indice = ES.entradaConLista(droid, 'SOCIOS ENCONTRADOS',
                                'Seleccione socio(a)', nombres)
    if None == indice or 0 > indice: return -10, None
    return int(cedulas[indice]), nombres[indice]
예제 #7
0
def lCheques():
    global lCh

    lClas = COM.lClasCheques
    #  lFuncionClas = [compaNumCh, compaCedula, compaNombre, compaMonto, compaEstado, compaFecha, compaConcepto]
    lBanco = [COM.mBanco(str(k)) for k in range(1, 24)]
    lNombreB = [
        lBanco[i] for i in range(len(lBanco)) if lBanco[i] != str(i + 1)
    ]
    lCodigoB = [
        str(i + 1) for i in range(len(lBanco)) if lBanco[i] != str(i + 1)
    ]
    '''  campos = [("Banco", 'combo', (lNombreB, 0)),   # Mercantil por defecto
            ("Clasificacion",'combo', (lClas, 0))]   # Clasificar u ordenar por numero de cheque.
  iCB, iClas = forma(campos)  # Codigo del banco, Indice de clasificacion'''
    iCB = ES.entradaConLista(droid, 'BANCOS', 'Seleccione banco', lNombreB)
    if None == iCB or 0 > iCB: return None
    iClas = ES.entradaConLista(droid, 'CLASIFICACION', 'Clasificar', lClas)
    if None == iClas or 0 > iClas: return None
    lNvaCh = [l for l in lCh if ((lCodigoB[iCB] == l[0]) and (6 > len(l[1])))
              ]  # Nueva lista de cheques, solo los del banco.
    # l[1]: numero de cheque, si 6 digito es deposito.
    if not lNvaCh:
        ES.alerta(droid, 'CHEQUE EN TRANSITO',
                  "No hay cheque en transito del banco %s!" % lNombreB[iCB])
        return None
    nlNvaCh = len(lNvaCh)
    if 1 == nlNvaCh:
        return lNvaCh[0]
#  lNvaCh.sort(lFuncionClas[iClas])
    lNvaCh.sort(key=itemgetter(iClas))
    try:
        lCheq = [COM.creaOp(l) for l in lNvaCh if 8 >= len(l)
                 ]  # Solo las lineas que contengan 8 o mas campos
    except UnicodeError:
        ES.alerta(droid, 'lCheques: ' + str(nlNvaCh),
                  "Hubo un error al tratar de crear opciones!")
        print >> fErr, l
        print >> fErr, len(lNvaCh)
        return None
    nCheques = len(lCheq)
    if (nCheques > CO.NMAXITEM):
        nInicial = int((nCheques / CO.NMAXITEM) + 1)
        ES.alerta(
            droid, 'lCheques', 'Son ' + str(nCheques) + ' cheques! Mostrare ' +
            str(nInicial) + ' listas!')
        for k in range(
                nInicial
        ):  # Si el numero de cheques es grande mostrar varias listas de CO.NMAXITEM cada una.
            if (k + 1) * CO.NMAXITEM >= nCheques:
                iUltimo = nCheques
                lNueva = lCheq[k * CO.NMAXITEM:iUltimo]
            else:
                iUltimo = (k + 1) * CO.NMAXITEM
                lNueva = lCheq[k * CO.NMAXITEM:iUltimo] + ['Proxima lista']
            ind = ES.entradaConLista(
                droid,
                str(nCheques) + ' CHEQUES. De ' + str((k * CO.NMAXITEM) + 1) +
                ' a ' + str(iUltimo), '', lNueva)
            if None == ind or 0 > ind: return None
            if CO.NMAXITEM > ind:  # Si ind == CO.NMAXITEM, se selecciono la opcion 'Continuar'.
                indice = ind + (k * CO.NMAXITEM)
                break
    else:
        indice = ES.entradaConLista(droid, 'CHEQUES: ' + str(nCheques),
                                    'Seleccione cheque', lCheq)
        if None == indice or 0 > indice: return None
    return lNvaCh[indice]