コード例 #1
0
def concepto(ci=-1, bLN=True):
    '''Maneja la lista de los conceptos de un socio en Nomina y
    muestra el detalle de cualquiera de los conceptos.'''
    global lNom, lNomCNE

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

    nF = 0
    lCodigo = []
    lConcepto = []
    lDescripcion = []
    for l in lN:
        if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
        elif l[0] in ('', '0', str(ci)):
            lCodigo.append(l[1])  # Codigo del concepto
            lDescripcion.append(
                l[1] + ':' + COM.mConcepto(l[1]))  # Descripcion del concepto
            lConcepto.append(l)  # Lista del concepto
            nF += 1
        else:
            break
    # Fin for
    if 0 >= nF: return None
    else:
        indice = ES.entradaConLista(droid, 'Conceptos', '', lDescripcion)
        if None == indice or 0 > indice: return None
        # if indice < len(lCodigo): detalleConcepto(ci, sNombre, lConcepto[indice], lDescripcion[indice].lstrip().split(':')[1])
        if indice < len(lCodigo):
            return detalleConcepto(ci, sNombre, lConcepto[indice],
                                   COM.mConcepto(lCodigo[indice]))
        else:
            return None
コード例 #2
0
 def buscarArchivo(lFiles):
     if None == lFiles or 1 > len(lFiles): return None
     if 1 == len(lFiles): return (lFiles[0])
     indice = ES.entradaConLista(droid, 'ARCHIVOS ENCONTRADOS',
                                 'Seleccione nombre', lFiles)
     if None == indice or 0 > indice: return None
     return (lFiles[indice])
コード例 #3
0
def servicio(ci=-1):
  '''Maneja la lista de la carga de un socio en ServiFun y
    muestra la cobertura a cualquiera de la carga.'''
  global lCgS, lPa

  if 0 >= ci: return -7

  nF = 0
  lCodigo = []
  lParentesco = []
  lNombre = []
  for l in lCgS:
    if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
    elif l[0] in ('','0',str(ci)):
      lPar = l[3].rstrip().split('-')			# Parentesco: codigo-descripcion
      if 1 < len(lPar): lCod = lPar[0]
      else: lCod = '0'
      lCodigo.append(lCod)						# Titular
      lNombre.append(l[2])
      for lp in lPa:
        if lCod != lp[0]: continue				# Codigo del parentesco
        lParentesco.append(lp[1])
      nF += 1
    else: break
# Fin for
  if 0 >= nF: return None
  else:
    indice = ES.entradaConLista(droid, 'Parentesco', '', lParentesco)
    if None == indice or 0 > indice: return None
    if indice < len(lCodigo): return servicioEspecifico(lCodigo[indice],
                                                              lNombre[indice])
    else: return None
コード例 #4
0
def prestamo(ci):
    '''Maneja la lista de los prestamos de un socio en Prestamos y
    muestra el detalle de cualquiera de los prestamos.'''
    global lPre

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

    nF = 0
    lCodigo = []
    lPrestamo = []
    lDescripcion = []
    for l in lPre:
        if 0 == nF and ('' == l[0] or ci > int(l[0])): continue
        elif l[0] in ('', '0', str(ci)):
            lCodigo.append(l[1])  # Codigo del prestamo
            lDescripcion.append(
                l[1] + ':' + COM.mConcepto(l[1]))  # Descripcion del prestamo
            lPrestamo.append(l)  # Lista del prestamo
            nF += 1
        else:
            break
    # Fin for
    if 0 >= nF: return None
    else:
        indice = ES.entradaConLista(droid, 'Prestamos', '', lDescripcion)
        if None == indice or 0 > indice: return None
        # if indice < len(lCodigo): detallePrestamo(ci, sNombre, lPrestamo[indice], lDescripcion[indice].lstrip().split(':')[1])
        if indice < len(lCodigo):
            return detallePrestamo(ci, sNombre, lPrestamo[indice],
                                   COM.mConcepto(lCodigo[indice]))
        else:
            return None
コード例 #5
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])
コード例 #6
0
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])
コード例 #7
0
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]
コード例 #8
0
		 'archsBanco.txt'
		]

def getNetworkIP():
	s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
	s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
	s.connect(('<broadcast>', 0))
	return s.getsockname()[0]
