コード例 #1
0
def ganYperAcum():
  'Lee los datos de ganancias y perdidas acumulado y los despliega'
  global lGyPAc

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

  sTitPrestamos = CO.AZUL + "CTA " + "DESCRIPCION".ljust(35) + \
                    "Ingresos".rjust(15) + "Egresos".rjust(15) + CO.FIN + "\n"
  st = sTitPrestamos
  
  rTotIng = 0.00; rTotEgr = 0.00
  for l in lGyPAc:
    nF += 1
#    sColor, bImpar = ES.colorLinea(bImpar, VERDE)
# 0:Cuenta,1:Descripcion,2:Ingresos,3:Egresos
    if '4--' == l[0]: rTotIng = float(l[2])
    if '5--' == l[0]: rTotEgr = float(l[3])
    if '-' == l[0][2:3]: sColor = CO.VERDE
    else: sColor = ''
    if 0.00 != float(l[2]): sIng = FG.formateaNumero(l[2], 2).rstrip()
    else: sIng = ''
    if 0.00 != float(l[3]): sEgr = FG.formateaNumero(l[3], 2).rstrip()
    else: sEgr = ''
    st += sColor + l[0].ljust(3) + ' ' + l[1][0:35].ljust(35) +\
			sIng.rjust(15) + sEgr.rjust(15) + CO.FIN + "\n"
# Fin for
  sTotIng = FG.formateaNumero(rTotIng, 2)
  sTotEgr = FG.formateaNumero(rTotEgr, 2)
  sDif    = FG.formateaNumero(rTotIng + rTotEgr, 2)
  st += "%sTOT Ingresos: %s%s%s, Egresos: %s%s%s; Dif: %s%s" % (CO.CYAN,
          CO.VERDE, sTotIng, CO.CYAN, CO.ROJO, sTotEgr, CO.CYAN, CO.FIN, sDif)
  ES.imprime(st.rstrip(' \t\n\r'))
コード例 #2
0
def detalles(l, sColor, bCaidas=True, *col):
#  print(l)    
  if (10 == len(l['fecRes'])): fr = l['fecRes'][0:6] + l['fecRes'][-2:]
  else: fr = ''.ljust(8)
  if (10 == len(l['fecFir'])): ff = l['fecFir'][0:6] +l['fecFir'][-2:]
  else: ff = ''.ljust(8)
#  print(col)
  if (l['estatus'] in ('S')):
    if not bCaidas: return ''
    sColor = CO.ROJO
# Cada columna a agregar podria tener dos o seis campos; dos:
# indice de la lista del campo a agregar, longitud de ese campo.
# Si se agregan 6 valores: se compara el segundo (indice de la lista)
# con el valor en el quinto parametro. Si la comparacion es verdadera;
# el campo identificacado en el 1er valor se sumara; luego, se compara
# el cuarto con el quinto. Si la comparacion es verdadera; el campo
# identificacado en 3er valor se sumara. El sexto valor es la longitud.
  sCol = ''
  if (2 == len(col)):
    sCol = FG.formateaNumero(l[col[0]], 2).rjust(col[1])
  elif (6 == len(col)):
    if (l['estatus'] in ('P', 'C')):
      comi = 0.00    
      if (col[4] == l[col[1]]): comi += l[col[0]]
      if (col[4] == l[col[3]]): comi += l[col[2]]
      sCol = FG.formateaNumero(comi, 2).rjust(col[5])
    else: sCol = '0.00'.rjust(col[5])
  return sColor + l['codigo'].ljust(7) + fr.ljust(9) + ff.ljust(9) +\
        l['nombre'][0:20].ljust(21) + str(l['lados']).rjust(2) +\
        (l['moneda'] + FG.formateaNumero(l['precio'])).rjust(11) +\
        FG.formateaNumero(l['prVeRe']).rjust(14) +\
        sCol + CO.FIN + "\n"
