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])
def depositos(): '''Maneja la lista de cheques y muestra los depositos de una fecha especifica.''' global lCh sFecha = ES.entradaFechaLocal(droid) lDep = [ l for l in lCh if '' != l[2] and 6 <= len(l[1]) and sFecha == l[4] ] # Nueva lista de cheques. Solo depositos (# cheque > 100000) if not lDep: ES.alerta(droid, 'DEPOSITOS X FECHA', "No hay depositos en esa fecha %s!" % sFecha) return -3 nlDep = len(lDep) if 1 == nlDep: return mCheque(lDep[0]) # print("Numero de item en arreglo: %5d\n" % nlDep) # lCheq = map(creaOp, lDep) # En vez de list 'comprehensions', como en lCheques. lCheq = list( map(COM.creaOp, lDep)) # En vez de list 'comprehensions', como en lCheques. indice = ES.entradaConLista(droid, 'DEPOSITOS ENCONTRADOS: ' + str(nlDep), 'Seleccione deposito', lCheq) if None == indice or 0 > indice: return -3 mCheque(lDep[indice])
def cheque(): '''Maneja la lista de cheques y muestra la informacion de uno o varios cheque(s).''' global lCh ch = ES.entradaNumero(droid, "CHEQUE", "Numero de cheque", "0", True, True) if None == ch or 0 > ch: ES.alerta(droid, 'CHEQUE', "Cheque no encontrado!") return None if 0 == ch: nCh = lCheques() if not nCh: return None else: mCheque(nCh) return None bEnc = False for l in lCh: if ch > int(l[1]): continue elif ch == int(l[1]): bEnc = True mCheque(l) # return # Comentada para poder mostrar mas de un cheque con el mismo numero. else: break # Fin for if not bEnc: ES.alerta(droid, 'CHEQUE', "El cheque %5d no fue encontrado." % ch) return None
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
def cargarNombres(nombArch='IPER*.TXT'): rutaDatos = DIR lFiles = [f for f in listdir(rutaDatos) if isfile(join(rutaDatos, f)) and fnmatch.fnmatch(f, nombArch)] lFiles.sort() if not lFiles: ES.alerta(droid, nombArch, "No hubo coincidencias!") return None return lFiles
def buscarNombre(): global dPer nombre = ES.entradaNombre(droid, 'Nombre del socio') if None == nombre: return -10, None nombres = [] cedulas = [] try: for k, v in dPer.items(): if 0 <= v.lower().find(nombre.lower()): nombres.append(v) cedulas.append(k) except UnicodeError: pass if not nombres: ES.alerta(droid, nombre, "No hubo coincidencias!") return -10, None indice = ES.entradaConLista(droid, 'SOCIOS ENCONTRADOS', 'Seleccione socio(a)', nombres) if None == indice or 0 > indice: return -10, None return int(cedulas[indice]), nombres[indice]
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]