Re: [bofhers] Sobre Odoo, DNI, Codigos postales

  • From: marco garcia baturan <marcogb81@xxxxxxxxxxx>
  • To: "bofhers@xxxxxxxxxxxxx" <bofhers@xxxxxxxxxxxxx>
  • Date: Tue, 13 Dec 2016 13:45:20 +0000


Hola de nuevo,

 Me disculpa por el gazapo gente.

No vuelve a pasar.

Un saludo,

MGB.

Pd. Gracias  José.

________________________________
De: bofhers-bounce@xxxxxxxxxxxxx <bofhers-bounce@xxxxxxxxxxxxx> en nombre de 
José Carlos Cuevas <reset.reboot@xxxxxxxxx>
Enviado: martes, 13 de diciembre de 2016 14:32
Para: bofhers@xxxxxxxxxxxxx
Asunto: Re: [bofhers] Sobre Odoo, DNI, Codigos postales

Me temo que te has equivocado esta vez de foro, Marco. Esto es una lista de 
administradores de sistemas, y, aunque muchos pilotamos de programación, 
deberíamos adscribirnos a temáticas más centradas en sistemas, configuraciones, 
redes, etct...

PD: StackOverflow puede tener tu respuesta.

El 13 de diciembre de 2016, 14:10, marco garcia baturan 
<marcogb81@xxxxxxxxxxx<mailto:marcogb81@xxxxxxxxxxx>> escribió:

BUenas tardes Bofherianos y Bofherianas de Bofheria:

Como ya algunos sabies ( por lo pesado que soy) que estoy programando en python 
un módulo en Odoo (OpenERP 8). Hasta ahí todo normal. Total, que estoy creando 
un módulo de admisión de pacientes en Odoo 8 bajo Ubuntu 14.04 que en este caso 
tiene un subconjunto de campos que se divide en dos partes:

DNI

y

Provincia y CP

He creado una función que lee la parte numerica del DNI para devolver la letra 
e introducirla al final para hacer un mecanismo de autocompletado. Pero falla 
por error de tipo:

  File "/opt/odoo/odoo-server/addons/admision/models.py", line 62, in letraDNI
    11: "B", 12: "N", 13: "J", 14: "Z", 15: "S", 16: "Q", 17: "V", 18: "H", 19: 
"L",
TypeError: unsupported operand type(s) for +: 'bool' and 'str'

El codigo es:

# función que opera con el ingreso de dni y le agrega la letra automaticamente
@api.onchange("Nif")
def letraDNI(self):
    numero = self.Nif
    if len(numero) == 10 and [0-9/-a-z]:
        pass
    else:
        if len(numero) == 8 and [0-9/-' ']:

        intnumero = int(numero[0:7])
        diccionario = {0: "T", 1: "R", 2: "W", 3: "A", 4: "G", 5: "M", 6: "Y", 
7: "F", 8: "P", 9: "D", 10: "X",

                       11: "B", 12: "N", 13: "J", 14: "Z", 15: "S", 16: "Q", 
17: "V", 18: "H", 19: "L",

                       20: "C", 21: "K", 22: "E"}
        resto = intnumero % 23
    self.Nif = diccionario.get(str(resto))

Y la parte XML es:

<field name="Nif" data-inputmask="'mask': '99999999-a'" />

Y el caso del codigo postal es peculiar por que en si funciona y muy bien pero 
al introducir porvincias con tildes o ñ esta me devuelve vacio. El esscript 
esta en UTF-8 y el XML en UTF-8, incluso prove con las iso-809-...etc y nada.

Aqui el script:

# busca código postal.
@api.onchange("Provincia_Paciente","CP_Paciente")
def buscaCP(self):
    provincia = self.Provincia_Paciente
    # buscar = provincia
    # declaro un diccionario con provincias
    Diccionario = {"Alava": '01', "Albacete": '02', "Alicante": '03', 
"Almería": '04', "Ávila": '05', "Badajoz": '06',
                    "Islas Baleares": '07', "Barcelona": '08', "Burgos": '09', 
"Cáceres": 10, "Cádiz": 11,
                   "Castellón": 12, "Ciudad Real": 13, "Córdoba": 14, "La 
Coruña": 15, "Cuenca": 16,
                   "Gerona": 17, "Granada": 18, "Guadalajara": 19, "Guipúzcoa": 
20, "Huelva": 21, "Huesca": 21,
                   "Jaén": 23, "León": 24, "Lérida": 25, "La Rioja": 26, 
"Lugo": 27, "Madrid": 28, "Malaga": 29,
                   "Murcia": 30, "Navarra": 31, "Orense": 32, "Asturias": 33, 
"Palencia": 34, "Las Palmas": 35,
                   "Pontevedra": 36, "Salamanca": 37, "Santa Cruz de Tenerife": 
38, "Cantabria": 39,
                   "Segovia": 40, "Sevilla": 41, "Soria": 42, "Tarragona": 43, 
"Teruel": 44, "Toledo": 45,                           "Valencia": 46, 
"Valladolid": 47, "Vizcaya": 48, "Zamora": 49, "Zaragoza": 50, "Ceuta": 51,
                   "Melilla": 52, }
    CodPos = Diccionario.get(provincia) # imprimo el codigo postal en base a la 
provincia introducida
    self.CP_Paciente = CodPos

aqui el XML:

<field name="Provincia_Paciente" placeholder = "Alicante" />
<field name="CP_Paciente" data-inputmask="'mask': '99999'" />

Un saludito campeones y gracias por vuestra atención.

MGB

Other related posts: