Exemplo n.º 1
0
def lstXEstatus():
  global lPro

  est = COM.selEstatus()
  if ('v' == est): return -1

  nvaLst = []
  for l in lPro:
    if (est != l['estatus']): continue
    nvaLst.append(l)
  # for l in lPro

  nV = tLados = 0
  tPrecios = tPrVeReal = tNetos = 0.00
  bImpar = True
  st = CO.CYAN + COM.dEst[est] + CO.FIN + '\n'
  st += titulo("Neto ofic.", 11)
  for l in nvaLst:
    sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
    st += detalles(l, sColor, True, 'ingNeOf', 11)
    nV += 1
    tLados += l['lados']
    tPrecios += l['precio']
    tPrVeReal += l['prVeRe']
    tNetos += l['ingNeOf']
  # for l in nvaLst
  st += CO.AMARI + 'TOTALES:'.ljust(45) +\
        FG.formateaNumero(tLados).rjust(3) +\
        FG.formateaNumero(tPrecios).rjust(11) +\
        FG.formateaNumero(tPrVeReal).rjust(14) +\
        FG.formateaNumero(tNetos, 2).rjust(11) + CO.FIN + "\n"
  st += FG.formateaNumero(len(nvaLst)) + ' negociaciones'

  return ES.imprime(st.rstrip(' \t\n\r'))
Exemplo n.º 2
0
def mostrarConceptos(dicc, dConc):
  lconc = []
  i = 0
  iMax = '000'
  for ld in dicc.items():
  	lconc.insert(i, ld[0])
  	if ld[0].isdigit() and ld[0] > iMax: iMax = ld[0]	# Concepto con el maximo valor, para saber donde subrayar.
  	i += 1
  lconc.sort()
  bImpar  = True
  st = "%s%s%3s %-20.20s %6.6s %15.15s %15.15s %15.15s %6.6s%s\n" % \
  		(CO.SUBRAYADO, CO.AMARI, 'CLV', 'DESCRIPCION', '#SOCI', 'VALOR FIJO',
                                'VALOR VARIABLE', 'TOTALES', 'PORCEN', CO.FIN)
  for v in lconc:
     if not ((0.00 == dicc[v][1]) and (0.00 == dicc[v][2]) and \
                                                        (0.00 == dicc[v][3])):
       if 'AHO' == v and dicc['AHO'][3] == dicc['TOT'][3]: continue
       if v.isdigit():
         if iMax > v: subrayar = ''
         else: subrayar = CO.SUBRAYADO
       else: subrayar = ''
       if ('TOT' == v): sColor = CO.VERDE
       elif v in ('AHO', 'OTR', 'PRE', 'PR0', 'PR1'): sColor = CO.PURPURA
       else: sColor, bImpar = ES.colorLinea(bImpar, CO.AZUL, CO.CYAN)
       fPorc = 100.00*dicc[v][3]/dicc['TOT'][3]
       st += "%s%s%3s %-20.20s %6.6s %15.15s %15.15s %15.15s %6.6s%s\n" %\
  				(subrayar, sColor, v, dConc.get(v,
            {'des':'NO TENGO DESCRIPCION'})['des'],
  				  FG.formateaNumero(dicc[v][0]),
            FG.formateaNumero(dicc[v][1], 2), 
  				  FG.formateaNumero(dicc[v][2], 2),
            FG.formateaNumero(dicc[v][3], 2),
  				  FG.formateaNumero(fPorc, 2), CO.FIN)
  return st
Exemplo n.º 3
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
Exemplo n.º 4
0
def detTotales(cad, lados, pvr, cap, cer, lCap, lCer, bImpar, tam=20,
                color=False):
  if (0 == lados) and (0 == cap) and (0 == cer) and (0 == lCap) and\
      (0 == lCer):
    return bImpar, ''
  (sColor, bImpar) = (color, not bImpar) if (color) else\
                                        ES.colorLinea(bImpar, CO.VERDE)
  return bImpar, sColor + cad[0:tam-1].ljust(tam) +\
        FG.formateaNumero(lados).rjust(4) +\
        FG.formateaNumero(pvr, 2).rjust(14) +\
        FG.formateaNumero(cap+cer, 2).rjust(12) +\
        (FG.formateaNumero(cap, 2) + '(' +\
        FG.formateaNumero(lCap) + ')').rjust(15) +\
        (FG.formateaNumero(cer, 2) + '(' +\
        FG.formateaNumero(lCer) + ')').rjust(15) + CO.FIN + "\n"
