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()
def muestra(self, imp=True): dic = Turno.dic sMsj = '' for campo in dic: if dic[campo] and hasattr(self, campo): if (campo in ('user_id', 'user_creo')): val = getattr(self, campo) sMsj += COM.prepLnCad(dic[campo][0], '[' + str(val) + '] ' +\ ASE.nombreAsesor(val)) else: sMsj += COM.prepLnMsj(dic, self, campo) if sMsj: opc = ES.imprime(sMsj.rstrip(' \t\n\r'))
def muestra(self, imp=True): dic = Cliente.dic sMsj = '' for campo in dic: if dic[campo] and hasattr(self, campo): sMsj += COM.prepLnMsj(dic, self, campo) if sMsj: opc = ES.imprime(sMsj.rstrip(' \t\n\r'))
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'))
def muestra(self, imp=True): dic = Contacto.dic sMsj = '' for campo in dic: if dic[campo] and hasattr(self, campo): val = getattr(self, campo) if ('user_id' == campo): sMsj += COM.prepLnCad(dic[campo][0], '[' + str(val) + '] ' +\ ASE.nombreAsesor(val)) elif (campo in ('deseo_id', 'tipo_id', 'zona_id', 'precio_id',\ 'origen_id', 'resultado_id')): func = 'COM.desc' + campo[0:campo.find('_id')].capitalize( ) # Puedo usar'_', pero '_id' es mas descriptivo. func += '(str(' + str(val) + '))' sMsj += COM.prepLnCad(dic[campo][0], '[' + str(val) + '] ' +\ eval(func)) else: sMsj += COM.prepLnMsj(dic, self, campo) if sMsj: opc = ES.imprime(sMsj.rstrip(' \t\n\r'))
def xEstatus(): global lPro st = COM.selEstatus() if ('v' == st): return -1 lCod = [] for l in lPro: if (st != l['estatus']): continue lst = (l['codigo']+'-'+l['nombre'], l['id']-1) lCod.append(lst) # for l in lPro return mPropiedad(lCod, COM.dEst[st])
def totEst(): ''' Agregar 1, correspondiente al 'estatus'. 0:filas, 1:tPrecio, 2:tLados, 3:tCompartidoConIva, 4:tFranquiciaSinIva, 5:tFranquiciaConIva, 6:tFranquiciaPagarR, 7:tRegalia, 8:tSanaf5PorCiento, 9:tOficinaBrutoReal, 10:tBaseHonorariosSo, 11:tBaseParaHonorari, 12:tCaptadorPrbr, 13:tGerente, 14:tCerradorPrbr, 15:tBonificaciones, 16:tComisionBancaria, 17:tIngresoNetoOfici, 18:tPrecioVentaReal, 19:tPuntos, 20:tCaptadorPrbrSel, 21:tCerradorPrbrSel, 22:tLadosCap, 23:tLadosCer, 24:tPvrCaptadorPrbrSel, 25:tPvrCerradorPrbrSel, 26:tPuntosCaptador, 27:tPuntosCerrador ''' global lTEs st = titTotales('Estatus', 20) bImpar = True tLados = tLaCap = tLaCer = 0 tPrVeReal = tCap = tCer = 0.00 for l in lTEs: try: bImpar, cad = detTotales(COM.descEstatus(l[0]), l[3], l[19], l[13], l[15], l[23], l[24], bImpar, 20, CO.ROJO if ('S'==l[0]) else False) st += cad except TypeError: print('ERROR detalle:') print(l) try: if (l[0] in ('P', 'C')): tPrVeReal, tCap, tCer = tPrVeReal+l[19], tCap+l[13], tCer+l[15] tLaCap, tLaCer, tLados = tLaCap+l[23], tLaCer+l[24], tLados+l[3] except: print('ERROR totales:') print(l[1], l[3], l[19], l[13], l[15], l[23], l[24]) try: st += totTotales('Total Oficina', tLados, tPrVeReal, tCap, tCer,\ tLaCap, tLaCer, 20) except: print('ERROR linea totales:') print(tPrVeReal, tCap, tCer, tLados, tLaCap, tLaCer) opc = ES.imprime(st.rstrip(' \t\n\r')) return opc
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'))
def totMesAsesor(): ''' 0:'agno-mes', 1:'id' del asesor, 2:filas, 3:tPrecio, 4:tLados, 5:tCompartidoConIva, 6:tFranquiciaSinIva, 7:tFranquiciaConIva, 8:tFranquiciaPagarR, 9:tRegalia, 10:tSanaf5PorCiento, 11:tOficinaBrutoReal, 12:tBaseHonorariosSo, 13:tBaseParaHonorari, 14:tCaptadorPrbr, 15:tGerente, 16:tCerradorPrbr, 17:tBonificaciones, 18:tComisionBancaria, 19:tIngresoNetoOfici, 20:tPrecioVentaReal, 21:tPuntos, 22:tCaptadorPrbrSel, 23:tCerradorPrbrSel, 24:tLadosCap, 25:tLadosCer, 26:tPvrCaptadorPrbrSel, 27:tPvrCerradorPrbrSel, 28:tPuntosCaptador, 29:tPuntosCerrador ''' global lTMA agno, mes = COM.selMes(lTMe, True) if ('v' == agno): return -1 todos = ('t' == agno) st = titTotales('Asesor', 21) bImpar = True tMeLados = tMeLaCap = tMeLaCer = 0 tLados = tLaCap = tLaCer = 0 tMePvr = tMeCap = tMeCer = tPvr = tCap = tCer = 0.00 idMes = '' for l in lTMA: if not todos: if (agno+'-'+mes.zfill(2)) != l[0]: continue try: if (idMes != l[0]): if ('' != idMes): st += totTotales('Total mes ' + idMes, tMeLaCap + tMeLaCer, tMePvr, tMeCap, tMeCer, tMeLaCap, tMeLaCer, 20) idMes = l[0] st += CO.CYAN + l[0] + CO.FIN + '\n' tMeLados = tMeLaCap = tMeLaCer = 0 tMePvr = tMeCap = tMeCer = 0.00 bImpar, cad = detTotales(ASE.nombreAsesor(l[1]), l[24] + l[25], l[26]+l[27], l[22], l[23], l[24], l[25], bImpar, 20) st += cad except TypeError: print('ERROR detalle:') print(l) try: if (1 < int(l[1])): tMePvr, tMeCap, tMeCer = tMePvr+l[26]+l[27], tMeCap+l[22],\ tMeCer+l[23] tMeLaCap, tMeLaCer, tMeLados = tMeLaCap+l[24], tMeLaCer+l[25],\ tMeLados+l[24]+l[25] if todos: tPvr, tCap, tCer = tPvr+l[26]+l[27], tCap+l[22], tCer+l[23] tLaCap, tLaCer, tLados = tLaCap+l[24], tLaCer+l[25],\ tLados+l[24]+l[25] except: print('ERROR totales:') print(l[0], l[1], l[2], l[3], l[22], l[23], l[24], l[25], l[26],\ l[27]) try: st += totTotales('Total mes ' + idMes, tMeLaCap + tMeLaCer, tMePvr, tMeCap, tMeCer, tMeLaCap, tMeLaCer, 20, todos) if todos: st += totTotales('Total Oficina', tLaCap + tLaCer, tPvr, tCap, tCer, tLaCap, tLaCer, 20, False, False) except: print('ERROR linea totales:') print(tMeLaCap, tMeLaCer, tMePvr, tMeCap, tMeCer, tLados, tPvr, tCap, tCer, tLaCap, tLaCer) opc = ES.imprime(st.rstrip(' \t\n\r')) return opc
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
elif ('M' == tipo): # 'tipo' contiene el valor devuelto por pop. Totales por mes. lTMe.append(l) # El primer elemento (0) de esta lista es el 'aaaa-mm'. elif ('E' == tipo): # 'tipo' contiene el valor devuelto por pop. Totales por mes. lTEs.append(l) # El primer elemento (0) de esta lista es el 'aaaa-mm'. elif ('AM' == tipo): # 'tipo' contiene el valor devuelto por pop. Totales por asesor y por mes. lTAM.append(l) # El primer elemento (0) de esta lista es el 'id' del asesor y el 2do (1) 'aaaa-mm'. elif ('MA' == tipo): # 'tipo' contiene el valor devuelto por pop. Totales por mes y por asesor. lTMA.append(l) # El primer elemento (0) de esta lista es 'aaaa-mm' y el 2do es el 'id' del asesor. elif ('T' == l.pop(0)): # Elimina el 2do item de 'l' y devuelve su valor. Anteriormente se elimino el 1ro. lTot = l # El primer elemento (0) pasa a ser el numero total de negociaciones. # Funcion prepararListas #Variables globales if __name__ == '__main__': lng = 80 COM.prepararDiccionarios('../data/') ASE.prepararListaDeAsesores('../data/') prepararListaDePropiedades('../data/', True) prepararListas('../data/') print('**** propiedades() ****') propiedades() print('**** totAsesor() ****') totAsesor() print('**** totMes() ****') totMes() print('**** totEst() ****') totEst() print('**** totAsesorMes() ****') totAsesorMes() print('**** totMesAsesor() ****') totMesAsesor()
def clientes(): global lMenu op = '' while ('' == op): op = COM.selOpcion(lMenu, 'Menu de clientes')
def mPropiedad(lCod, titOpc): global lPro, dMsj if (0 == len(lCod)): return elif (1 == len(lCod)): id = lCod[0][1] else: id = FG.selOpcionMenu(lCod + [['Volver', -2]], titOpc) if (0 > id): return id prop = getPropiedad(id) if None == prop: return None sMsj = '' moneda = prop['moneda'] try: for k in dMsj: val = prop[k] if k in ('negoc', 'estatus', 'estaC21', 'tipo_id',\ 'caracteristica_id', 'ciudad_id', 'municipio_id',\ 'estado_id', 'cliente_id'): if 'negoc' == k: cad = COM.descNegociacion(val) elif 'estatus' == k: cad = COM.descEstatus(val) elif 'estaC21' == k: cad = COM.descEstatusC21(val) elif 'tipo_id' == k: cad = COM.descTipo(str(val)) elif 'caracteristica_id' == k: cad = COM.descCaracteristica(str(val)) elif 'ciudad_id' == k: cad = COM.descCiudad(str(val)) elif 'municipio_id' == k: cad = COM.descMunicipio(str(val)) elif 'estado_id' == k: cad = COM.descEstado(str(val)) elif 'cliente_id' == k: cad = Cli.Cliente.nombre(val) else: cad = ':Descripcion no fue encontrada ?????' desc = dMsj[k][0] cad = '[' + str(val) + '] ' + cad sMsj += COM.prepLnCad(desc, cad) elif k in ('iva', 'pcFrq', 'pcReCaNa', 'pcRega', 'pcCap',\ 'pcGer', 'pcCer', 'asCapId', 'asCerId'): continue elif ('comision' == k): sMsj += COM.prepLnCad(dMsj[k][0], FG.numeroPorc(val, 3) +\ CO.AZUL + ' IVA: ' + CO.FIN +\ FG.numeroPorc(prop['iva'], 2)) elif k in ('frqSIva', 'frqCIva'): sMsj += COM.prepLnCad(dMsj[k][0],\ FG.numeroMon(val, 2, moneda) + ' [' +\ FG.numeroPorc(prop['pcFrq'], 3) + ']') elif (k == 'frqPaRe'): sMsj += COM.prepLnCad(dMsj[k][0], ' ' +\ FG.numeroMon(val, 2, moneda) + ' [' +\ FG.numeroPorc(prop['pcReCaNa'], 3) + ']') elif ('regalia' == k): sMsj += COM.prepLnCad(dMsj[k][0],\ FG.numeroMon(val, 2, moneda) + ' [' +\ FG.numeroPorc(prop['pcRega'], 3) + ']') elif ('capPrbr' == k): sMsj += COM.prepLnCad(dMsj[k][0],\ FG.numeroMon(val, 2, moneda) + ' [' +\ FG.numeroPorc(prop['pcCap'], 3) + ']') elif ('gerente' == k): sMsj += COM.prepLnCad(dMsj[k][0],\ FG.numeroMon(val, 2, moneda) + ' [' +\ FG.numeroPorc(prop['pcGer'], 3) + ']') elif ('cerPrbr' == k): sMsj += COM.prepLnCad(dMsj[k][0],\ FG.numeroMon(val, 2, moneda) + ' [' +\ FG.numeroPorc(prop['pcCer'], 3) + ']') else: sMsj += COM.prepLnMsj(dMsj, prop, k) # Fin for k in dMsj except KeyError: print('Propblemas con la llave:' + k + ', su valor es:' + val) pass tec = ES.imprime(sMsj.rstrip(' \t\n\r')) return tec
def turnos(): global lMenu op = '' while ('' == op): op = COM.selOpcion(lMenu, 'Menu de turnos')
def agendas(): global lMenu op = '' while ('' == op): op = COM.selOpcion(lMenu, 'Menu de citas')
def propiedades(bCaidas=True): global lMenu op = '' while ('' == op): op = COM.selOpcion(lMenu, 'Menu de propiedades')
def totales(): ''' 0:filas, 1:tPrecio, 2:tLados, 3:tCompartidoConIva, 4:tFranquiciaSinIva, 5:tFranquiciaConIva, 6:tFranquiciaPagarR, 7:tRegalia, 8:tSanaf5PorCiento, 9:tOficinaBrutoReal, 10:tBaseHonorariosSo, 11:tBaseParaHonorari, 12:tCaptadorPrbr, 13:tGerente, 14:tCerradorPrbr, 15:tBonificaciones, 16:tComisionBancaria, 17:tIngresoNetoOfici, 18:tPrecioVentaReal, 19:tPuntos, 20:tCaptadorPrbrSel, 21:tCerradorPrbrSel, 22:tLadosCap, 23:tLadosCer, 24:tPvrCaptadorPrbrSel, 25:tPvrCerradorPrbrSel, 26:tPuntosCaptador, 27:tPuntosCerrador ''' global lTot if not lTot: return sMsj = ("%d %snegociaciones validas%s\n") % (lTot[0], CO.AZUL, CO.FIN) sMsj += ("%sTOTALES:%s\n") % (CO.CYAN, CO.FIN) sMsj += COM.prepLnNum("Precio", lTot[1], 2) sMsj += COM.prepLnNum("Compartido con IVA", lTot[3], 2) sMsj += COM.prepLnNum("Lados", lTot[2]) sMsj += COM.prepLnNum("Franquicia a pagar reportada", lTot[6], 2) sMsj += COM.prepLnNum("Asesor captador PrBr", lTot[12], 2) sMsj += COM.prepLnNum("Gerente", lTot[13], 2) sMsj += COM.prepLnNum("Asesor cerrador PrBr", lTot[14], 2) sMsj += COM.prepLnNum("Bonificaciones", lTot[15], 2) sMsj += COM.prepLnNum("Comisiones bancarias", lTot[16], 2) sMsj += COM.prepLnNum("Ingreso neto de la oficina", lTot[17], 2) sMsj += COM.prepLnNum("Precio de venta real", lTot[18], 2) sMsj += COM.prepLnNum("Puntos", lTot[19], 2) opc = ES.imprime(sMsj.rstrip(' \t\n\r')) return opc
def totPor(): global lMenuTot return COM.selOpcion(lMenuTot, 'Totalizar')
def contactos(): global lMenu op = '' while ('' == op): op = COM.selOpcion(lMenu, 'Menu de contactos')
def buscProp(): global lMenuProEsp return COM.selOpcion(lMenuProEsp, 'Buscar una propiedad especifica')
def LstPropPor(): global lMenuLstPro return COM.selOpcion(lMenuLstPro, 'Listar propiedades')