Automatizar acciones en Odoo
Conseguir que cuando se produzca un evento se desencadene otro automáticamente
8 febrero, 2023 por
Automatizar acciones en Odoo
Manuel Regidor González


Existen acciones que cuando se producen deben desencadenar otras. Conseguir que  esto ocurra automáticamente puede ser de gran ayuda, ya que el usuario no tendrá que preocuparse de comprobar si se cumplen las condiciones que provocan el lanzamiento del segundo evento ni de ejecutarlo manualmente. Con Odoo puede conseguirse esta consecución a través de las acciones automatizadas.

Las acciones automatizadas de Odoo son reglas que provocan que cuando ocurre un evento A se desencadene una acción B. Esta funcionalidad está incluida en el módulo base_automation y puede resultar muy útil por varias razones. En primer lugar, facilita el flujo de trabajo, al liberar a los usuarios de tener que realizar manualmente una acción provocada por otra así como de comprobar si se cumplen las condiciones correctas. Además, evita que se cometan errores, al hacer una validación automática de las condiciones que tiene que cumplirse para que una acción se realice a consecuencia de otra.

Un ejemplo de acción automatizada podría ser que se envíe un correo electrónico al cliente al confirmar una venta. También podría ser que se creara una actividad asignada a un usuario para indicarle que revise una factura cada vez que se crea una. Otro caso podría ser que al crear un albarán se tuviera que poner necesariamente como seguidor del documento a un usuario concreto.

Para acceder a las acciones automatizadas hay que activar el modo desarrollador y dirigirse a Ajustes > Técnico > Acciones Automatizadas.


1. Configuración de una acción automatizada



Los campos disponibles en las acciones automatizadas son los siguientes:

  • Nombre de acción. Campo de texto libre para darle un nombre a la acción automatizada.

  • Modelo. Modelo de Odoo sobre el que se aplicará la acción automatizada.

  • Activo. Si la opción está marcada, la acción automatizada se lanzará. Si no lo está, no se lanzará.

  • Aplicar en. Este campo permite la configuración de un dominio para acotar las instancias del modelo que pueden lanzar la acción automatizada. Por ejemplo, se podría indicar que una acción automatizada lanzada por los pedidos de venta solamente se ejecutara si el pedido que activa el evento tiene seleccionado un determinado cliente.

A continuación se explican más en profundidad dos de los campos: campo 'Activador' y campo 'Acción a realizar'.


1.1. Activador


 En este campo se indica el evento que tiene que producirse para desencadenar la acción. Las opciones disponibles son las siguientes:

  • Al crear. La acción se lanza al crear una instancia del modelo seleccionado.

  • Al actualizar. La acción se lanza al actualizar un valor determinado de una instancia del modelo seleccionado.

  • Al crear y actualizar. La acción se lanza tanto al crear como al actualizar una instancia del modelo seleccionado.

  • Al eliminar. La acción se lanza al eliminar una instancia del modelo seleccionado.

  • Basado en la modificación de formulario. Se lanza un códido python al modificar desde la vista alguno de los campos seleccionados en el campo 'Campos de activación' (únicamente se muestra en el formulario de acciones automatizadas cuando se selecciona este activador).

  • Basado en una condición de tiempo. La acción se lanza un tiempo después de la fecha y hora de alguno de los campos temporales del modelo. Por ejemplo, en la siguiente captura, la acción se lanzaría una hora después de la fecha/hora de entrega del pedido de venta.

Cuando se selecciona el activador 'Al actualizar' aparece una opción adicional: 'Antes de actualizar el dominio'. Sirve para indicar una condición previa a la actualización del registro que tiene que cumplirse para que se lance la acción.


1.2. Acción a realizar


En este campo tiene que indicarse qué acción tiene que ejecutarse cuando ocurra lo seleccionado en el campo 'Activador'. Hay distintas posibilidades, con sus propios modos de configuración. Las opciones son las siguientes:

Ejectuar el código python. La acción que se ejecuta se indica a través de código python, que se introduce en la pestaña 'Código Python', visible cuando se selecciona esta opción. Se recomienda disponer de conocimientos técnicos para utilizar esta opción.