Exemplo n.º 5
0
def lstXAsesor():
  global lPro

  id = FG.selOpcionMenu(ASE.lNAs + [['Volver', -2]], 'Asesor')
  if (0 > id): return id

  nvaLst = []
  for l in lPro:
    if not (isinstance(l['asCapId'], int)) or \
       not (isinstance(l['asCerId'], int)) or \
       ((id != l['asCapId']) and (id != l['asCerId'])):
      continue
    nvaLst.append(l)
  # for l in lPro

  tPrecios = tPrVeReal = tCap = tCer = 0.00
  nF = nV = tLados = 0
  bImpar = True
  st = CO.CYAN + ASE.lAse[id-1]['name'] + CO.FIN + '\n'
  st += titulo("Comision", 10)
  for l in nvaLst:
    sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
    st += detalles(l, sColor, True, 'capPrbr', 'asCapId',
                        'cerPrbr', 'asCerId', id, 10)
    if (l['estatus'] not in ('P', 'C')): continue
    nV += 1
    tLados += l['lados']
    tPrecios += l['precio']
    tPrVeReal += l['prVeRe']
    if (id == l['asCapId']):
      try: tCap += float(l['capPrbr'])    
      except: pass
    if (id == l['asCerId']):
      try: tCer += float(l['cerPrbr'])    
      except: pass
  # Fin for
  st += CO.AMARI + 'TOTALES:'.ljust(45) +\
        FG.formateaNumero(tLados).rjust(3) +\
        FG.formateaNumero(tPrecios).rjust(11) +\
        FG.formateaNumero(tPrVeReal).rjust(14) +\
        FG.formateaNumero(tCap+tCer, 2).rjust(10) + CO.FIN + "\n"
  st += CO.AMARI + FG.formateaNumero(len(nvaLst)) +\
        ' negociaciones [' + FG.formateaNumero(nV) + ' validas]. ' +\
        'Total captado: ' + FG.formateaNumero(tCap, 2) +\
        ' y cerrado: ' + FG.formateaNumero(tCer, 2) + CO.FIN

  return ES.imprime(st.rstrip(' \t\n\r'))
Exemplo n.º 6
0
def mostrarConceptos(dicc, dConc):

    lconc = []
    i = 0
    sMax = '000-0-0-0'
    for ld in dicc.items(
    ):  # el metodo items(), devuelve una lista de dicc's (llave, valor) tupla pares
        lconc.insert(i, ld[0])
        if ld[0][0:3].isdigit() and ld[0] > sMax:
            sMax = ld[
                0]  # Concepto con el maximo valor, para saber donde subrayar.
        i += 1
    lconc.sort()
    bImpar = True
    st = "%s%s%9s %-20.20s %6.6s %15.15s %15.15s %6.6s%s\n" % \
        (CO.SUBRAYADO, CO.AMARI, 'CLAVE', 'DESCRIPCION', '#MOVI', '     Saldo',
                                              '         Cuota', 'PORCEN', CO.FIN)
    for v in lconc:
        if not ((0.00 == dicc[v][1]) and
                (0.00 == dicc[v][2])) or ('3' == v[6:7]):
            if v[0:3].isdigit() and v[4:5].isdigit() and v[6:7].isdigit() and \
                 v[8:].isdigit():
                if sMax == v: subrayar = CO.SUBRAYADO
                else: subrayar = ''
            else: subrayar = ''
            if ('TOT' == v): sColor = CO.VERDE
            elif ('AHO' == v): sColor = CO.PURPURA
            elif ('ELI' == v): sColor = CO.ROJO
            elif ('OTR' == v): sColor = CO.PURPURA
            else: sColor, bImpar = ES.colorLinea(bImpar, CO.AZUL, CO.CYAN)
            if 0 == dicc['TOT'][1]: fPorc = 0.00
            else: fPorc = 100.00 * dicc[v][1] / dicc['TOT'][1]
            sConc = v[0:3]
            if '3' == v[6:7]: sObs = CO.ROJO + 'Eli'
            elif '2' == v[6:7]: sObs = 'Mod'
            elif '1' == v[6:7]: sObs = 'Cre'
            else: sObs = ''
            st += "%s%s%9s %-20.20s %6.6s %15.15s %15.15s %6.6s %s%s\n" % (
                subrayar, sColor, v,
                dConc.get(sConc, {'des': 'NO TENGO DESCRIPCION'})['des'],
                FG.formateaNumero(dicc[v][0]), FG.formateaNumero(
                    dicc[v][1], 2), FG.formateaNumero(dicc[v][2], 2),
                FG.formateaNumero(fPorc, 2), sObs, CO.FIN)

    return st