コード例 #3
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
コード例 #4
0
def cargar(mostrar=False, esperar='Espere un momento, por favor...'):
    global control

    if mostrar:
        if droid:
            droid.dialogCreateHorizontalProgress('Century21 Puente Real',
                                                 esperar, 100)
            droid.dialogShow()
            droid.dialogSetCurrentProgress(15)
        else:
            print(esperar)
    Con.prepararListaDeContactos()
    Cli.prepararListaDeClientes()
    Age.prepararListaDeAgendas()
    Tur.prepararListaDeTurnos()
    ASE.prepararListaDeAsesores()
    PRO.prepararListaDePropiedades()
    PRO.prepararListas()  # totales en propiedades.
    if mostrar:
        if droid: droid.dialogSetCurrentProgress(60)
        else: print('Listas listas!')
    COM.prepararDiccionarios()
    fc = open(DIR + COM.CONTROL, 'r')
    if fc: control = fc.read()
    else: control = ''
    if mostrar:
        if droid: droid.dialogSetCurrentProgress(95)
        else: print('Diccionarios listos!')
    if droid and mostrar: FG.limpiarPantalla()
コード例 #5
0
def detalleConcepto(ci, sNombre, lCon, lDesc):
    'Muestra el detalle de Concepto de un socio.'
    #  sTitulo = "Detalle de un Concepto"
    sMensaje = ''
    # 0:Cedula, 1:Concepto, 2:Valor fijo, 3: Valor variable, 4:Saldo, 5:Cuota
    sMensaje = "%sSocio: %s %s%s\n" % (
        CO.CYAN, FG.formateaNumero(ci), sNombre.lstrip().split('|')[0], CO.FIN
    )  # Cedula, Nombre, Codigo y descripcion del concepto.
    sVaFij = FG.formateaNumero(lCon[2], 2)  # Valor fijo
    sVaVar = FG.formateaNumero(lCon[3], 2)  # Valor variable
    sSaldo = FG.formateaNumero(lCon[4], 2)  # Saldo
    sCuota = FG.formateaNumero(lCon[5], 2)  # Cuota
    sMensaje += "%sCodigo del Concepto:%s %s\n" % (CO.AZUL, CO.FIN, lCon[1])
    sMensaje += "%sDescripcion:%s %s\n" % (CO.AZUL, CO.FIN, lDesc)
    sMensaje += "%sValor fijo:%s BsF. %*.*s\n" % (CO.AZUL, CO.FIN, len(sVaFij),
                                                  len(sVaFij), sVaFij)
    sMensaje += "%sValor variable:%s BsF. %*.*s\n" % (
        CO.AZUL, CO.FIN, len(sVaVar), len(sVaVar), sVaVar)
    sMensaje += "%sSaldo del Concepto:%s BsF. %*.*s\n" % (
        CO.AZUL, CO.FIN, len(sSaldo), len(sSaldo), sSaldo)
    sMensaje += "%sMonto de la cuota:%s BsF. %*.*s\n" % (
        CO.AZUL, CO.FIN, len(sCuota), len(sCuota), sCuota)
    # Fin for
    opc = ES.imprime(sMensaje.rstrip(' \t\n\r'))
    return opc
コード例 #6
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'))
コード例 #7
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
コード例 #8
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
コード例 #9
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
コード例 #10
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
コード例 #11
0
def selFuncionInicial(
        nOpciones=7):  # nOpciones: Primeras opciones de lMenu a desplegar.
    ''' Menu desplegado al inicio. nOpciones = 6: <Cuota>, <Comisiones>,
    <Nombre> ..... y <Salir>. '''

    return FG.selOpcionMenu(lMenu[0:nOpciones] + lMenu[(len(lMenu) - 1):],
                            'Inicio')
コード例 #12
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])
コード例 #13
0
def selEstatus():
    global dEst

    lEst = [(dEst[key], key) for key in dEst]
    st = FG.selOpcionMenu(lEst + [['Volver', 'v']], 'Estatus')

    return st
コード例 #14
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
コード例 #15
0
def prepLnMon(desc, num, dec=0, ln='', mon='$'):
    try:
        if (0 != num):            return ("%s%s:%s %" + ln + "s\n")\
           % (CO.AZUL, desc, CO.FIN, FG.numeroMon(num, dec, mon))
        else:
            return ''
    except TypeError:
        muestraError('prepLnMon', desc, num, ln, dec)
        return ''
