Saltar al contenido

Acciones de servidor en Odoo

🐍 DESARROLLO · ODOO · SERVER ACTIONS

Acciones de servidor en Odoo

Las server actions automatizan procesos ejecutando código o acciones predefinidas cuando ocurre un evento en el sistema. Se configuran desde la UI o desde módulos personalizados (Python/XML), y disparan flujos completos sin intervención manual del usuario.

🎛️
DESDE UI O CÓDIGO
Sin programar o con Python según caso

MANUAL O AUTO
Botón de acción o trigger automatizado

🌐
CUALQUIER MODELO
Ventas, contactos, productos…

🔗
ENCADENABLES
Una acción puede ejecutar otras

1
Características principales

🖱️ Manual o automática
Desde un botón o ligadas a Automated Actions u otros disparadores.

🎯 Sin programar
Las opciones estándar cubren mucho — Python opcional para casos complejos.

🌐 Para todo modelo
Disponibles para cualquier modelo de Odoo, no solo los core.

2
Tipos de acciones de servidor

📝 Actualizar registro
📅 Crear actividad
📧 Enviar correo
📱 Enviar SMS
➕ Agregar seguidores
➖ Eliminar seguidores
📋 Crear registro
🐍 Ejecutar código
🔌 Webhook
🔁 Ejecutar acciones

3
Caso de ejemplo

🎯 OBJETIVO
Actualizar el cliente de una venta en cualquier estado a un cliente específico. Normalmente Odoo no permite esto cuando la orden ya está confirmada — pero con una server action sí.

4
Ejemplo desde la interfaz gráfica

▸ Ruta:
Ajustes

Técnico

Acciones del servidor
Crear nueva acción de servidor desde la UI

Configuración del registro:

Nombre: Actualizar cliente
Tipo: Actualizar registro
Modelo: sale.order
Grupos: Ventas / Administrador

En la sección Detalles de la acción: Actualizar, campo Cliente, y selecciona el cliente destino (en el ejemplo, Azure Interior, Brandon Free).

Crear acción contextual

Tras guardar, pulsa Crear acción contextual. Esto permite ver la acción desde el menú Acciones en las vistas formulario y lista del modelo:

Acción contextual creada
Menú Acciones con la nueva opción visible

Probar la acción

Tomamos una venta en estado Orden de venta (cliente original: XOCHILT CASAS CHAVEZ):

Venta antes de la acción con cliente original

Aunque normalmente no se puede actualizar la venta en este estado, al ejecutar la acción de servidor desde el menú Acciones, el cliente cambia al configurado:

Cliente actualizado tras la acción
Confirmación del cambio en la venta

5
Ejemplo desde módulo personalizado (XML)

Dentro de un módulo personalizado declaramos un registro del modelo ir.actions.server:

Definición XML de la acción de servidor con campos técnicos

Campos clave:

Campo Descripción
name Nombre — “Actualizar cliente desde código”.
update_field_id ID del campo a cambiar.
update_path Nombre técnico del campo (partner_id).
update_related_model_id Modelo al que apunta el campo (res.partner).
resource_ref Referencia técnica (res.partner,27).
value ID del registro destino (27 en este ejemplo).

Al actualizar el módulo, vemos la acción ya con su acción contextual creada:

Acción nueva visible tras actualizar el módulo
Resultado tras ejecutar la acción
Vista intermedia con confirmación
Validación del cambio en la base de datos

6
Versión simplificada con tipo Código

💡 PROBLEMA DEL ENFOQUE ANTERIOR
El ejemplo XML termina siendo poco práctico — requiere conocer nombres técnicos de campos específicos y referencias. Una alternativa: cambiar el tipo a “Ejecutar código” y simplificar.
Acción de servidor con type=code y código Python simplificado

Cambios respecto al ejemplo anterior:

state
Antes object_write, ahora code.

code
Llama directamente a write() con el nuevo partner_id.

Vista formulario de la acción simplificada

Al ejecutarla, el resultado es el mismo — el cliente se actualiza sin importar el estado:

Ejecutar la acción simplificada
Cliente actualizado tras ejecución
Validación final

7
Consejos rápidos

✅ Acciones predefinidas primero
Antes de irte directo a Python, revisa si las opciones estándar (enviar email, actualizar campo, crear registro) cubren tu caso.

⚠️ Cuidado con bucles infinitos
No actualices un campo que vuelva a disparar la misma acción — puedes colgar el sistema.

✅ Nombres y descripciones claros
Pueden acumularse muchas y volverse confusas. Documenta para tu yo del futuro.

💡 Limita cuándo se ejecutan
Filtros y dominios evitan crear registros o correos innecesarios.

✅ Encadena acciones
Una server action puede ejecutar otra — útil para flujos complejos sin Python.

⚠️ Permisos del usuario que dispara
La acción se ejecuta con los permisos del usuario que la dispara — si no tiene acceso al modelo, falla.

Resultado final del ejemplo simplificado

📌 En resumen

Las server actions son una herramienta versátil de Odoo. Cubren desde casos simples (actualizar un campo, enviar un email) hasta lógicas complejas con Python — sin tener que escribir un módulo completo.

Empieza con acciones predefinidas y solo escala a Python cuando lo necesites. Y siempre, siempre prueba en un entorno de desarrollo antes de producción. En Exdoo usamos server actions todos los días en módulos a medida — son la columna vertebral de muchas automatizaciones que entregamos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Te gustaría implementar Odoo en tu empresa?

12 años de experiencia · +60 implementaciones exitosas · Partner Gold de Odoo en México

Hablemos por WhatsApp