Ejemplos de Proyectos y Patrones de Arquitectura en Odoo
El desarrollo en Odoo sigue patrones consolidados de diseño de software empresarial. A continuación, analizamos tres arquitecturas habituales de módulos en producción.
1. Módulo de Gestión de Activos e Inventario TI #
- Objetivo: Controlar el ciclo de vida de dispositivos informáticos corporativos (laptops, servidores, licencias).
- Modelado ORM:
hardware.asset: Modelo principal conname,serial_number,state(draft,in_use,maintenance,scrapped),partner_id(empleado custodio) ycompany_id.
- Vistas de Interfaz:
- Vista Kanban con columnas agrupadas por
statey vista de lista (<list>) con decoradores de color (decoration-danger="state == 'maintenance'").
- Vista Kanban con columnas agrupadas por
- Seguridad:
- Record Rule que restringe la visualización de activos a la compañía actual del usuario (
[('company_id', 'in', company_ids)]).
- Record Rule que restringe la visualización de activos a la compañía actual del usuario (
2. Extensión de Ventas con Pasarela de Pago Externa #
- Objetivo: Integrar un proveedor de pagos externo (Stripe/Redsýs) y procesar confirmaciones asíncronas vía webhook.
- Herencia y Modelado:
sale.orderextendido mediante_inherit = 'sale.order'con campospayment_transaction_idypayment_status.
- Controlador Web (
http.Controller):- Endpoint
@http.route('/payment/webhook', type='json', auth='public', csrf=False)que valida la firma criptográfica HMAC y actualiza el pedido a estado confirmado.
- Endpoint
3. Módulo de Gestión de Ausencias y RRHH #
- Objetivo: Flujo de solicitud y aprobación de vacaciones con calendario interactivo.
- Componentes:
- Modelo
hr.leave.requestcon fechas de inicio/fin y campo computadoduration_days. - Vista de calendario (
<calendar date_start="date_from" date_stop="date_to">). - Wizard de aprobación masiva con
models.TransientModel. - Record Rule: Empleados solo leen sus solicitudes (
[('create_uid', '=', user.id)]); Administradores aprueban todas.
- Modelo
Resumen del tema
Conceptos clave #
- Patrones de Arquitectura en Módulos Prácticos:
- Gestión de Inventario: modelos relacionales (
hardware.asset), categorización, wizards de incidencias, estados y reportes PDF. - Ventas e Integración de Pagos: extensión de
sale.ordercon_inherit, controladores web de webhooks y pasarelas de pago externas. - Recursos Humanos (RRHH): vistas de calendario (
calendar), flujos de aprobación por estados y aislamiento por Record Rules ([('create_uid', '=', user.id)]).
- Gestión de Inventario: modelos relacionales (
- Integración Integral de la Pila Odoo: combinación de modelos ORM, vistas XML, seguridad granular (ACL + Rules), automatizaciones y pruebas unitarias en
tests/.
Qué debes recordar #
La solidez de un módulo en Odoo radica en orquestar armónicamente el ORM, las vistas personalizadas, la seguridad de acceso y los flujos de negocio automatizados.