Acentos y ñ en Odoo 8.0

475 views
Skip to first unread message

marco garcia baturan

unread,
Dec 13, 2016, 6:20:55 AM12/13/16
to Usuarios Odoo / OpenERP en España
Buenos días a todos:

Estoy desarrollando un módulo en Odoo 8.0 ejecutado en Ubuntu 14.04 para una clínica. Consite en guardar los datos de pacientes para poder generar fichas con datos, esa parte ya funciona con éxito. Ahora me piden dos detalles:

-Que el campo DNI tenga la capacidad de calcular la letra final del mismo y completarlo automticamente.
-Que al introducir la provincia se complete un campo con los dos primeros dígitos del código postal.

Ambos procesos estan parcialmente logrados, pero en el primero al introducir los nueve dígitos del DNI al intentar completar el calculo de letra e introducirlo dentro del campo da este mensaje:

  File "/opt/odoo/odoo-server/addons/admision/models.py", line 54, in letraDNI
    intnumero = int(numero)
ValueError: invalid literal for int() with base 10: '12356894-_'

Por otro lado en la sección de provincia- codigo postal no da error pero si ocurre una cosa:
Si introduzco provincias sin tildes ni ñ me devuelve el dato que pido,
pero si lo hago al reves devuelve el campo vacio.
Os dejo por orden los códigos de ambas partes:
DNI-
Python..
# función que opera con el ingreso de dni y le agrega la letra automaticamente
@api.onchange("Nif")
def letraDNI(self):
numero = self.Nif
intnumero = int(numero)
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
letra = diccionario[resto]
self.Nif = numero + '-'+ letra
Sección XML:
<field name="Nif" data-inputmask="'mask': '99999999-a'" />

Provincias-cp:
Sección python:

@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, }
# imprimo el codigo postal en base a la provincia introducida
CodPos = Diccionario.get(provincia)
self.CP_Paciente = CodPos
Sección XML:
<field name="Provincia_Paciente" placeholder = "Alicante" />
<field name="CP_Paciente" data-inputmask="'mask': '99999'" />

Un saludo y muchas gracias por su atención,
Marco García Baturan.


da...@aizean.com

unread,
Dec 13, 2016, 9:32:45 AM12/13/16
to Usuarios Odoo / OpenERP en España
Buenas, así a primeras, con el aviso del error te puedo indicar que estas intentando forzar la conversión a un entero, una serie de números con un guión y una barra baja al final, causa por la que da el error. Dado que un entero no puede contener caracteres alfanuméricos
Reply all
Reply to author
Forward
0 new messages