Beispiel #1
0
def selFuncion(ci, nOpcion=6):
    ''' Menu desplegado al suministrar una cedula o al encontrar la cedula de una
      parte de un nombre suministrado.
      Eliminados: ['Calcular cuota', 'cuota'], ['Cedula del socio', 'cedula'],
      ['Buscar cedula del socio', 'nombre'], ['Cheques', 'cheque'],
      ['Deposito por fecha', 'depositos'] '''

    lNuevoMenu = COM.lMenu[nOpcion:(len(COM.lMenu) - 1)] + [[
        'Volver', '-11'
    ]]  # lMenu sin las opciones generales + la opcion 'Volver'.
    sTitulo = str(ci) + ':' + COM.nombreSocio(
        COM.mNombre(ci))  # Titulo a desplegar con las opciones.
    while True:
        try:
            func = eval(
                FG.selOpcionMenu(lNuevoMenu, sTitulo)
            )  # Evaluar contenido de res['name']; el cual, debe ser una funcion conocida.
        except:
            return False
        while True:
            if isinstance(func, types.FunctionType):
                opc = func(
                    ci)  # Si la cadena evaluada es una funcion, ejecutela.
                if FG.esEntero(opc): opc = str(opc)
                if '' == opc or None == opc or not opc.isdigit() or (
                        opc.isdigit() and
                    (0 > int(opc) or len(lNuevoMenu) <= int(opc))):
                    break
                func = eval(lNuevoMenu[int(opc)][1])
            else:
                return False
Beispiel #2
0
def concepto(ci=-1, bLN=True):
    '''Maneja la lista de los conceptos de un socio en Nomina y
    muestra el detalle de cualquiera de los conceptos.'''
    global lNom, lNomCNE

    if bLN: lN = lNom
    else: lN = lNomCNE
    sNombre = COM.mNombre(ci)
    if 0 >= ci: return -21

    nF = 0
    lCodigo = []
    lConcepto = []
    lDescripcion = []
    for l in lN:
        if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
        elif l[0] in ('', '0', str(ci)):
            lCodigo.append(l[1])  # Codigo del concepto
            lDescripcion.append(
                l[1] + ':' + COM.mConcepto(l[1]))  # Descripcion del concepto
            lConcepto.append(l)  # Lista del concepto
            nF += 1
        else:
            break
    # Fin for
    if 0 >= nF: return None
    else:
        indice = ES.entradaConLista(droid, 'Conceptos', '', lDescripcion)
        if None == indice or 0 > indice: return None
        # if indice < len(lCodigo): detalleConcepto(ci, sNombre, lConcepto[indice], lDescripcion[indice].lstrip().split(':')[1])
        if indice < len(lCodigo):
            return detalleConcepto(ci, sNombre, lConcepto[indice],
                                   COM.mConcepto(lCodigo[indice]))
        else:
            return None
Beispiel #3
0
def prestamo(ci):
    '''Maneja la lista de los prestamos de un socio en Prestamos y
    muestra el detalle de cualquiera de los prestamos.'''
    global lPre

    sNombre = COM.mNombre(ci)
    if 0 >= ci: return -21

    nF = 0
    lCodigo = []
    lPrestamo = []
    lDescripcion = []
    for l in lPre:
        if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
        elif l[0] in ('', '0', str(ci)):
            lCodigo.append(l[1])  # Codigo del prestamo
            lDescripcion.append(
                l[1] + ':' + COM.mConcepto(l[1]))  # Descripcion del prestamo
            lPrestamo.append(l)  # Lista del prestamo
            nF += 1
        else:
            break
    # Fin for
    if 0 >= nF: return None
    else:
        indice = ES.entradaConLista(droid, 'Prestamos', '', lDescripcion)
        if None == indice or 0 > indice: return None
        # if indice < len(lCodigo): detallePrestamo(ci, sNombre, lPrestamo[indice], lDescripcion[indice].lstrip().split(':')[1])
        if indice < len(lCodigo):
            return detallePrestamo(ci, sNombre, lPrestamo[indice],
                                   COM.mConcepto(lCodigo[indice]))
        else:
            return None