コード例 #16
0
def prepLnTel(desc, tel, ln=''):
    try:
        if ('' != tel):            return ("%s%s:%s %" + ln + "s\n")\
        % (CO.AZUL, desc, CO.FIN, FG.formateaNumeroTelefono(tel))
        else:
            return ''
    except TypeError:
        muestraError('prepLnTel', desc, tel, ln)
        return ''
コード例 #17
0
def prepLnPorc(desc, num, dec=0, ln=''):
    try:
        if (0 != num):            return ("%s%s:%s %" + ln + "s\n")\
                 % (CO.AZUL, desc, CO.FIN, FG.numeroPorc(num, dec))
        else:
            return ''
    except TypeError:
        muestraError('prepLnPorc', desc, num, ln, dec)
        return ''
コード例 #18
0
def prepLnNum(desc, num, dec=0, ln=''):
    #  print(CO.ROJO + 'DESC EN <prepLnNum>:' + CO.FIN, desc, num, dec, ln)
    try:
        if (0 != num):            return ("%s%s:%s %" + ln + "s\n")\
                 % (CO.AZUL, desc, CO.FIN, FG.formateaNumero(num, dec))
        else:
            return ''
    except TypeError:
        muestraError('prepLnNum', desc, num, ln, dec)
        return ''
コード例 #19
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
コード例 #20
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'))
コード例 #21
0
def selMes(lTMe, incluirTodos=False):

    if incluirTodos: nvaLst = [['Todos', 't']]
    else: nvaLst = []
    for l in lTMe:
        nvaLst.append([l[0][0:4] + ' ' + CO.meses[int(l[0][5:])], l[0]])
    mes = FG.selOpcionMenu(nvaLst + [['Volver', 'v']], 'Mes')
    if ('v' == mes): return 'v', 'v'
    if ('t' == mes): return 't', 't'

    return mes[0:4], mes[5:]
コード例 #22
0
    def __init__(self, file_name, sheetname):
        if file_name[:1] != '\\':
            self.filePath = General.get_absolute_path(file_name[:])
        else:
            self.filePath = file_name
        logger.info('\n' +self.filePath, False, True)

        'Loading the workbook'
        self.sheetName = sheetname
        self.wb = load_workbook(self.filePath, False)
        self.sheet = self.wb.get_sheet_by_name(self.sheetName)
コード例 #23
0
def mSocio(Nombre, ci, bCadena=True):
    global dPer

    if (bCadena):
        l = Nombre.rstrip().split(
            '|'
        )  # Nombre, nucleo, fecha de nacimiento, Disponibilidad y Extension
    else:
        l = Nombre[1:]

    if (bCadena): sFecha = lFecha()
    else: sFecha = Nombre[len(Nombre) - 1]
    st = CO.AMARI + sFecha + ' (Descargado:' + CO.FIN +\
          lFecha('persona.txt', '') + ')' + "\n" + CO.AZUL +\
          "Cedula:".rjust(21) + CO.FIN
    if (bCadena): st += " %s" % (FG.formateaNumero(ci))
    else: st += " %s" % Nombre[0]
    nJustDerecha = 21
    if 0 < len(l) and '' != l[0]:
        if len(l[0].rstrip(' \t\n\r')) > (
                CO.nCarLin - nJustDerecha -
                1):  # Cars a justificar derecha + 1 espacio despues ':'.
            nJustDerecha = CO.nCarLin - len(l[0].rstrip(' \t\n\r')) - 1
        st += "\n"
        st += CO.AZUL + "Nombre:".rjust(nJustDerecha) + CO.FIN + " %s" %\
                                                          (l[0].rstrip(' \t\n\r'))
    nJustDerecha = 21
    if 1 < len(l) and '' != l[1]:
        st += "\n" + CO.AZUL + "Nucleo:".rjust(nJustDerecha) + CO.FIN
        if (bCadena):
            st += " %s" % (CO.dNucleo.get(l[1], 'ESTA ERRADO EN LA BD'))
        else:
            st += " %s" % (l[1])
    if 2 < len(l) and '' != l[2]:
        st += "\n" + CO.AZUL + "Fecha de nacimiento:".rjust(
            nJustDerecha) + CO.FIN
        if (bCadena): st += " %2s/%2s/%4s" % (l[2][0:2], l[2][2:4], l[2][4:])
        else: st += " %s" % (l[2])
    if 3 < len(l) and '' != l[3]:
        st += "\n"
        st += CO.AZUL + "Disponibilidad:".rjust(nJustDerecha) + CO.FIN + " %s" %\
                                                                            (l[3])
    if 4 < len(l) and '' != l[4]:
        st += "\n" + CO.AZUL + "Extension:".rjust(nJustDerecha) + CO.FIN
        if (bCadena): st += " %s" % (CO.dExtension.get(l[4], 'ERRADA'))
        else: st += " %s" % (l[4])
    if not bCadena:
        st += "\n" + CO.AZUL + "Fe ingreso IPASPUDO:".rjust(nJustDerecha) +\
                                                          CO.FIN + " %s" % (l[5])
        st += "\n" + CO.AZUL + "Servicio funerario:".rjust(nJustDerecha) +\
                                                          CO.FIN + " %s" % (l[6])
    opc = ES.imprime(st)
    return opc