Exemplo n.º 7
0
def cumpleanos(mostrar=True):
  from datetime import date
  global lAse

  hoy = date.today()
  proxDia, proxMes, proxAno, enUnMes = calcProxMes()
  bImpar = True
  titulo = CO.CYAN + 'Proximos cumpleaneros' + CO.FIN + '\n'
  st = ''
  indices = []
#  lClas = sorted(lAse, key = lambda k: k['fecha_nacimiento'])  # Problemas con valures null.
  lClas = sorted(lAse, key = lambda k: (k['fecha_nacimiento'][5:10] \
                        if k['fecha_nacimiento'] else ''))
  for l in lClas:
    if not l['fecNac']: continue
    fecNac = l['fecNac']
    anoNac, mesNac, diaNac, dSemNac =\
                              FG.descomponeFecha(l['fecNac'])
    fecCump = date(proxAno, mesNac, diaNac)
    diaSem  = CO.semana[fecCump.weekday()]
    if fecCump == hoy:
      indices.append([l['id'], l['name'], fecCump])
      if mostrar:
        st += CO.AMARI + l['name'] + ': ' + 'HOY, ' + diaSem + ' ' +\
              fecNac[0:2] + ' de ' + CO.meses[mesNac] + CO.FIN + '\n'
      # FIN if mostrar
    elif hoy < fecCump <= enUnMes:
      if mostrar:
        sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
        st += sColor + l['name'] + ': ' + diaSem + ' ' +\
              fecNac[0:2] + ' de ' + CO.meses[mesNac] + CO.FIN + '\n'
      # FIN if mostrar
    # FIN if fecCump == hoy
  # FIN for l in lClas
  if mostrar:
    if (st): st = titulo + st
    else: st = CO.CYAN + 'No hay cumpleaneros proximamente.' +\
                CO.FIN + '\n'
    return ES.imprime(st.rstrip(' \t\n\r'))
  else: return indices
Exemplo n.º 8
0
def ganYperXmes():
  'Lee los datos de ganancias y perdidas por mes y los despliega'
  global lGyPxM

#  st = AMARI + lFecha("Sinca", "GanyPerxMes") + ' (Descargado:' + FIN + lFecha('egyp.txt', '') + ')' + "\n"
  nF = 0
  bImpar = True

  sTitPrestamos = CO.AZUL + "MES" + "Ingresos".rjust(15) + "FACTOR".rjust(7) +\
            "Egresos".rjust(15) + "FACTOR".rjust(7) + "Resultado".rjust(15) +\
                                              "FACTOR".rjust(8) + CO.FIN + "\n"
  st = sTitPrestamos
  rTotIng = float(lGyPxM[len(lGyPxM)-1][1])
  rTotEgr = float(lGyPxM[len(lGyPxM)-1][2])
  for l in lGyPxM:
      nF += 1
      sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
