Ejemplos de Proyectos y Patrones de Arquitectura en Odoo
El desarrollo en Odoo sigue patrones consolidados de diseño de software empresarial. Los siguientes son diseños orientativos, no addons completos para copiar. En proyectos reales revisa primero los módulos estándar disponibles y extiéndelos cuando cubran el dominio.
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:
- Restricción global de
ir.accesscon operacióncrudy dominio que restringe la visualización de activos a la compañía actual del usuario ([('company_id', 'in', company_ids)]).
- Restricción global de
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='http', auth='public', csrf=False)que valida la firma del proveedor sobre el cuerpo original, controla duplicados y delega el cambio al flujo estándar depayment.transaction. No confirma pedidos únicamente por recibir un POST ni sustituye el módulo de pagos.
- 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. - Permiso de grupo
ir.accesscon operaciónry dominio: 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 dominios de acceso ([('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 (
ir.access, grupos y dominios), automatizaciones y pruebas unitarias entests/.
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.