コード例 #24
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
コード例 #25
0
def xNegociacion():
  global lPro
  lNeg = [(COM.dNeg[key], key) for key in COM.dNeg]

  ng = FG.selOpcionMenu(lNeg + [['Volver', 'v']], 'Negociacion')
  if ('v' == ng): return ng

  lCod = []
  for l in lPro:
    if (ng != l['negoc']): continue
    lst = (l['codigo']+'-'+l['nombre'], l['id']-1)
    lCod.append(lst)
  # for l in lPro

  return mPropiedad(lCod, COM.dNeg[ng])
コード例 #26
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"
コード例 #27
0
def totTotales(tipoTot, tLados, tPvr, tCap, tCer, tLaCap, tLaCer,
                tam=20, subrayar=False, mTPrecioVentaRea=True):
  '''
    Muestra la linea de totales de los totales. Se subraya antes
    del penultimo subtotal, si existe, antes del total de la oficina.
    mTPrecioVentaReal indica si se debe mostrar el precio de venta real
    de la oficina. En el caso de ambos lados en la oficina.
  '''
  return CO.AMARI + (CO.SUBRAYADO if subrayar else '') +\
        tipoTot.ljust(tam) + FG.formateaNumero(tLados).rjust(4) +\
        FG.formateaNumero(tPvr, 2).rjust(14) +\
        FG.formateaNumero(tCap+tCer, 2).rjust(12) +\
        (FG.formateaNumero(tCap, 2) + '(' +\
        FG.formateaNumero(tLaCap) + ')').rjust(15) +\
        (FG.formateaNumero(tCer, 2) + '(' +\
        FG.formateaNumero(tLaCer) + ')').rjust(15) + CO.FIN + "\n"
コード例 #28
0
def selOpcion(Menu, descr):
    menu = Menu

    opc = FG.selOpcionMenu(menu + [['Volver', -1]], descr)
    if isinstance(opc, int) and 0 > int(opc): return opc
    else:
        if (0 == opc.find('PRO')): from c21 import Propiedades as PRO
        elif (0 == opc.find('Con')): from c21.Contacto import Contacto as Con
        elif (0 == opc.find('Cli')): from c21.Cliente import Cliente as Cli
        elif (0 == opc.find('Tur')): from c21.Turno import Turno as Tur
        elif (0 == opc.find('Age')): from c21.Agenda import Agenda as Age
        func = eval(
            opc
        )  # Evaluar contenido de opc; el cual, debe ser una funcion conocida.
        if isinstance(func, types.FunctionType):
            return func()  # Si la cadena evaluada es una funcion, ejecutela.
        else:
            return opc
コード例 #29
0
def xAsesor():
  global lPro

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

  lCod = []
  for l in lPro:
    if not (isinstance(l['asCapId'], int)) or \
       not (isinstance(l['asCerId'], int)):
      continue
    if (id != l['asCapId']) and (id != l['asCerId']): continue
    if ('S' == l['estatus']): caida = 'Caida: '
    else: caida = ''
    lst = (caida+l['codigo']+'-'+l['nombre'], l['id']-1)
    lCod.append(lst)
  # for l in lPro

  return mPropiedad(lCod, ASE.lAse[id-1]['name'])