# 0:Mes,1:Ingresos,2:Egresos,3:Resultado
      if 0.00 != rTotIng: fcti = float(l[1])/rTotIng
      else: fcti = 0.00
      if 0.00 != rTotEgr: fcte = float(l[2])/rTotEgr
      else: fcte = 0.00
      if 0.00 != float(l[1]): fct = float(l[2])/float(l[1])
      else: fct = 0.00
      if 13 > int(l[0]): sMes = str(l[0])
      else: sMes = 'TO'
      if 1 >= abs(fct): sColorFactor = ''
      else: sColorFactor = CO.FIN + CO.ROJO
      st += sColor + sMes.rjust(2) + ' ' +\
		FG.formateaNumero(l[1], 2).rstrip().rjust(15) +\
		FG.formateaNumero(fcti, 3).rstrip().rjust(7) +\
		FG.formateaNumero(l[2], 2).rstrip().rjust(15) +\
		FG.formateaNumero(fcte, 3).rstrip().rjust(7) +\
		FG.formateaNumero(l[3], 2).rstrip().rjust(15) +\
		sColorFactor +\
		FG.formateaNumero(fct, 3).rstrip().rjust(8) +\
		CO.FIN + "\n"
# Fin for
  ES.imprime(st.rstrip(' \t\n\r'))
Exemplo n.º 9
0
def lstXMes():

  agno, mes = COM.selMes(lTMe)
  if ('v' == agno): return -1
  
  nvaLst = []
  for l in lPro:
    if ('00' == mes) and (("" == l['fecRes']) or ("" == l['fecFir'])):
      nvaLst.append(l)
      continue
    if (("" != l['fecFir']) and (10 == len(l['fecFir'])) and\
        (agno == l['fecFir'][-4:]) and (mes == l['fecFir'][3:5])) or\
       (("" != l['fecRes']) and (10 == len(l['fecRes'])) and\
        (agno == l['fecRes'][-4:]) and (mes == l['fecRes'][3:5])):
      nvaLst.append(l)
  # for l in lPro
  nV = tLados = 0
  tPrecios = tPrVeReal = tNetos = 0.00
  bImpar = True
  st = CO.CYAN + agno + ' ' + CO.meses[int(mes)] + CO.FIN + '\n'
  st += titulo("Neto ofic.", 11)
  for l in nvaLst:
    sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
    st += detalles(l, sColor, True, 'ingNeOf', 11)
    if (l['estatus'] in ('P', 'C')):
      nV += 1
      tLados += l['lados']
      tPrecios += l['precio']
      tPrVeReal += l['prVeRe']
      tNetos += l['ingNeOf']
  # for l in nvaLst
  st += CO.AMARI + 'TOTALES:'.ljust(45) +\
        FG.formateaNumero(tLados).rjust(3) +\
        FG.formateaNumero(tPrecios).rjust(11) +\
        FG.formateaNumero(tPrVeReal).rjust(14) +\
        FG.formateaNumero(tNetos, 2).rjust(11) + CO.FIN + "\n"
  st += CO.AMARI + FG.formateaNumero(len(nvaLst)) + ' negociaciones ['\
        + FG.formateaNumero(nV) + ' validas].' + CO.FIN
  return ES.imprime(st.rstrip(' \t\n\r'))
Exemplo n.º 10
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
Exemplo n.º 11
0
def todasPropiedades(bCaidas=True):
  '''Lee los datos de propiedades y los despliega
      fila['id']: numero incremental.
      fila['codigo']: Codigo casa nacional.
      fila['fecRes']: fecha de reserva.
      fila['fecFir']: fecha de firma.
      fila['negoc']: Negociacion: Venta o Alquiler.
      fila['nombre']: Nombre de la propiedad.
      fila['estatus']: Status.
      fila['moneda']: Moneda.
      fila['precio']: Precio.
  '''
  global lPro

  nV = tLados = 0
  tPrecios = tPrVeReal = tNetos = 0.00
  bImpar = True
  st = titulo("Neto ofic.", 11)
  for l in lPro:
    if (l['estatus'] in ('P', 'C')):
      nV += 1
      tLados += l['lados']
      tPrecios += l['precio']
      tPrVeReal += l['prVeRe']
      tNetos += l['ingNeOf']
    sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
    st += detalles(l, sColor, bCaidas, 'ingNeOf', 11)
  # Fin for
  st += CO.AMARI + 'TOTALES:'.ljust(45) +\
        FG.formateaNumero(tLados).rjust(3) +\
        FG.formateaNumero(tPrecios).rjust(11) +\
        FG.formateaNumero(tPrVeReal).rjust(14) +\
        FG.formateaNumero(tNetos, 2).rjust(11) + CO.FIN + "\n"
  st += FG.formateaNumero(len(lPro)) + ' negociaciones [' + \
        FG.formateaNumero(nV) + ' validas].'

  return ES.imprime(st.rstrip(' \t\n\r'))
