En Odoo 13, puedes agregar botones personalizados al menú de acciones de las vistas de formulario para ejecutar funcionalidades adicionales. Esto es útil si deseas extender las acciones disponibles en modelos específicos, como la validación de documentos, la creación de registros relacionados, o el disparo de una acción específica.
Table of contents
Open Table of contents
Definir el Botón en la Vista XML
El primer paso es agregar el nuevo botón dentro de la vista XML correspondiente. En este ejemplo, vamos a agregar un botón de acción en la vista de formulario del modelo sale.order. El botón aparecerá en el menú desplegable de acciones.
<record id="view_order_form_inherit" model="ir.ui.view">
<field name="name">sale.order.form.inherit.action.button</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<button name="action_custom_function"
string="Nueva Acción"
type="object"
class="oe_highlight"
attrs="{'invisible': [('state', '!=', 'sale')]}"/>
</xpath>
</field>
</record>
Crear la función de Python
Después de definir el botón en la vista, necesitas crear la función Python correspondiente que manejará la acción. Esta función se define en el modelo del objeto. A continuación te muestro cómo hacerlo:
from odoo import models, api
class SaleOrder(models.Model):
_inherit = 'sale.order'
@api.multi
def action_custom_function(self):
# Aquí va la lógica que quieres implementar
for order in self:
# Ejemplo: mostrar un mensaje de éxito
order.message_post(body="¡Acción personalizada ejecutada con éxito!")
return True
Conclusión
Agregar nuevas acciones a los botones en Odoo 13 es una forma poderosa de extender las funcionalidades de la plataforma. Con solo unos pocos pasos, puedes personalizar la experiencia de usuario e implementar acciones específicas según tus necesidades de negocio.
Recuerda siempre heredar correctamente los modelos y las vistas para evitar conflictos con otras personalizaciones.