def obtenerIP(servidor):		# Es la unica rutina que consegui para obtener mi IP.
	s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
	s.connect((servidor, 80))	# servidor puede ser cualquiera, no es necesario usar el seleccionado.
	return s.getsockname()[0]	# el IP es el primer elemento de la tupla devuelta. El 2do elemento parece ser una puerta.

ES.muestraInicio("IPASPUDO: J-30619229-8.")

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.
	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', '192.168.0.')
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:
コード例 #9
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
コード例 #10
0
else:
    if bMovil:
        print("%sNombre de archivo de salida%s '%s' %serrado.%s" % \
                  (CO.ROJO, CO.FIN, nombArchSalCompleto, CO.ROJO, CO.FIN))
    else:
        for linea in salida:
            print(linea.encode('utf-8'))
    sys.exit()
#print(linUltValue)
#print(nLineas)
#print(linUltValue)

print("Fin:    %s%s%s" % (CO.AZUL, strftime("%Y/%m/%d %H:%M:%S"), CO.FIN))
if not bControlPersonal and 'nomina_' == prefijoNombArch:
    ind = ES.entradaConLista(
        droid, 'Desea preparar la creación'
        ' de controlpersonal', 'Seleccione', ['Si', 'No'])
    if not ((1 <= ind) or (0 > ind) or
            (None == ind)):  # Se asegura de tener el indice correcto.
        ind = 0
    if 0 == ind:
        crearControlPersonal = crearControlPersonal.replace(\
                      'controlpersonal', 'controlpersonal_' + sufijoSalida)
        f.write(unicode(crearControlPersonal))
        f.write(unicode('INSERT INTO controlpersonal' + '_' + sufijoSalida \
                    + ' VALUES\n'))
        partes = sufijoSalida.split('_')
        if 2 < len(partes): nExtra = partes[0].upper() + ' '
        else: nExtra = ''
        ano = partes[len(partes) - 2]
        mes = partes[len(partes) - 1]
コード例 #11
0
    s.connect(('<broadcast>', 0))
    return s.getsockname()[0]


def obtenerIP(servidor):  # Es la unica rutina que consegui para obtener mi IP.
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(
        (servidor, 80)
    )  # servidor puede ser cualquiera, no es necesario usar el seleccionado.
    return s.getsockname(
    )[0]  # el IP es el primer elemento de la tupla devuelta. El 2do elemento parece ser una puerta.


ES.muestraInicio("Century21 Puente Real: J-40589955-7.")

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.
    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:
コード例 #12
0
        iMtoTot1 = 71
        iMtoTot2 = 84
        iNac = 0
        iCI = 5
        iNbr = 4
        iCC = 1
        iMto = 2
        sLnDet = '1'
        iNoReg1 = 0
        iNoReg2 = 0
        sCodCta = BV.sCodCta

    f.close()

    (lTot, stc) = \
            calcTotal(lista, nLnCtrl, sLnDet, iCI, iCC, iNac, sTPag, iMto, iNbr)
    st = cargarFilas(lTot, nroReg, iNoReg1, iNoReg2, fMtoTot, iMtoTot1,
                     iMtoTot2, sNumLote, sRif, sFechaValor)
    st += stc

    ES.imprime(st.rstrip(' \t\n\r'))
    if bMovil:
        indice = ES.entradaConLista(droid, 'Que desea hacer',
                                    'Que desea hacer',
                                    ['Otro archivo', 'Salir'])
        if None == indice or 0 > indice or 1 <= indice: break
    else:
        break

# FIN Programa
コード例 #13
0
            print("%sNombre de archivo%s '%s' %serrado.%s" %
                  (CO.ROJO, CO.FIN, nombArchivoCompleto, CO.ROJO, CO.FIN))
            break

# 0:Mov (6:retroact o 7:fijo); 1:CI; 2:Conc; 3:Saldo; 4:Cuota;
# 5:Ctrl (1:Crea, 2:Mod, 3:eli); 6:Tipo (1:Saldo-cuota, 2:Cuota fija).
        lista = [(linea.rstrip()[0:1], linea.rstrip()[1:9],
                  linea.rstrip()[10:13], float(linea.rstrip()[26:38]) / 100,
                  float(linea.rstrip()[38:49]) / 100, linea.rstrip()[52:53],
                  linea.rstrip()[76:77]) for linea in f]
        if f: f.close()

        if bInicio: diccTot = (0, 0.00, 0.00)
        dicc, dConc = poblarDicc(lista, dConc, sNuc, sConc, diccTot)
        diccTot = dicc['TOT']
        st += mostrarConceptos(dicc, dConc, bInicio, sNuc)
        if bInicio: bInicio = False

    st += sLinTot
    if bMovil:
        ES.imprime(st.rstrip(' \t\n\r'))
        indice = ES.entradaConLista(droid, 'Que desea hacer',
                                    'Que desea hacer',
                                    ['Otros movimientos', 'Salir'])
        if None == indice or 0 > indice or 1 <= indice: break
    else:
        print(st.rstrip(' \t\n\r'))
        break