Exemplo n.º 12
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
Exemplo n.º 13
0
def asesor(bImp=True):
  global droid
  global lNAs

  id = FG.selOpcionMenu(lNAs + [['Volver', -2]], 'Asesor')
  if (0 > id): return id

  if __name__ != '__main__':    # No se ha creado la lista de Propiedades lPro. No he podido.
    resp = ES.siNo(droid, 'propiedades', 'Desea mostrar las propiedades'
                ' de '+ lAse[id-1]['name'], False)
    tCap = tCer = 0.00
    nF = nV = tLados = 0
    bImpar = True
    if ('S' == resp):
      st = PRO.titulo('Comision', 11)
      for l in PRO.lPro:
        if (40 < len(l)):
          if not (isinstance(l['asCapId'], int)) or\
              not (isinstance(l['asCerId'], int)):
            continue
          if (id != l['asCapId']) and (id != l['asCerId']): continue
          if (l['estatus'] in ('P', 'C')) and (id == l['asCapId']):
            try:
              tCap += float(l['capPrbr'])
            except: pass
          if (l['estatus'] in ('P', 'C')) and (id == l['asCerId']):
            try:
              tCer += float(l['cerPrbr'])
            except: pass
          nF += 1
          if (l['estatus'] in ('P', 'C')):
            nV += 1
            tLados += l['lados']
      #    if ('S' == resp):
          sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE)
          st += PRO.detalles(l, sColor, True, 'capPrbr', 'asCapId',
                                'cerPrbr', 'asCerId', id, 11)
      # Fin for
      st += CO.AMARI + 'Tiene ' + FG.formateaNumero(nF) +\
            ' negociaciones [' + FG.formateaNumero(nV) + ' validas].' +\
            CO.FIN + '\n'
    # Fin if ('S' == resp):
    else: st = ''
  # Fin if __name__ != '__main__':

  if bImp:
    if __name__ == '__main__':
      sMsj = ("%sID:%s %2d\n") % (CO.AZUL, CO.FIN, id)
    else: sMsj = ''
    ind  = id - 1
    dic = lAse[ind]
    for ll in dMsj:
      if not dMsj[ll]: continue
      if 'tCap' == ll: break      # De aqui en adelante no son 'propiedades' (variables) del asesor.
      if 'pvrCaptador' == ll and __name__ != '__main__':    # No se ha creado la lista de Propiedades lPro. No he podido.
        if (0 < nF): sMsj += st    # Si la respuesta sobre las propiedades fue 'Si', Despliega las propiedades donde ha participado el asesor.
      if ll in ('tCap', 'tCer', 'tCapCer'): continue  # Solo para verificar valores.
      sMsj += COM.prepLnMsj(dMsj, dic, ll)

    if not bMovil and __name__ != '__main__':
      dic = {'tCap':tCap, 'tCer':tCer, 'tCaptCer':tCap+tCer}
      sMsj += COM.prepLnMsj(dMsj, dic, 'tCap', 'n', '22', 2)
      sMsj += COM.prepLnMsj(dMsj, dic, 'tCer', 'n', '22', 2)
      sMsj += COM.prepLnMsj(dMsj, dic, 'tCaptCer', 'n', '12', 2)
    opc = ES.imprime(sMsj.rstrip(' \t\n\r'))
  return opc, ind
Exemplo n.º 14
0
try:
	f = open(DIR + 'control.txt', "r")
	data = f.read()
	lControl = [linea.strip().split(';')
									for linea in data.rstrip().split('\n')]
except:
	lControl = [['0', nombArch] for nombArch in lDATA]
dControl = {linea[1].strip():[linea[0].strip(), linea[0].strip()]
					for linea in lControl if FG.esEntero(linea[0].strip())}