Crear un nuevo registro. La acción automatizada consiste en la creación de un registro del modelo seleccionado en el campo 'Modelo de objetivo'. Los valores de esta nueva instancia pueden seleccionarse desde la pestaña 'Datos para escribir'. El tipo de evaluación de las líneas de 'Datos para escribir' tiene tres opciones:

  • Valor. Se indica en la columna 'Valor' un valor directamente para un campo determinado.

  • Referencia. Se indica en la columna 'Registro' un registro concreto.

  • Expresión Python. El valor se asigna a través de una expresión en Python que se introduce en la columna 'Valor'.

En caso de que el nuevo registro tenga que relacionarse con la instancia que ha lanzado la acción automatizada, hay que indicar el nombre de este campo en 'Campo de enlace'. Por ejemplo, en la captura adjunta, se crea un registro del modelo 'Equipo de ventas', el nombre del nuevo equipo será 'Nuevo equipo' y se establecerá en el campo 'Equipo de ventas' de la instancia de 'Pedidos de venta' que ha lanzado la automatización.

Actualizar registro. La acción automatizada consiste en la modificación de un campo de la instancia que la lanza. Los campos y valores que tienen que actualizarse se introducen en la pestaña 'Datos para escribir' y las opciones en la columna 'Tipo de evaluación' son las mismas que con la acción a realizar 'Crear un nuevo registro'. En el ejemplo de la captura adjunta, se establecerá a Joel Willis como usuario de creación.

Ejectuar varias acciones. La acción automatizada consistirá en la ejecución de una o varias acciones automatizadas o acciones de servidor, que pueden seleccionarse en la pestaña 'Acciones'.

Enviar correo electrónico. La acción automatizada consiste en el envío de un correo electrónico, la plantilla del cual se selecciona en el campo 'Plantilla de correo electrónico'.

Añadir seguidores. A través de la acción automatizada se añadirán como seguidores a los contactos seleccionados en el campo 'Añadir seguidores' al registro que desencadenó la acción.

Crear nueva actividad. La acción consiste en la creación de una actividad planificada. La configuración se realiza desde la pestaña 'Actividad', donde puede seleccionarse el tipo de actividad (por hacer, correo electrónico, llamada...), a quién se le asigna o cuál es el tiempo de vencimiento.

Manda mensaje de texto SMS. De modo similar que con el envío de correos, esta acción automatizada consiste en el envío de un SMS. La plantilla se selecciona en el campo 'Plantilla de SMS'.

2. Ejemplos de uso


A continuación se ponen dos ejemplos para ilustrar situaciones en las que la creación de acciones automatizadas pueden resultar útiles: el envío de un correo de confirmación al validar un pedido y la creación de una actividad planificada al crear un albarán.


2.1. Correo de pedido validado


Si se desea enviar un correo electrónico cuando un pedido se ha validado puede establecerse una acción automatizada. Quedaría de la siguiente manera:


  • Modelo. El modelo que lanza la acción automatizada es 'Pedido de venta'.

  • Activador. La acción automatizada se lanza cuando se actualiza un registro de 'Pedido de venta'.

  • Campos de activación. El campo de 'Pedido de venta' que tiene que actualizarse para lanzar la acción automatizada es 'Estado'.

  • Antes de actualizar el dominio. El pedido de venta, antes de lanzar la acción planificada, tiene que estar en estado 'Borrador' o 'Presupuesto enviado.

  • Aplicar en. El correo se tendrá que enviar cuando el pedido pase a estado 'Pedido de venta' o 'Bloqueado'.

  • Acción a realizar. Se selecciona la opción 'Enviar correo electrónico'.

  • Plantilla de correo electrónico. Se selecciona la plantilla de correo que tiene que enviarse automáticamente.


2.2. Actividad de creación de albarán