Beispiel #4
0
def mCheque(lChe):
    st = CO.AMARI + COM.lFecha("Sinca", "Cheques")  + ' (Descargado:' + CO.FIN +\
                                      COM.lFecha('cheques.txt', '') + ')' + "\n"
    if '99' == lChe[0]: sDesc = 'TRA'
    elif 6 > len(lChe[1]): sDesc = 'CHQ'
    else: sDesc = 'DEP'
    st += ("Banco:%+10.9s (%-.6s [%s]); Est:%+7.6s\nBeneficiario: "
           "%-12.11s%-30.30s\nConcepto: %-31.30s\nFecha:%+11.10s Monto: "
           "%-15.14s") % (COM.mBanco(lChe[0]), lChe[1], sDesc,
                          COM.mEstado(lChe[7]), FG.formateaNumero(
                              lChe[2]), COM.extraeNombre(lChe[3]), lChe[5],
                          lChe[4], FG.formateaNumero(lChe[6], 2))
    opc = ES.imprime(st.rstrip(' \t\n\r'))
    return opc
Beispiel #5
0
def ubicacion(ci):
    '''Maneja la lista con los telefonos y correo electronico de cada socio.'''
    global lUb

    if 0 >= ci: return -9

    st = CO.AMARI + COM.lFecha('Sinca', 'Ubicacion') + ' (Descargado:' + CO.FIN \
                                  + COM.lFecha('ubicacion.txt', '') + ')' + "\n"
    nF = 0
    nJustDerecha = 21
    for l in lUb:
        if ci > int(l[0]): continue
        elif ci == int(l[0]):
            st += "%s%s:%-30.29s%s" % (CO.CYAN, FG.formateaNumero(ci),
                                       COM.nombreSocio(
                                           COM.mNombre(ci)), CO.FIN)
            if 1 < len(l) and '' != l[1]:
                st += "\n"
                st += CO.AZUL + "Telefono habitacion: ".rjust(nJustDerecha) + CO.FIN +\
                                                        FG.formateaNumeroTelefono(l[1])
            if 2 < len(l) and '' != l[2]:
                st += "\n"
                st += CO.AZUL + "Telefono trabajo: ".rjust(nJustDerecha) + CO.FIN +\
                                                        FG.formateaNumeroTelefono(l[2])
            if 3 < len(l) and '' != l[3]:
                st += "\n"
                st += CO.AZUL + "Celular: ".rjust(nJustDerecha) + CO.FIN +\
                                                        FG.formateaNumeroTelefono(l[3])
            if 4 < len(l) and '' != l[4]:
                st += "\n"
                st += CO.AZUL + "Celular: ".rjust(nJustDerecha) + CO.FIN +\
                                                        FG.formateaNumeroTelefono(l[4])
            if 5 < len(l) and '' != l[5]:
                if len(l[5].rstrip(' \t\n\r')) > (
                        CO.nCarLin - nJustDerecha - 1
                ):  # Cars a justificar derecha + 1 espacio despues ':'.
                    nJustDerecha = CO.nCarLin - len(l[5].rstrip(' \t\n\r')) - 1
                st += "\n"
                st += CO.AZUL + "Correo:".rjust(nJustDerecha) + CO.FIN + " %s" %\
                                                              l[5].rstrip(' \t\n\r')
            nF += 1
# Fin elif
        else:
            break
# Fin for
    if 0 >= nF: st = COM.noCedula(ci)
    opc = ES.imprime(st)
    return opc