lBancosHoy = None		# La lista de bancos de hoy esta vacia al principio.
for DATA in lDATA:
	if 'control.txt' != DATA:
		(timeAnterior, timeNuevo) = dControl.get(DATA, ['0', '-1'])
	else: timeAnterior = timeNuevo = 0
	segsDiferencia = int(timeNuevo) - int(timeAnterior)
	sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE, CO.AZUL)
	print("%sLeyendo%s %s remoto. Local modificado hace: %d seg del remoto" %
						(sColor, CO.FIN, DATA, segsDiferencia))
	if 'control.txt' != DATA and 0 >= segsDiferencia:
		if 0 == segsDiferencia:
			print("%s, %slocal; ya esta actualizado con%s %d lineas! El %s" % \
								(DATA, sColor, CO.FIN, ES.cLineas(DATA),
													ctime(int(timeAnterior))))
			continue
		elif 'archsBanco.txt' != DATA:
			print("%s %sno está en el archivo de control!%s" % (DATA, CO.ROJO,
																	CO.FIN))
	try:
		data = urlopen(URL + DATA, None, 10).read().decode('ISO-8859-1')	# None, ningun parametro es enviado al servidor; 10, timeout.
		bLeido = True												# No hubo error de lectura desde el servidor.
	except:
Exemplo n.º 15
0
def actualizar():

    ind = ES.entradaConLista(droid, 'Busqueda del servidor',\
                    'Seleccione servidor', lSitios)  # Busca el servidor.
    if (None == ind) or (ind == (len(lSitios)-1)) or (len(lSitios) <= ind) or \
              (0 > ind): # Se asegura de tener el indice correcto.
        return ES.muestraFin()
        sys.exit()
    IPServ = lIPs[ind]
    if ((ind == (len(lSitios) - 2)) or ('' == IPServ)):
        IPServ = ES.entradaNombre(droid, 'IP del servidor',
                                  'Introduzca IP del servidor', IPServ[0:10])
    print("Obteniendo archivo desde %s (%s)." % (lSitios[ind], IPServ))
    if droid:
        decip = droid.wifiGetConnectionInfo().result['ip_address']
        hexip = hex(decip).split('x')[1]
        dirL = int(hexip, 16)
        miDirIP = socket.inet_ntoa(struct.pack("<L", dirL))
    else:
        miDirIP = obtenerIP(
            IPServ)  # Esta rutina fue la unica que encontre para mi IP.

    print("Mi direccion IP es: %s" % miDirIP)
    try:
        if IPServ[0:IPServ.rindex('.')] != miDirIP[0:miDirIP.rindex(
                '.'
        )]:  # Las tres primeras partes de ambos IPv4 deben ser iguales.
            print("El servidor seleccionado %s es errado." % IPServ)
            return ES.muestraFin()
            sys.exit()
    except ValueError:  # La funcion rindex (busca indece desde el final de la cadena), no consigue el '.'.
        print("ERROR EXTRA#O DE RED")  # Este error NUNCA deberia ocurrir.
        return ES.muestraFin()
        sys.exit()

