Crear acciones automatizadas en Odoo

Este tutorial, mostraré cómo crear y administrar acciones automatizadas, que también se conocen como programadores. Los programadores son acciones automatizadas que se ejecutan  durante un período de tiempo y pueden hacer muchas cosas. Le dan la capacidad de ejecutar acciones en su base de datos sin necesidad de interacción manual.

En este ejemplo, crearé una acción automatizada que se ejecuta cada 2 minutos y que recorre todos los registros de la tabla de la base de datos (Scheduler.demo). Cada registro en este modelo hará un seguimiento de cuántas veces el programador lo ejecutó, solo para mostrarle cómo funcionan las acciones automatizadas en combinación con las acciones de la base de datos.

1. Crear el modelo y los campos.

El primer paso es crear un modelo (si aún no tiene uno) y crear algunos campos en este modelo:

Esto creará un nuevo modelo llamado ‘Scheduler.demo’ que contendrá tres campos: un campo de texto para el nombre, un campo entero para realizar un seguimiento de cuántas veces se actualizó el registro y un campo de fecha. Esto es todo lo que necesita en el nivel de la base de datos. ¡Tiene sus campos en la base de datos, por lo que solo necesita mostrarlos al usuario ahora!

2. Crear las vistas

Ahora que tiene lista la parte de la base de datos, es hora de crear su vista. En este ejemplo, crearé una vista de formulario simple y una vista de árbol que muestra los campos ‘nombre’, ‘numberOfUpdates’ y ‘lastModified’ que acabamos de crear en nuestro modelo:

3. Crear la acción automatizada

Ahora que hemos creado los modelos y las vistas, necesitamos una acción automatizada que se ejecutará automáticamente con un intervalo específico.

Sugerencia: Si desea crear nuevos módulos en las pautas de Odoo, debe agregar el código para una acción automatizada en yourDefaultModule / data / en un archivo XML separado.

Una cosa importante a tener en cuenta con las acciones automatizadas es que siempre deben definirse dentro de un campo de actualización, ya que esto no debe actualizarse cuando actualiza su módulo. Así que creemos una acción automatizada que se ejecute cada 2 minutos y que se siga ejecutando una y otra vez para el modelo ‘schedule.demo’. Un último criterio es que la acción automatizada llama a una función Python desde donde podemos hacer nuestras operaciones en la base de datos. El resultado:

Cuando instalaría su módulo, esto le daría la siguiente acción automatizada:
Ejemplo de acción automatizada

3.1 PROFUNDIZANDO EN LA ACCIÓN AUTOMATIZADA

Analicemos el código paso a paso para que sepamos exactamente lo que hace. Si no desea leer esto, puede desplazarse hacia abajo hasta el capítulo 4.
Lo primero que notará es la actualización de datos = «1», esto le dice a Odoo que todo el código dentro de esta etiqueta no debe actualizarse cuando Actualiza tu módulo. Lo siguiente que notará es la identificación de registro y el modelo.

La identificación es un identificador único para que Odoo sepa qué registro está vinculado a qué identificación. El modelo llamado (‘ir.cron’) es el modelo hecho específicamente por Odoo para todas las acciones automatizadas. Este modelo contiene todas las acciones automatizadas y siempre debe especificarse.

La siguiente línea es el nombre. Este nombre se mostrará en la acción automatizada y es lo que verá el usuario.

La siguiente línea es el ‘user_id’. Esta identificación de usuario se refiere a un usuario específico, en la mayoría de los casos será base.user_root. ¿Por qué? ¡Este es el usuario donde se ejecuta la acción automatizada y cuando usa la cuenta raíz siempre está seguro de tener derechos de acceso a todo!

La siguiente línea es el ‘intervalo_número’. El número_intervalo siempre es un número y le indicará con qué frecuencia se debe ejecutar la acción automatizada. En este ejemplo, se ejecutará cada 2 … La siguiente línea especificada es el ‘intervalo_tipo’, que le indica con qué frecuencia desea ejecutar el ‘intervalo_número’. Cuando miramos la siguiente línea:

La línea ‘intervalo_número’ y ‘intervalo_tipo’ siempre se combinan y le dan un momento exacto sobre la frecuencia con la que se debe ejecutar la acción automatizada. En este ejemplo, la acción automatizada se ejecutará cada 2 minutos.
Consejo: las opciones para ‘intervalo_tipo’ son ‘minutos’, ‘horas’, ‘días’, ‘días_trabajo’, ‘semanas’ y ‘meses’.
La siguiente línea es el campo ‘numbercall’:

Este campo le dice a Odoo con qué frecuencia se debe ejecutar esta acción automatizada. Si completara ’10’, la acción se ejecutaría 10 veces. Cuando quiera que se ejecute para siempre, simplemente complete ‘-1’.

La siguiente línea, ‘doall’ tiene dos opciones: Verdadero o Falso. Cuando el campo se establece en Falso, le está diciendo a Odoo que las acciones automatizadas perdidas deben ejecutarse cuando el servidor se reinicia si se perdieron (por ejemplo, cuando un servidor ha estado inactivo durante 24 horas, entonces el planificador necesitaría ejecutar el planificador para cada tiempo que se perdió en esas 24 horas).

El campo ‘modelo’ especifica en qué modelo debe llamarse la acción automatizada, ¡es tan simple como eso! Ahora para la última línea:

Esta línea le dice a Odoo que debe llamar a una función con el nombre ‘process_demo_scheduler_queue’ del archivo Python. Este es el enlace a su Python y esto nuevamente nos da la capacidad de acceder a la base de datos.

¡Felicitaciones, ahora sabe cómo funcionan las acciones automatizadas!

4. Agregar la función Python

Muy bien, casi hemos terminado! Solo hay una cosa más que hacer: crear la función Python que es llamada por la acción automatizada. En el código de la acción automatizada, podría ver que está llamando a una función de Python ‘process_demo_scheduler_queue’, así que creemos esto en el archivo de Python que usa el modelo ‘Scheduler.demo’:

¡Desde aquí puedes hacer lo que quieras! Puede llamar modelos, buscar valores, actualizar valores, hacer llamadas a sistemas externos, … En este ejemplo, recorreré todos los registros en la tabla ‘schedule.demo’ y aumentaré el valor del campo ‘numberOfUpdates’ en 1 cada hora en que se ejecuta el planificador. El código:

Entonces, ¿qué hace exactamente esta función? Obtendrá todos los identificadores de la tabla ‘schedule.demo’, luego recorreremos un registro a la vez y por la identificación del registro encontraremos todos los valores del registro específico. Después de tener los detalles del registro, actualizaremos el valor del campo ‘numberOfUpdates’ y finalmente actualizaremos el valor en la base de datos.

5. Conclusión

Las acciones automatizadas son una herramienta muy poderosa en Odoo y las opciones son casi ilimitadas. Las acciones automatizadas son ideales para hacer cosas automáticamente en Odoo sin tener que hacerlas manualmente. Es una gran característica en Odoo para ahorrarle tiempo y hacer que las cosas funcionen mejor.

¿Quieres probar un módulo de demostración y ver el código fuente de este tutorial? Puede ver en mi cuenta de Github .
¿Te ha ayudado este tutorial? ¿Tienes algún comentario o pregunta?

Abrir chat