Beispiel #6
0
def resNominaN(lN=None):
    '''Maneja el resumen de todos los conceptos de IPASPUDO de la nomina
    recibida como parametro.'''
    global lNomN
    if None == lN: lN = lNomN

    st = CO.AMARI + COM.lFecha("Nomina", "Nomina") + ' (Descargado:' + CO.FIN +\
                                        COM.lFecha('nomina.txt', '') + ')' + "\n"
    ftValFi = 0.00
    ftValVa = 0.00
    ftTotal = 0.00
    bImpar = True

    sTitNomina  = CO.AZUL + "CON".ljust(4) + 'DESCRIPCION'.ljust(25) +\
                        "VALOR FIJO".rjust(16) + "VALOR VARIABLE".rjust(16) +\
                        "T O T A L".rjust(16) + CO.FIN + "\n"
    st += sTitNomina
    for l in lN:
        if 8 > len(l) or 0.00 == float(l[7]): continue
        sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
        # 0:Concepto, 1:Descripcion, 2:Cta credito, 3:Cta Debito, 4:Cta Interese, 5:Valor fijo, 6: Valor variable, 7:Total
        stl = "%s%.3s %-25.25s %15.15s %15.15s %15.15s%s" % (
            sColor, l[0], l[1], FG.formateaNumero(l[5], 2).rstrip().rjust(15),
            FG.formateaNumero(l[6], 2).rstrip().rjust(15),
            FG.formateaNumero(l[7], 2).rstrip().rjust(15), CO.FIN)
        ftValFi += float(l[5])
        ftValVa += float(l[6])
        ftTotal += float(l[7])
        st += stl + '\n'
    # Fin for
    stValFi = FG.formateaNumero(ftValFi, 2)
    stValVa = FG.formateaNumero(ftValVa, 2)
    stTotal = FG.formateaNumero(ftTotal, 2)
    stl = CO.AZUL + "T O T A L E S".rjust(29) + stValFi.rjust(16) + \
                                  stValVa.rjust(16) + stTotal.rjust(16) + CO.FIN
    st += stl
    opc = ES.imprime(st.rstrip(' \t\n\r'))
    return opc
Beispiel #7
0
def prestamos(ci):
    '''Maneja la lista de conceptos de prestamos de un socio y
    muestra la informacion.'''
    global lPre

    if 0 >= ci: return -5

    st = CO.AMARI + COM.lFecha("Sinca", "Prestamos") + ' (Descargado:' + \
                          CO.FIN + COM.lFecha('prestamos.txt', '') + ')' + "\n"
    nF = 0
    bImpar = True

    nCarDesc = CO.nCarLin - 26 - 1  # Numero de caracteres (espacio total), donde se mostrara el campo. 26 es resto.
    maxLongCad = 30  # numero maximo de caracteres del campo especificado.
    if maxLongCad < nCarDesc:
        nCarDesc = maxLongCad  # > longitud maxima de la cadena a mostrar en el campo.
    nCarMostrar = 23 + nCarDesc  # Numero de caracteres, maximo, a mostrar por linea.
    sTitPrestamos = CO.AZUL + "CON " + CO.justIzqTituloCol('DESCRIPCION', \
                                            nCarDesc) + "    Saldo  Cuota FeSol"
    if 31 <= (CO.nCarLin - nCarMostrar
              ):  # 31 es la longitud de '     Saldo Saldo+Int Me  #CtCan'.
        sTitPrestamos += ' Monto Sol Saldo+Int Me  #CtCan'
        nCarMostrar += 31
        bExtra = True
    else:
        bExtra = False
    sTitPrestamos += CO.FIN + "\n"
    for l in lPre:
        if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
        elif l[0] in ('', '0', str(ci)):
            nF += 1
            sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
            # 0:Cedula,1:Concepto,2:monto solicitado,3:Monto total(Concedido + intereses);4:Saldo;5:Saldo total(Saldo + intereses);6:Cuota,7:Fecha inicial (mm/aa),8:ult actualizacion (mm),9:cuotas (pagadas/total)
            stl = sColor + l[1] + ' ' + \
                    COM.mConcepto(l[1])[0:nCarDesc].ljust(nCarDesc, " ") + ' ' + \
                  FG.formateaNumero(l[4]).rstrip().rjust(9) + \
                    FG.formateaNumero(l[6]).rstrip().rjust(7) + ' ' + \
                    l[7].rstrip().rjust(5)
            if bExtra:
                stl += ' ' + FG.formateaNumero(l[2]).rstrip().rjust(9) + ' ' + \
                   FG.formateaNumero(l[5]).rstrip().rjust(9) + ' ' + \
                        l[8].rstrip().rjust(2) + ' ' + l[9].rstrip().rjust(7)
            stl += CO.FIN
            if 1 == nF:
                stl = CO.CYAN + FG.formateaNumero(ci) + ':' + \
                        COM.nombreSocio(COM.mNombre(ci)) + CO.FIN + "\n" + \
                        sTitPrestamos + stl
            # if '0.00' != l[2].rstrip():		# Comparar, cuando agregar la linea. Solicitado = 0.00. Mes ult. act .vs. fecha.
            st += stl + '\n'
        else:
            break
    # Fin for
    if 0 >= nF: st = COM.noCedula(ci)
    opc = ES.imprime(st.rstrip(' \t\n\r'))
    return opc
