Localización paraguaya - estableciendo el país por defecto en los contactos

31 de mayo de 2024 por
Gustavo Orrillo
| Sin comentarios aún
 

Muchas veces necesitamos establecer por defecto valores en los diferentes modelos de Odoo. Por ejemplo, en el caso de Paraguay queremos que por defecto todos los contactos creados tengan por defecto el país de Paraguay (sobre todo para hacer que el usuario seleccione la ciudad en lugar de ingresarla manualmente). 

Bien, como hacemos eso? Se podría hacerlo con las herramientas disponibles en el modo desarrollador, pero la verdad es que el único modo sustentable de hacerlo es por medio de código. Y ello se logra con las siguientes líneas en el modelo res.partner

class ResPartner(models.Model):
_inherit = "res.partner"

@api.model
def default_get(self, fields):
res = super(ResPartner, self).default_get(fields)
if self.env.user.company_id.country_id.id == self.env.ref('base.py').id:
res.update(
{'country_id': self.env.ref('base.py').id}
)
return res

En este caso invocamos el método default_get. Este método se invoca antes de mostrarse el form, y se lo utiliza para realizar validaciones (algunas veces) y establecer valores por defecto (la mayoría de las veces). En este caso lo invocamos y controlamos que el país del usuario sea Paraguay. Esto lo hacemos utilizando el usuario del contexto y su compañía

self.env.user.company_id.country_id

Y controlamos que el mismo sea Paraguay, lo que se logra obteniendo el identificador externo base.py

self.env.ref('base.py')

Es mucho más seguro que controlar por el nombre del país ya que nunca falta el usuario que con espiritu entrepreneur cambia el nombre del país. Por último, se devuelve un diccionario de los valores a establecer por defecto

res.update(
{'country_id': self.env.ref('base.py').id}
)
return res

&
Gustavo Orrillo 31 de mayo de 2024
Compartir
Archivar
Identificarse dejar un comentario