Skip to content

Acciones de Sistema

Las acciones definen el comportamiento del sistema en respuesta a las acciones del usuario: inicio de sesión, botón de acción, selección entre otras. Estas pueden almacenarse en la base de datos o devolverse directamente como diccionarios, por ejemplo, en métodos de botón.

Definición de acción:

<record id="ACTION_ID" model="ACTION_MODEL_ID">
<field name="name">NAME</field>
<field name="res_model">MODEL.NAME</field>
<field name="view_mode">list,form</field>
</record>
  • Acción de Ventana, id de modelo ir.actions.act_window
  • Acción de URL, id de modelo ir.actions.act_url
  • Acción de Servidor, id de modelo ir.actions.act_server
  • Acción de Reporte, id de modelo ir.actions.report
  • Acción de Cliente, id de modelo ir.actions.client
  • Acción Planificada, id de modelo ir.cron

Acción de Ventana (ir.actions.act_window)

Section titled “Acción de Ventana (ir.actions.act_window)”

El tipo de acción más común, utilizado para presentar visualizaciones de un modelo a través de vistas una acción de ventana define un conjunto de tipos de vista (y posiblemente vistas específicas) para un modelo (y posiblemente un registro específico del modelo).

Ejemplo de acción de ventana:

<record id="test_model_action" model="ir.actions.act_window">
<field name="name">Test action</field>
<field name="res_model">test_model</field>
<field name="view_mode">list,form</field>
</record>

Las acciones se pueden activar de tres formas:

  • Haciendo clic en los elementos del menú (vinculados a acciones específicas)
  • Haciendo clic en botones en vistas (si están conectados a acciones)
  • Como acciones contextuales en el objeto

Definición de menú:

<menuitem id="ROOT_MENU_ID" name="ROOT_MENU_NAME">
<menuitem id="FIRST_LEVEL_MENU_ID" name="FIRST_LEVEL_MENU_NAME">
<menuitem id="ITEM_MENU_ID" name="ITEM_MENU_MENU_NAME" action="ACTION_ID"/>
</menuitem>
</menuitem>

Los menús siguen una arquitectura de tres niveles:

  • El menú raíz, que se muestra en el Conmutador de aplicaciones (el conmutador de aplicaciones de la Comunidad Odoo es un menú desplegable)
  • El menú del primer nivel, que se muestra en la barra superior
  • Los menús de acción

Menu Menu

Ejemplo de menu de dos niveles:

<menuitem id="test_menu_root" name="Test">
<menuitem id="test_first_level_menu" name="First Level">
<menuitem id="test_model_menu_action" action="test_model_action"/>
</menuitem>
</menuitem>

Las acciones de URL permiten abrir direcciones de sitio web/página web a través de una acción de Odoo. Se puede personalizar a través de dos campos:

Ejemplo de acción de URL:

{
"type": "ir.actions.act_url",
"url": "https://odoo.com",
"target": "self",
}

Acción de Servidor (ir.actions.act_server)

Section titled “Acción de Servidor (ir.actions.act_server)”

La acción del servidor funciona sobre un modelo base y ofrece varios tipos de acciones que se pueden ejecutar automáticamente, por ejemplo, utilizando reglas de acción base, o manualmente, agregando la acción en el menú contextual “Más”.

Acciones disponibles:

  • Ejecutar código Python: un bloque de código python que se ejecutará
  • Crear un nuevo registro: crear un nuevo registro con nuevos valores
  • Escribir en un registro: actualizar los valores de un registro
  • Ejecutar varias acciones: defina una acción que desencadene varias otras acciones del servidor

Los registros en la base de datos son significativamente más ricos y pueden realizar una serie de acciones específicas o genéricas en función de su estado. Algunos campos y los comportamientos correspondientes se comparten entre estados:

  • code: Ejecuta el código python proporcionado a través del argumento code.
  • object_create: Crea un nuevo registro del modelo crud_model_id siguiendo las especificaciones fields_lines.
  • object_write: Actualiza los registros actuales siguiendo las especificaciones fields_lines
  • multi: Ejecuta varias acciones dadas a través del argumento child_ids.

Ejemplo de acción de servidor:

<record id="test_model_server_action" model="ir.actions.server">
<field name="name">Test Model Server Action</field>
<field name="model_id" ref="model_demo_19_test_model"/>
<field name="state">code</field>
<field name="code">action = model.get_test()</field>
</record>

La acción de cliente desencadena una acción implementada completamente en el cliente.

Ejemplo de acción de cliente:

{
"type": "ir.actions.client",
"tag": "pos.ui"
}

Las acciones planificadas, son activadas automáticamente en una frecuencia predefinida.

Ejemplo de acción planificada:

<record id="cron_method" model="ir.cron">
<field name="name">Cron method</field>
<field name="model_id" ref="model_demo_19_test_model"/>
<field name="state">code</field>
<field name="code">model.cron_method()</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="active" eval="False"/>
</record>