Beispiel #8
0
def disponibilidad(ci):
    'Maneja la lista de conceptos de un socio y muestra la informacion.'
    global lSi

    dConc = CO.dConceptos
    sNombre = COM.mNombre(ci)
    if 0 >= ci: return -4

    st = CO.AMARI + COM.lFecha("Sinca", "Disponibilidad") + ' (Descargado:' + \
          CO.FIN + COM.lFecha('disponibilidad.txt', '') + ')' + "\n" # 'Conta' se refiere al sistema de contabilidad.
    nF = 0  # Numero de registros de una misma persona (socio)
    for l in lSi:
        if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
        elif l[0] in ('', '0', str(ci)):
            nF += 1
            if l[1] in dConc:
                if '0' == l[1]:                    stl = CO.AZUL + dConc[l[1]].rstrip().rjust(20) + \
                                  CO.FIN + ': ' + l[2].rstrip().ljust(12)
                elif l[1] in ('D', 'E', 'F'):
                    stl = CO.AZUL
                    if 55 <= CO.nCarLin:
                        stl += ('NETO NOMINA ' +
                                dConc[l[1]]).rstrip().rjust(20)
                    else:
                        stl += dConc[l[1]].rstrip().rjust(9)
                    stl += CO.FIN + ': '
                    if (6 <= len(l)):
                        stl += FG.formateaNumero(l[2]) + '-' + FG.formateaNumero(l[3]) + \
                                ' = ' + FG.formateaNumero(l[4], 2) + '(' + \
                                                            FG.formateaNumero(l[5]) + '%)'
                else:
                    stl = CO.AZUL + dConc[l[1]].rstrip().rjust(20) + CO.FIN + ': ' + \
                                          FG.formateaNumero(l[2], 2).rstrip().ljust(12)
                if 1 == nF:
                    stl = CO.CYAN + FG.formateaNumero(ci) + ':' + \
                                          COM.nombreSocio(sNombre) + CO.FIN + "\n" + stl
#        if 'B' == l[1]: disp = l[2].rstrip().rjust(12)
            else:
                stl = l[2].rstrip() + ' DESCONOCIDO (' + l[1] + ')'
            if '0.00' != l[2].rstrip() or 'A' == l[1]:
                st += stl + '\n'
            if 'C' == l[1] and 55 > CO.nCarLin:
                st += CO.CYAN + 'N E T O S'.rjust(int((CO.nCarLin-9)/2)+9) + '\n' + \
                                                            CO.FIN # 9 es la longitud de 'N E T O S'
        else:
            break
# Fin for
    if 0 >= nF: st = COM.noCedula(ci)
    else:
        st += CO.AZUL + ('Dividendo ' + CO.anoDividendo).rjust(20) + CO.FIN + \
                  ': ' + FG.formateaNumero(COM.mDividendo(ci), 2).ljust(12) + '\n'
#    ES.alerta(droid, 'DISPONIBILIDAD', '%s: %12s' % (sNombre, FG.formateaNumero(disp, 2)))
    opc = ES.imprime(st.rstrip(' \t\n\r'))
    return opc