El siguiente ejemplo muestra cómo podría crearse una acción automatizada para establecer una actividad planificada a un usuario concreto indicándole que revise el registro:


  • Modelo. La acción automatizada la lanza el modelo 'Albarán'.

  • Activador. La acción automatizada tiene que lanzarse al crear un nuevo registro de albarán.

  • Aplicar en. No indicamos ningún dominio porque queremos que se lance siempre que se cree un albarán, independientemente de sus características.

  • Acción a realizar. Se selecciona la opción 'Crear nueva actividad'.

  • Actividad. Se selecciona que quiere crearse una actividad planificada de tipo 'Por hacer', con un texto de resumen 'Revisar albarán. La actividad vencerá a los 7 de días de crearla y se asignará siempre al usuario Joel Willis.


3. Crear acción automatizada a través de código


En el apartado anterior se ha visto cómo pueden configurarse acciones automatizadas manualmente, pero también es posible incluir su configuración en un módulo para que se añada al instalarlo. A continuación se explica cómo podría crearse la acción planificada de revisión de albarán utilizada como ejemplo en el apartado 2.2. de esta entrada.

    <record id="picking_review" model="base.automation">
        <field name="name">Picking Review</field>
        <field name="model_id" ref="crm.model_stock_picking" />
        <field name="state">next_activity</field>
        <field name="trigger">on_create</field>
        <field name="active" eval="True" />
        <field name="activity_type_id" ref="mail.mail_activity_data_todo" />
        <field name="activity_summary">Review Picking</field>
        <field name="activity_date_deadline_range">1</field>
        <field name="activity_date_deadline_range_type">days</field>
        <field name="activity_user_type">specific</field>
        <field name="activity_user_id" ref="base.demo_user0" />
</record>

Aparecen los siguientes valores:

  • name. Nombre libre de la acción planificada.

  • model_id. Nombre técnico de modelo precedido de 'model_'.

  • state. Tipo de acción automatizada, aquello que tiene que ocurrir. Las opciones son las siguientes:

    • code. Ejecutar código.

    • object_create. Crear nuevo registro.

    • object_write. Actualizar registro.

    • multi. Ejecutar varias acciones.

    • email. Enviar correo electrónico.

    • followers. Añadir seguidores.

    • next_activity. Crear nueva actividad.

    • sms. Mandar mensaje SMS.

  • trigger. Activador de la acción automatizada. Las opciones disponibles son las siguientes:

    • on_create. Al crear un nuevo documento del modelo seleccionado.

    • on_write. Al actualizar un registro del modelo seleccionado.

    • on_create_or_write. Al crear y/o actualizar un registro del modelo seleccionado.

    • on_unlink. Al eliminar un registro del modelo seleccionado.

    • on_change. Al editar valores en la vista formulario de un registro.

    • on_time. Al transcurrir un tiempo determinado.

  • activity_type. Tipo de actividad que tiene que crearse a través de la acción automatizada.

  • activity_summary. Resumen de la actividad que se crea a través de la acción automatizada.

  • activity_date_deadline_range. Valor del tiempo hasta el vencimiento de la actividad creada a través de la acción automatizada.

  • activity_date_deadline_range_type. Unidad de tiempo para el vencimiento de la actividad. Las opciones disponibles son las siguientes:

    • days. Días.

    • weeks. Semanas.

    • months. Meses.

  • activity_user_type. A quién se le tiene que asignar la actividad. Las opciones disponibles son las siguientes.

    • specific. A un usuario específico.

    • generic. A un usuario genérico del registro (en este caso, se tendría que seleccionar el nombre técnico del campo que contiene a este usuario).

  • activity_user_id. Usuario al que se le asigna la actividad creada a través de la acción automatizada.

 En Sygel trabajamos cada día para adaptar a diferentes escenarios las opciones que tanto Odoo como la Odoo Community Association (OCA) ofrecen. Somos conscientes de que cada empresa tiene unas características específicas y, por ello, el trato personalizado se traduce en la implantación del ERP para que cumpla tanto con las expectativas como con las necesidades de nuestros clientes. A la vez, compartimos nuestros avances con el resto de la comunidad, para que cada día se beneficie más gente.