Automatizando Odoo - Acciones de servidor
Las acciones de servidor en Odoo permiten automatizar el funcionamiento. Permiten realizar muchas acciones útiles, como por ejemplo:
Agregar seguidores
Enviar e-mails
Crear o actualizar registros
Ejecutar código de Python
El que más uso es el último, ya que es una forma rápida de agregar funcionalidad a Odoo sin necesidad de agregar un módulo (con los tiempos asociados de promoción a producción).
Vamos a conocer como funcionan las acciones de servidor con un ejemplo. Supongamos que queremos borrar en forma masiva cientos de ordenes de compra en borrador, y para ello debemos cancelarlas. Para eso debemos ejecutar el método button_cancel que está definido en el modelo purchase.order
def button_cancel(self):
for order in self:
for inv in order.invoice_ids:
if inv and inv.state not in ('cancel', 'draft'):
raise UserError(_("Unable to cancel this purchase order. You must first cancel the related vendor bills."))
self.write({'state': 'cancel', 'mail_reminder_confirmed': False})
Primer paso, crear la acción de servidor y asociarla al modelo purchase.order. La acción que se va a hacer es "Ejecutar código Python" y el código a ejecutar debe ser
records.button_cancel()
La variable records es un recordset con los registros seleccionados por el usuario. Y lo que hace la acción es, por cada registro seleccionado ejecutar el método button_cancel. Acto seguido, debemos clickear "Create Contextual Action" para que se cree el menu "Cancelar ordenes de compra" en las ordenes de compra seleccionadas.
Al seleccionar dicho menú se ejecutará la acción definida, cancelando las ordenes de compra seleccionadas.
Las acciones de servidor son muy útiles para el desarrollador y administrador de sistema. No en el momento de implementación del sistema debido a que uno tiende a implementar dicha funcionalidad en los módulos. Pero una vez que el sistema está en producción y el costo de actualizar el mismo se incrementa, las acciones de servidor es una forma agil y barata de agregar funcionalidad a Odoo. Solo se requiere tener conocimiento de como funciona cada método invocado (en la mayoría de los casos).
Acerca de:
Gustavo Orrillo
Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.