Beispiel #9
0
def nomina(ci=-1, bLN=True):
    '''Maneja la lista de conceptos de nomina de un socio y
    muestra la informacion.'''
    global lNom, lNomCNE

    if bLN: lN = lNom
    else: lN = lNomCNE
    if 0 >= ci: return -8

    st = CO.AMARI + COM.lFecha("Nomina", "Nomina") + ' (Descargado:' + CO.FIN +\
                                        COM.lFecha('nomina.txt', '') + ')' + "\n"
    nF = 0
    ftAsig = 0.00
    ftDed = 0.00
    bImpar = True

    nCarDesc = CO.nCarLin - 23 - 1  # Numero de caracteres (espacio total), donde se mostrara el campo. 23 es resto.
    maxLongCad = 28  # numero maximo de caracteres del campo especificado.
    if maxLongCad < nCarDesc:
        nCarDesc = maxLongCad  # > longitud maxima de la cadena a mostrar en el campo.
    nCarMostrar = 23 + nCarDesc  # Numero de caracteres, maximo, a mostrar por linea.
    sTitNomina = CO.AZUL + "CON " + CO.justIzqTituloCol(
        'DESCRIPCION', nCarDesc) + "  ValorFijo ValorVariab"
    if 25 <= (CO.nCarLin -
              nCarMostrar):  # 25 es la maxima longitud del 'saldo[cuota]'.
        sTitNomina += '          Saldo:[Cuota]'
        nCarMostrar += 25
        nCarSaldo = 15
        bSaldo = True
    else:
        nCarSaldo = 0
        bSaldo = False
    sTitNomina += CO.FIN + "\n"
    for l in lN:
        if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
        elif l[0] in ('', '0', str(ci)):
            nF += 1
            sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
            # 0:Cedula, 1:Concepto, 2:Valor fijo, 3: Valor variable, 4:Saldo, 5:Cuota
            stl = "%s%.3s %*.*s %.11s %.11s%s" % (
                sColor, l[1], nCarDesc, nCarDesc, COM.mConcepto(l[1]).ljust(
                    nCarDesc, " "), FG.formateaNumero(
                        l[2], 2).rstrip().rjust(11), FG.formateaNumero(
                            l[3], 2).rstrip().rjust(11), CO.FIN)
            if bSaldo:
                if (0.00 < float(l[4])):
                    stl += "%s%.*s[%s]%s" % (
                        sColor, nCarSaldo, FG.formateaNumero(
                            l[4], 2).rstrip().rjust(nCarSaldo),
                        FG.formateaNumero(l[5], 2).rstrip(), CO.FIN)
            try:
                if (500 > int(l[1])): ftAsig += float(l[2]) + float(l[3])
                else: ftDed += float(l[2]) + float(l[3])
            except Exception as ex:
                print('Tipo: ' + type(ex), ', ex: ', ex)
            if 1 == nF:
                stl = CO.CYAN + FG.formateaNumero(ci) + ':' + \
                    COM.nombreSocio(COM.mNombre(ci)) + CO.FIN + "\n" + sTitNomina + stl
            st += stl + '\n'
        else:
            break
    # Fin for
    if 0 >= nF: st = COM.noCedula(ci)
    elif (0.00 != ftAsig) or (0.00 != ftDed):
        fNeto = ftAsig - ftDed
        stAsig = FG.formateaNumero(ftAsig, 2)
        stDed = FG.formateaNumero(ftDed, 2)
        sNeto = FG.formateaNumero(fNeto, 2)
        if bSaldo:
            sFormato = ("%sAsignaciones:%s%-*.*s; %sDeducciones:%s%-*.*s; "
                        "%sNeto:%s %-*.*s")
        else:
            sFormato = "%sAs:%s%-*.*s;%sDs:%s%-*.*s;%sNeto:%s %-*.*s"
        stl = sFormato % (CO.AZUL, CO.FIN, len(stAsig),
                          len(stAsig) + 1, stAsig, CO.AZUL, CO.FIN, len(stDed),
                          len(stDed) + 1, stDed, CO.AZUL, CO.FIN, len(sNeto),
                          len(sNeto) + 1, sNeto)
        st += stl
    opc = ES.imprime(st.rstrip(' \t\n\r'))
    return opc
Beispiel #10
0

# Funcion selFuncion

