Día 12: Botones con Llamadas a Métodos (Workflow) — Ejecutando Lógica de Negocio con un Clic
¡Felicidades! Llegamos al ecuador del curso. En la última semana, hemos escrito lógica de negocio para automatizar valores (compute, onchange). Pero los documentos también necesitan avanzar mediante la intervención del usuario.
En Odoo (V19), esto se consigue mediante botones que, al hacer clic, ejecutan un método Python que modifica el estado del registro.
¿Qué hemos añadido en el Día 12?
Hemos añadido un botón a la cabecera de nuestro formulario que, al presionarse, ejecuta una acción simple en Python (por ejemplo, actualiza un campo de estado o una fecha).
Los componentes clave que hemos cubierto son:
1. El Botón en XML (type=»object»)
En la Vista Formulario, el botón se define con la etiqueta <button>. Los atributos clave son:
- name: Debe ser el nombre exacto del método Python que queremos ejecutar.
- type=»object»: Le dice a Odoo que el name debe buscarse como un método dentro del modelo actual.
2. El Método Python Correspondiente
En Python, el método que recibe la llamada del botón debe estar definido dentro de la clase del modelo. Este método utiliza self para acceder a los registros seleccionados y normalmente ejecuta una acción write para cambiar el estado o la lógica del documento.
3. Control de Visibilidad
Hemos visto cómo usar el atributo attrs en el XML para hacer que el botón solo sea visible o usable cuando el documento esté en un estado específico (ej. el botón «Confirmar» solo aparece en estado «Borrador»). Esto es la base de la gestión de flujos de trabajo.
Explicación Detallada en Vídeo
En el siguiente vídeo, te muestro paso a paso cómo conectar el XML con el Python y cómo asegurarte de que tu método de botón maneje colecciones de registros correctamente.
Código Fuente en GitLab
Puedes consultar el código fuente completo de esta lección, con la implementación del botón y su lógica de Python, directamente en nuestro repositorio.
➡️ Ver el Código en GitLab: https://github.com/angelmoya/calendario-adviento-curso-tecnico-odoo-19/tree/ddd6e9426d71c26e4e04cae90801136b8936e36e
Conecta Conmigo y Sigue Aprendiendo
¡Ya tienes el motor de tu workflow! Mañana volvemos a la optimización de datos con los campos related.
- LinkedIn: Conecta conmigo en LinkedIn
- YouTube: ¡No olvides suscribirte al canal para no perderte ninguna lección! http://www.youtube.com/@AngelMoya-Odoo