Curso Odoo OWL 2026
El curso técnico de Odoo frontend
17 de noviembre a 15 de diciembre de 2026
Todo lo necesario para formar a un programador del cliente web de Odoo, componentes, widgets y demás elementos frontend.
Formador: Ángel Moya Pardo
“Ángel Moya es una figura de referencia en el ecosistema Odoo, con una trayectoria que se remonta a 2009. Su veteranía le otorga una perspectiva única: ha vivido la evolución de la herramienta desde sus etapas iniciales hasta convertirse en el estándar de ERP de código abierto que es hoy.
Lo que define su perfil:- Arquitecto de Soluciones y Desarrollador Experto: Con un dominio profundo de Python y el núcleo de Odoo, Ángel destaca por su capacidad para desarrollar módulos eficientes y realizar integraciones complejas mediante conectores de servicios web. Su enfoque no es solo "picar código", sino construir soluciones escalables.- Consultoría Estratégica: Gracias a su dualidad técnico-funcional, actúa como puente entre las necesidades de negocio y la ejecución técnica. Su análisis permite identificar con precisión las fortalezas y debilidades de cada implementación, asegurando que el software se adapte al proceso y no al revés.- Pilar de la Comunidad (OCA): Colaborador activo en la Odoo Community Association (OCA), Ángel defiende y aplica los estándares de calidad y las mejores prácticas del software libre, garantizando la ética y la robustez en sus proyectos.- Formador y Comunicador: Más allá de la implementación, su vocación docente está respaldada por el Certificado de Aptitud Pedagógica (CAP). Ha formado a equipos en universidades y grandes empresas, transformando conceptos técnicos complejos en conocimiento accionable para grupos multidisciplinares.En resumen: Ángel Moya combina 17 años de experiencia práctica con una visión analítica y una probada capacidad pedagógica. Es un experto capaz de liderar transformaciones digitales integrales y una voz imprescindible en cualquier foro especializado en Odoo."
Condiciones
El curso debe estar abonado al 100% antes del comienzo del mismo.
Contenido
Objetivo: Dominar los principios de OWL de manera aislada y pura antes de abordar la complejidad del cliente web de Odoo.
Sesión 1: Arquitectura, Componentes y Reactividad Básica
- Introducción y Filosofía de OWL: Contexto histórico y evolución desde el antiguo sistema de Widgets hacia OWL. Ventajas del Virtual DOM ligero de Odoo frente a frameworks genéricos (React, Vue).
- Estructura y Sintaxis de Plantillas QWeb en OWL: Definición de componentes (Component). Directivas esenciales: t-if, t-elif, t-else, t-foreach, t-as, t-key. Manejo declarativo de eventos del DOM mediante t-on-*.
- Estado Reactivo y Ciclo de Vida: Reactividad profunda con el hook useState. Métodos del ciclo de vida: setup, onWillStart, onMounted, onWillUpdateProps, onWillDestroy. Referencias directas al DOM con useRef y t-ref.
- Taller Práctico 1: Creación de un componente interactivo autónomo con lista filtrable y contadores reactivos en memoria.
Sesión 2: Props, Comunicación y Hooks Avanzados
- Validación y Contrato de Componentes (props): Tipado estricto, propiedades obligatorias y opcionales (type, optional). Componentes reutilizables y slots (t-slot).
- Comunicación entre Componentes: Comunicación descendente (props down) y notificación ascendente mediante eventos personalizados (dispatchEvent). Comunicación transversal mediante el Event Bus para componentes desacoplados.
- Inyección de Dependencias y Custom Hooks: Contexto ambiental de OWL (useSubEnv, env). Diseño e implementación de Custom Hooks para encapsular y reutilizar lógica reactiva.
- Taller Práctico 2: Construcción de una interfaz maestro-detalle con sincronización reactiva entre listas y fichas mediante eventos y bus.
Objetivo: Integrar componentes OWL de forma nativa en el Web Client, creando acciones cliente, widgets de campo y consumiendo servicios corporativos.
Sesión 3: Arquitectura JavaScript de Odoo, Assets y Servicios
- Gestión de Assets en Odoo Moderno: El bundle web.assets_backend y la directiva @web/.... Carga de módulos ESM (ECMAScript Modules) y empaquetado.
- El Sistema de Registries: Concepto y funcionamiento de registry.category. Categorías clave: actions, services, fields, views.
- Inyección y Consumo de Servicios del Core: Acceso a servicios mediante el hook useService: orm, notification, dialog, action, router. Llamadas seguras al backend (métodos ORM: search_read, call, unlink).
- Creación de un Servicio Propio: Definición y registro de un servicio personalizado en el cliente web.
- Taller Práctico 3: Implementación de un servicio de telemetría / notificaciones contextuales para el usuario.
Sesión 4: Acciones Cliente (Client Actions) y Dashboards
- Anatomía de una Client Action: Declaración de la acción en XML (ir.actions.client) y asociación con el tag JS en el registry. Estructura: controlador JS, plantilla QWeb y estilos SCSS.
- Integración con el ControlPanel Nativo: Componente ControlPanel: botones de acción, migas de pan (breadcrumbs) y barra de búsqueda.
- Diseño de un Dashboard Interactivo: Carga de datos asíncrona mediante onWillStart. Refresco reactivo sin recargar la página.
- Taller Práctico 4: Desarrollo de un cuadro de mando operativo con tarjetas métricas interactivas y botones de acción que ejecutan flujos del backend.
Sesión 5: Componentes de Campo (Field Components / Widgets)
- Arquitectura de las Vistas de Formulario y Campos: El registro fields y la definición de un standardFieldProps. Lectura de valores y notificación de cambios al modelo (record.update).
- Construcción de un Campo Personalizado desde Cero: Manejo de estados (edición vs solo lectura). Soporte para parámetros configurables en la vista XML (options="{'...'}").
- Taller Práctico 5: Creación de un widget visual para formularios (selector avanzado de prioridad o escala interactiva) con persistencia directa en base de datos.
Sesión 6: Modales, Vistas y Técnicas de Parcheo (Patching)
- Diálogos Modales y Popovers: Uso del servicio dialog para lanzar modales estándar y modales construidos con componentes OWL personalizados.
- Mecanismo de Extensión (Patching en Odoo): Uso de la función utilitaria patch para extender componentes existentes del núcleo. Manejo de la función super en componentes parcheados. Buenas prácticas para evitar colisiones y asegurar compatibilidad entre versiones.
- Taller Práctico 6: Modificación limpia de la barra superior (NavBar) o inyección de un botón con diálogo modal interactivo en una vista estándar de Odoo.
Objetivo: Asegurar la mantenibilidad y calidad del código frontend mediante pruebas automatizadas y estándares de código de la comunidad.
Sesión 7: Testing Frontend Moderno con Hoot
- Introducción al Framework Hoot: Contexto de Hoot en Odoo: reemplazo y evolución frente al modelo clásico de QUnit. Entorno de ejecución de pruebas frontend en el navegador.
- Anatomía de un Test en Hoot: Montaje de componentes en el DOM de pruebas mediante mount(). Simulación de eventos del usuario (clics, pulsaciones de teclas, foco) con asistentes de Hoot. Aserciones y verificación de estado.
- Mocks de Servicios y Backend: Simulación de respuestas ORM y llamadas RPC en entornos aislados.
- Taller Práctico 7: Creación de una batería completa de pruebas automáticas para el Dashboard y el widget desarrollados en los bloques anteriores.
Sesión 8: Optimización, Buenas Prácticas, OWL 3 y Proyecto Integrador
- Depuración y Rendimiento: Herramientas de depuración de OWL (OWL DevTools). Detección de fugas de memoria (memory leaks): limpieza correcta de listeners y temporizadores en onWillDestroy. Optimización de re-renderizados innecesarios.
- Organización del Código y Directrices de Calidad: Estructura de directorios recomendada en módulos Odoo. Convenciones de nombrado, tipado y directrices promovidas por AEOdoo y OCA.
- OWL 3: Cambios principales con respecto a OWL 2.
- Proyecto Integrador y Cierre: Revisión integradora de la solución completa generada a lo largo del curso. Turno abierto de resolución de consultas técnicas avanzadas.
¿Cual es la planificación?
El curso dura un total de 24 horas, repartidas en 8 sesiones de 3 horas, los siguientes martes y jueves: 17, 19, 24 y 26 de noviembre; 1, 3, 10 y 15 de diciembre.
Las instrucciones y herramientas para comenzar se pondrán a disposición de los alumnos antes de comenzar.