esperar = 'Espere un momento, por favor...'
if droid:
    droid.dialogCreateHorizontalProgress('IPASPUDO', esperar, 100)
    droid.dialogShow()
    droid.dialogSetCurrentProgress(15)
else:
    print(esperar)
AP.prepararListasDeTrabajo()
ESF.prepararListasDeTrabajo()
if droid: droid.dialogSetCurrentProgress(60)
else: print('Listas listas!')
COM.prepararDiccionariosDeTrabajo()
if droid: droid.dialogSetCurrentProgress(90)
else: print('Diccionarios listos!')

ES.muestraInicio("IPASPUDO: J-30619229-8.")
if droid: droid.dialogSetCurrentProgress(95)

cig, sUXD, sCXD = leeValXDefecto()
if droid:
    droid.dialogSetCurrentProgress(100)
    droid.dialogDismiss()

nOp = 11
while True:
    sOpcion = selFuncionInicial(nOp)
Beispiel #11
0
def servifun(ci=-1):
  '''Maneja la lista de la carga de un socio en ServiFun y
    muestra la informacion.'''
  global lCgS

  if 0 >= ci: return -7

  nF = 0
  fC = 0
  st = CO.AMARI + COM.lFecha("Sinca", "ServiFun") + ' (Descargado:' + CO.FIN +\
        COM.lFecha('servifun.txt', '') + ')' + "\n"
  bImpar = True

  nCarMostrar, nCarNomb, maxCarLs = CO.carPorCampo(lCgS, 2, 23)	# Max numero cars de una linea, max # caracteres del campo.
  if CO.bPantAmplia:											# Verifica si la pantalla es amplia.
    nCarMostrar -= 12									# 12 = numero de caracteres aprox de disponibilidad y A/N.
    nCarNomb    -= 12
    maxCarLs    -= 12
    sParTi = 'PARENTE'
    sEsp   = ''
    nCarMostrar, nCarPare, maxCarLs = CO.carPorCampo(lCgS, 3, nCarMostrar)
  else:
    sParTi   = 'PAR'
    nCarPare = 3
    sEsp     = ''
  st += CO.AZUL + "    CEDULA " + CO.justIzqTituloCol('NOMBRE DE LA CARGA',
                        nCarNomb) + CO.justIzqTituloCol(sParTi, nCarPare) +\
  				              sEsp + "FInsc" + " Ed" + CO.FIN + "\n"

  sFormato = '%s%10.10s %-*.*s %-*.*s %-5.5s%3d%s\n'
# [0]Cedula; [1]Cedula carga;[2]Nombre(Nombre|Disponibilidad|A/N); [3]Parentesco;[4]Fecha ingreso a servifun
  for l in lCgS:
    if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
    elif l[0] in ('','0',str(ci)):
      nF += 1
      if '-' == l[3][1:2] and l[3][0:1] in ('A', 'N', 'S', 'T'): fC += CO.CO
      if 5 < len(l) and l[5].isdigit():
        nEd = int(l[5])
        if (l[3][0:1] in ('6', '7')) and (25 < nEd): fC += CO.CHM25
        if (80 < nEd): fC += CO.CM80
        elif (75 < nEd): fC += CO.CM75
        elif (70 < nEd): fC += CO.CM70
      else: nEd = -1
      sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
      st += sFormato % (sColor, FG.formateaNumero(l[1], 0), nCarNomb,
                        nCarNomb, l[2].lstrip().split('|')[0], nCarPare,
      					        nCarPare, l[3], l[4], nEd, CO.FIN)
    else: break
# Fin for
  if 0 >= nF: st = COM.noCedula(ci)
  else:
    if 1 == nF:
      fC += CO.CI
      sfC = FG.formateaNumero(fC, 2)
      sC = "igual a Bs. %*s" % (len(sfC), sfC)
    else:
      fC += CO.CCC
      sfC = FG.formateaNumero(fC, 2)
      sC = "mayor o igual a Bs. %*s" % (len(sfC), sfC)
    stl = "La cuota mensual es " + sC
    st += CO.CYAN + stl + CO.FIN
  opc = ES.imprime(st.rstrip(' \t\n\r'))
  return opc
