Algunos usos del contexto en Odoo

13 de mayo de 2025 por
Gustavo Orrillo
| Sin comentarios aún
 

Odoo tiene algunos objetos, o artefactos, o como quieran llamarlos; que tienen usos multiples. Por ejemplo los diarios de contabilidad y las transferencias de inventario. Pero hay un elemento o herramienta de programación que uno utiliza cuando trabaja con el ORM de Odoo que es tiene usos múltiples. Y ese objeto es el contexto y vamos a hablar un poco de como aprovecharlo en este post.

Basicamente el contexto en Odoo es parte del ambiente de un recordset. Tecnicamente es un diccionario de Python y por lo general tiene información de la sesión. Pero uno puede modificar el contexto como quiere, por ejemplo agregandole la ubicación (por ejemplo cuando uno quiere conocer el stock virtual en un almacén). 

Esta información del contexto se la puede utilizar en la interface y es una muy buena manera para pasar la información de un formulario o una vista, a un método del ORM. También se puede utiizar el contexto para pasar la información entre diferentes métodos en Odoo, sin necesidad de modificar los parámetros con los que se llama dicha función.

Ahora, vamos a un ejemplo práctico. Supongamos que tenemos una variante de producto con ID 1847. Y queremos averiguar el stock virtual disponible para este producto en el warehouse con ID 1. Como hacemos?

prod = self.env['product.product'].browse(1847)
qty = prod.with_context(warehouse_id=1).virtual_available

Estas dos líneas hacen eso. Seteamos el contexto para el warehouse 1, y luego averiguamos la cantidad virtual para el producto con el que estamos trabajando. Algo muy util.

Otro ejemplo (y que se usa mas de lo que uno imagina). Supongamos que querramos conocer el valor de un campo traducido. En este caso de un impuesto. Como podemos hacer?

In [4]: tax = self.env['account.tax'].browse(390)

In [5]: tax.with_context(lang='en_US').name
Out[5]: 'VAT 21%'

In [6]: tax.with_context(lang='es_AR').name
Out[6]: 'IVA 21%'

Esto último lo hicimos en la consola de odoo.sh. Como podemos ver, podemos ver el valor del campo name del impuesto tanto en ingles como en castellano. 


Gustavo Orrillo 13 de mayo de 2025
Compartir
Categorías
Archivar
Identificarse dejar un comentario