Día 10: Campos Calculados y @api.depends — Automatizando Valores con Python

Día 10: Campos Calculados y @api.depends — Automatizando Valores con Python

¡Ya estamos en el Día 10! Después de dominar la Herencia, es momento de que nuestro módulo empiece a tomar decisiones. Hemos pasado de la estructura estática a la lógica de negocio.

El concepto que abordamos hoy es crucial para cualquier aplicación ERP: los Campos Calculados (Computed Fields). Estos campos no almacenan directamente un valor en la base de datos, sino que ejecutan un método de Python que calcula un valor en función de otros campos.

¿Qué hemos añadido en el Día 10?

Hemos añadido un nuevo campo en nuestro modelo para demostrar cómo su valor puede ser el resultado de una operación (por ejemplo, el cálculo de una edad a partir de una fecha o un total).

Los componentes clave que hemos añadido son:

1. La Propiedad compute en el Campo

Para definir un campo calculado, en lugar de darle un valor por defecto o dejarlo vacío, le pasamos el argumento compute y le asignamos el nombre del método Python que se encargará de realizar el cálculo.

2. El Decorador @api.depends

Este es el elemento más importante de la lección. El decorador @api.depends recibe una lista de campos de los que depende el cálculo. Si alguno de esos campos cambia de valor (por ejemplo, el precio unitario o la cantidad), Odoo sabrá que debe volver a ejecutar el método de cálculo.

3. La Estructura del Método de Cálculo

El método de cálculo siempre itera sobre self (la colección de registros) y debe escribir el resultado en el campo. Hemos visto la estructura correcta para manejar colecciones de uno o varios registros.


Explicación Detallada en Vídeo

En el siguiente vídeo, te muestro paso a paso cómo implementar el campo calculado, cómo definir la lista de dependencias y las implicaciones de rendimiento de usar (o no usar) correctamente el @api.depends.


Código Fuente en GitLab

Puedes consultar el código fuente completo de esta lección, con la implementación del primer campo calculado, directamente en nuestro repositorio.

➡️ Ver el Código en GitLab: https://github.com/angelmoya/calendario-adviento-curso-tecnico-odoo-19/tree/332e59376a722535c5e4b7f6e27c236b664dfcfb


Conecta Conmigo y Sigue Aprendiendo

¡Ya tienes tu primera lógica de negocio! Mañana complementaremos esto con los campos related, que son la forma más sencilla de traer información de modelos relacionados.

YouTube: ¡No olvides suscribirte al canal para no perderte ninguna lección! http://www.youtube.com/@AngelMoya-Odoo