Beispiel #12
0
def extension(ci=-1):
  '''Maneja la lista de la carga de un socio en la extension y
    muestra la informacion.'''
  global lCgE

  if 0 >= ci: return -6

  st = CO.AMARI + COM.lFecha("Extension", "Extension") + ' (Descargado:' +\
                        CO.FIN + COM.lFecha('extension.txt', '') + ')' + "\n"
  nF = 0											# Numero de filas
  rC = 0.00											# Cuota

  nCarMostrar, nCarNomb, maxCarLs = CO.carPorCampo(lCgE, 2, 28)	# Max numero cars de una linea, max # caracteres del campo.
  if CO.bPantAmplia:											# Verifica si la pantalla es amplia.
    nCarMostrar -= 12									# 12 = numero de caracteres aprox de disponibilidad y A/N.
    nCarNomb    -= 12
    maxCarLs    -= 12
    sParTi = 'PARENTESCO'
    sCuota = '    Cuota'
    nCarMostrar, nCarPare, maxCarLs = CO.carPorCampo(lCgE, 3, nCarMostrar)
  else:
    sParTi   = 'PAREN'
    nCarPare = 3
    sCuota = ' Cta.'
  sTitExtension = CO.AZUL + "    CEDULA " + CO.justIzqTituloCol('NOMBRE',
                          nCarNomb) + CO.justIzqTituloCol(sParTi, nCarPare) +\
  						            sCuota + '  AIng' + CO.FIN + "\n"
  if CO.bPantAmplia:
    sFormato  = '%s%10.10s %-*.*s %-*.*s%8.8s %s%s\n'
    nCarPare += 3
    iDec      = 2
  else:
    sFormato = '%s%10.10s %-*.*s %-*.*s%5.5s %s%s\n'
    nCarPare += 2
    iDec      = 0
  bImpar = True
#[0]Cedula; [1]Cedula carga;[2]Nombre(Nombre|Disponibilidad|A/N); [3]Parentesco; [4]#UT; [5]Costo poliza
  for l in lCgE:
    if (0 == nF) and ('' == l[0] or ci > int(l[0])): continue
    elif l[0] in ('','0',str(ci)):
      sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
      try:
        if 0 == nF:
          if '1250' == l[4]: nSumaAseg = 500000
          elif '500' == l[4]: nSumaAseg = 250000
          else: nSumaAseg = 0
          st += CO.CYAN + "SUMA ASEGURADA: " + l[4] + "UT = BsF. " +\
                  FG.formateaNumero(nSumaAseg) + CO.FIN + "\n" + sTitExtension
        nF += 1
        rC += float(l[5])
        if 0 < float(l[5]):
          if l[3].lstrip().split(' ')[0][0:3] in ['TIT', 'CON', 'tit', 'con']:
            sPar = l[3].lstrip().split(' ')[0][0:nCarPare-2] + '-' + l[3][-2:]
          else: sPar = l[3].lstrip().split(' ')[0][0:nCarPare]
          if 6 < len(l) and l[6].isdigit(): sAno = l[6]
          else: sAno = '----'
          st += sFormato % (sColor, FG.formateaNumero(l[1]), nCarNomb,
                  nCarNomb, l[2].lstrip().split('|')[0], nCarPare, nCarPare,
                  sPar, FG.formateaNumero(float(l[5])/12, iDec), sAno, CO.FIN)
      except Exception as ex:
        print('ex: ', ex)
# Fin elif
    else: break
# Fin for
  if 0 >= nF or 0.00 >= rC:
    st = COM.noCedula(ci)
#    ES.alerta(droid, 'EXTENSION', '%s: INACTIVO' % (sNombre))
  else:
    frC = FG.formateaNumero(rC, 2)
    fmC = FG.formateaNumero(rC/12, 2)
    stl = "TOTAL Anual: %-*.*s (mensual: %-*.*s)" % (len(str(frC)),
                        len(str(frC))+1, frC, len(fmC), len(str(fmC))+1, fmC)
    st += CO.CYAN + stl + CO.FIN
  opc = ES.imprime(st)
  return opc
Beispiel #13
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]