Crear tareas automatizadas en Odoo 12

En Odoo existen diversas formas de automatizar tareas, tal como el envío de emails, ejecución de un script, limpieza de temporales, etc…

Disponemos de dos funcionalidades muy interesantes para automatizar tareas:

- acciones del servidor (Técnico -> Acciones -> Acciones de Servidor)

- acciones planificadas (Técnico -> Automatización -> Acciones Planificadas)

Las acciones de servidor, son tareas que se ejecutan dependiendo de un evento. Por ejemplo, cuando una oportunidad supera el 75% de su probabilidad o cuando hemos alcanzado el 75% de las horas asignadas a una tarea de un proyecto.

Las acciones planificadas, son tareas que se ejecutan periodicamente. Por ejemplo, podemos envíar un email mensualmente con las ventas por departamento.

A continuación veremos un ejemplo de las Acciones Planificadas

Acciones planificadas:

Necesitamos que Odoo nos envíe un email cada hora.

Para realizar esto tenermos que configurar 2 cosas:

- La función de python que queremos ejecutar.

- La acción planificada.

Vamos a Técnico -> Automatización -> Acciones Planificadas y creamos una nueva acción planificada

En dicha acción planificada, debemos configurar un nombre para la acción, el nº de intervalos y la unidad de intervalo, osea cada hora y el nº de ejecuciones que al indicar -1, estamos indicando que nunca se detenga.


Indicamos que vamos a ejecutar un código python y el siguiente código lo ponemos en la pestaña de código Python:

mail_values = {
	'subject':'Prueba',
	'body_html':'Prueba correo acción planificada',
	'email_to':'pepe@gmail.com',
	'email_from':'maria@gmail.com'
}
env['mail.mail'].sudo().create(mail_values).send()

Nota1: Este código funciona pero GMAIL te advertirá si quieres permitir que este script envie correo o no. Da los permisos correspondientes en URL: https://www.google.com/settings/security/lesssecureapps

Nota2: Tienes que tener el correo configurado en el Odoo.

Si la tarea automatizada la quieres crear por código puedes usar este ejemplo:

<data noupdate="1">
   <record id="backup_scheduler" model="ir.cron">
     <field name="interval_type">minutes</field>
     <field name="name">Backup scheduler</field>
     <field name="numbercall">-1</field>
     <field name="priority">5</field>
     <field name="doall">False</field>
     <field name="active">False</field>
     <field name="interval_number">1</field>
     <field name="model_id" ref="model_odoo_servers" />
   </record>
</data>


Si quieres añadir el envio de un email cada cierto tiempo, basta que en el *.xml anterior le incluyas por ejemplo:

<field name="code">model._mandate_envio_mail()</field>

Y meter el codigo correspondiente en esa función.

Otra opción que se tiene es instalar el módulo base_automation que viene con Odoo pero no se instala. Este módulo te permite lanzar código python o email entre otros cuando se cumplen ciertas condiciones. Se instala en la sección de automatización con el nombre Acciones Automatizadas