# Se trata de saber, cuando se actualizo por ultima vez un archivo. En el nuevo control.txt,
# ademas de la informacion del sistema, tambien se guardara la fecha de descarga de cada archivo.
# dControl = ES.cargaDicc("control.txt")	# Diccionario de control, antes de recibir el nuevo. No implementado 27/08/2019.

    URL = "http://" + IPServ + ':8080/storage/'
    bImpar = True
    data = urlopen(URL + CONTROL, None, 10).read().decode(
        'ISO-8859-1'
    )  # None, ningun parametro es enviado al servidor; 10, timeout.
    if None == data:
        print('ERROR. No hubo carga.')
        sys.exit()
    f = open(DIR + CONTROL, "w")
    if f:
        archivos = data.split('\n')
        fechaGrabado = archivos.pop(0)
        f.write('Datos grabados: ' + fechaGrabado)
        ahora = strftime("\nDatos descargados: %a, %d/%m/%Y %-l:%M:%S %p\n",
                         localtime())
        f.write(ahora)
        f.close()
    else:
        print('ERROR. No se pudo escribir en el archivo.')
        sys.exit()
    for nombreArchivo in archivos:
        #    if nombreArchivo[5:6].isdigit(): continue      # La primera linea es una fecha. El primer caracter es un digito.
        nombreArchivo = nombreArchivo.rstrip(' \t\n\r')
        if not nombreArchivo: continue
        sColor, bImpar = ES.colorLinea(bImpar, CO.VERDE, CO.AZUL)
        print("%sLeyendo%s %s remoto." % (sColor, CO.FIN, nombreArchivo))
        try:
            data = urlopen(URL + nombreArchivo, None, 10).read().decode(
                'ISO-8859-1'
            )  # None, ningun parametro es enviado al servidor; 10, timeout.
            bLeido = True  # No hubo error de lectura desde el servidor.
        except:
            print("%sERROR LEYENDO%s %s %sREMOTO.%s" %
                  (CO.ROJO, CO.FIN, nombreArchivo, CO.ROJO, CO.FIN))
            bLeido = False
        if bLeido:  # Si no hubo error de lectura desde el servidor.
            try:
                f = open(DIR + nombreArchivo, "w")
                bAbierto = True  # No hubo error al abrir para escribir en archivo local.
            except:
                print("%sERROR AL TRATAR DE ABRIR%s %s%s %sPARA ESCRITURA.%s" % \
                          (CO.ROJO, CO.FIN, DIR, nombreArchivo, CO.ROJO, CO.FIN))
                bAbierto = False
            if bAbierto:  # Si no hubo error al abrir para escribir en archivo local.
                print("%sEscribiendo%s %s local..." %
                      (sColor, CO.FIN, nombreArchivo))
                try:
                    f.write(data)
                    bEscrito = True  # No hubo error escribiendo en el archivo local.
                except:
                    print("%sERROR AL TRATAR DE ESCRIBIR%s %s." %
                          (CO.ROJO, CO.FIN, nombreArchivo))
                    bEscrito = False
                finally:
                    f.close()
                if bEscrito:
                    print(
                        "%s %sactualizado con%s %d lineas!" %
                        (nombreArchivo,
                         (CO.CYAN if 'heute.txt' == nombreArchivo else sColor),
                         CO.FIN, ES.cLineas(nombreArchivo)))
                # Fin if bEscrito
            # Fin if bAbierto
        # Fin if bLeido
    # Fin for
    return ES.muestraFin()


# Funcion actualizar
Exemplo n.º 16
0
 bImpar = False
 for v in lCed:
   iL += 1
   if '' == v or '' == v.strip() or None == v or not v or \
                                               not v.lstrip('0').isdigit():
     print('Linea: ' + str(iL) + ', v: ' + v)
     break
   try:
     if dicc[v][2].isdigit() and dicc[v][3].isdigit():	# Linea corta
       if 0 == (iL%100): print("%8d %30.30s Nuc==>> %s Cta==>> %s" % \
               (int(dicc[v][0]), dicc[v][1], dicc[v][2], dicc[v][3]))
       nC += 1
     elif dicc[v][4].isdigit() and dicc[v][5].isdigit():	# Linea larga
       if sCed:
         if sCed.lstrip('0') == v.lstrip('0'):
           sColor, bImpar = ES.colorLinea(bImpar, CO.AZUL, CO.CYAN)
           print("%s%5d: %8d %30.30s Nuc==>> %s Cta==>> %s%s" % (sColor,
             iL, int(dicc[v][0]), dicc[v][1], dicc[v][4], dicc[v][5], CO.FIN))
       elif 0 == (iL%500):
         sColor, bImpar = ES.colorLinea(bImpar, CO.AZUL, CO.CYAN)
         print("%s%5d: %8d %30.30s Nuc==>> %s Cta==>> %s%s" % (sColor, iL,
               int(dicc[v][0]), dicc[v][1], dicc[v][4], dicc[v][5], CO.FIN))
       nL += 1
     else:
       print(("%sERROR: (Linea:%d{Corta:%d/Larga:%d})%s;%s(%d):%25.25s\n"
               "Nucleo: {Corta:%s|Larga:%s}; Cuenta: {Corta:%s|Larga:%s}") % \
               (CO.ROJO, iL, nC, nL, CO.FIN, dicc[v][0], len(dicc[v][0]),
               dicc[v][1], dicc[v][2], dicc[v][4], dicc[v][3], dicc[v][5]))
       break
   except:
     print(CO.ROJO + 'PROBABLEMENTE HAY UN ERROR (Linea:' + str(iL) + \
Exemplo n.º 17
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
Exemplo n.º 18
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