コード例 #30
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
コード例 #31
0
def cargarFilas(lTot, nroReg, iNoReg1, iNoReg2, fMtoTot, iMtoTot1, iMtoTot2,
                sNumLote, sRif, sFechaValor):
    global bMerc, bMProv, bBan, bVzla, sCodCta

    st = ''
    if (bMerc or bMProv or bBan) and int(nroReg) != lTot[0]:
        st += ("%sError:%s El numero de registros de la primera(Mercantil)/"
               "ultima(Banesco) fila no concuerda con el numero de registros "
               "detalle.\n") % (CO.ROJO, CO.FIN)
        st += ("%sValor entre columnas %s y %s "
               "del primer/ultimo registro:%s %s%s%s.\n") % (
                   CO.AZUL, str(iNoReg1 + 1), str(iNoReg2), CO.FIN, CO.ROJO,
                   nroReg, CO.FIN)
        st += "%sNumero total de registros de detalle:%s %s%d%s.\n" % (
            CO.AZUL, CO.FIN, CO.ROJO, lTot[0], CO.FIN)
    if 0.005 < abs(fMtoTot - lTot[1]):
        st += (
            "%sError:%s El monto total de la primera fila no concuerda con la "
            "suma del monto total de depositos.\n") % (CO.ROJO, CO.FIN)
        st += "Valor entre columnas " + str(iMtoTot1) + " y " + str(iMtoTot2) + \
                " del primer registro: " + \
               (FG.formateaNumero(fMtoTot, 2) if FG.formateaNumero(fMtoTot, 2)
                else str(fMtoTot)) + '.\n'
        st += "Monto total de depositos en registros de detalle: " + \
                (FG.formateaNumero(lTot[1], 2) if FG.formateaNumero(lTot[1], 2)
                 else str(lTot[1])) + '.\n'
    if bMerc or bMProv or bBan:
        st += "%sNumero de lote:%s %s%s%s\n" % (CO.AZUL, CO.FIN, CO.CYAN,
                                                sNumLote, CO.FIN)
    if bMerc or bMProv or bBan:
        st += "%sRif:%s %s%s%s\n" % (CO.AZUL, CO.FIN, CO.CYAN,
                                     sRif[0:1] + '-' + sRif[1:], CO.FIN)
    if bMerc or bMProv or bBan:        st += "%sFecha valor:%s %s%s%s\n" % (CO.AZUL,
              CO.FIN, CO.CYAN, sFechaValor[6:] + '/' +\
              sFechaValor[4:6] + '/' +sFechaValor[0:4],
              CO.FIN)
    elif bVzla:
        st += "%sFecha valor:%s %s%s%s\n" % (CO.AZUL, CO.FIN, CO.CYAN,
                                             sFechaValor, CO.FIN)
    st += "%sCodigo de cuenta bancaria:%s %s%s%s.\n" % (
        CO.AZUL, CO.FIN, CO.CYAN, sCodCta[0:4] + '-' + sCodCta[4:8] + '-' +
        sCodCta[8:10] + '-' + sCodCta[10:], CO.FIN)
    st += "%sSe deposita a %d socios, la cantidad de %s bolivares.%s\n" % \
          (CO.VERDE, lTot[0],
           (FG.formateaNumero(lTot[1], 2) if FG.formateaNumero(lTot[1], 2)
            else lTot[1]), CO.FIN)
    return st
コード例 #32
0
import os
import time
import random
from lib import General

USER = os.environ['USERNAME']
CURRENT_TIME = time.asctime()
UNIQUESTRING = time.time()

if time.localtime()[3] > 12:
    AFTERNOON = True
else:
    AFTERNOON = False
    
import math as _math

def _get_area(diameter):
    radius = diameter /2.0
    area = _math.pi * radius * radius
    return area
AREA1 = _get_area(1)
AREA2 = _get_area(2)

FF_PROFILE = General.get_absolute_path('Browser/ff_profile')
コード例 #33
0
ファイル: Contact.py プロジェクト: vumvo/MyFirstGitHub
 def import_contact_by_uploading_file(self, file_path):
     abs_path = General.get_absolute_path(file_path)
     self._selenium2Library.choose_file(self.elements['txtImportFile'], abs_path)