# FIN Principal
コード例 #14
0
def lCheques():
    global lCh

    lClas = COM.lClasCheques
    #  lFuncionClas = [compaNumCh, compaCedula, compaNombre, compaMonto, compaEstado, compaFecha, compaConcepto]
    lBanco = [COM.mBanco(str(k)) for k in range(1, 24)]
    lNombreB = [
        lBanco[i] for i in range(len(lBanco)) if lBanco[i] != str(i + 1)
    ]
    lCodigoB = [
        str(i + 1) for i in range(len(lBanco)) if lBanco[i] != str(i + 1)
    ]
    '''  campos = [("Banco", 'combo', (lNombreB, 0)),   # Mercantil por defecto
            ("Clasificacion",'combo', (lClas, 0))]   # Clasificar u ordenar por numero de cheque.
  iCB, iClas = forma(campos)  # Codigo del banco, Indice de clasificacion'''
    iCB = ES.entradaConLista(droid, 'BANCOS', 'Seleccione banco', lNombreB)
    if None == iCB or 0 > iCB: return None
    iClas = ES.entradaConLista(droid, 'CLASIFICACION', 'Clasificar', lClas)
    if None == iClas or 0 > iClas: return None
    lNvaCh = [l for l in lCh if ((lCodigoB[iCB] == l[0]) and (6 > len(l[1])))
              ]  # Nueva lista de cheques, solo los del banco.
    # l[1]: numero de cheque, si 6 digito es deposito.
    if not lNvaCh:
        ES.alerta(droid, 'CHEQUE EN TRANSITO',
                  "No hay cheque en transito del banco %s!" % lNombreB[iCB])
        return None
    nlNvaCh = len(lNvaCh)
    if 1 == nlNvaCh:
        return lNvaCh[0]
#  lNvaCh.sort(lFuncionClas[iClas])
    lNvaCh.sort(key=itemgetter(iClas))
    try:
        lCheq = [COM.creaOp(l) for l in lNvaCh if 8 >= len(l)
                 ]  # Solo las lineas que contengan 8 o mas campos
    except UnicodeError:
        ES.alerta(droid, 'lCheques: ' + str(nlNvaCh),
                  "Hubo un error al tratar de crear opciones!")
        print >> fErr, l
        print >> fErr, len(lNvaCh)
        return None
    nCheques = len(lCheq)
    if (nCheques > CO.NMAXITEM):
        nInicial = int((nCheques / CO.NMAXITEM) + 1)
        ES.alerta(
            droid, 'lCheques', 'Son ' + str(nCheques) + ' cheques! Mostrare ' +
            str(nInicial) + ' listas!')
        for k in range(
                nInicial
        ):  # Si el numero de cheques es grande mostrar varias listas de CO.NMAXITEM cada una.
            if (k + 1) * CO.NMAXITEM >= nCheques:
                iUltimo = nCheques
                lNueva = lCheq[k * CO.NMAXITEM:iUltimo]
            else:
                iUltimo = (k + 1) * CO.NMAXITEM
                lNueva = lCheq[k * CO.NMAXITEM:iUltimo] + ['Proxima lista']
            ind = ES.entradaConLista(
                droid,
                str(nCheques) + ' CHEQUES. De ' + str((k * CO.NMAXITEM) + 1) +
                ' a ' + str(iUltimo), '', lNueva)
            if None == ind or 0 > ind: return None
            if CO.NMAXITEM > ind:  # Si ind == CO.NMAXITEM, se selecciono la opcion 'Continuar'.
                indice = ind + (k * CO.NMAXITEM)
                break
    else:
        indice = ES.entradaConLista(droid, 'CHEQUES: ' + str(nCheques),
                                    'Seleccione cheque', lCheq)
        if None == indice or 0 > indice: return None
    return lNvaCh[indice]