Saltar al contenido

Aplicaciones independientes con OWL

🦉 ODOO · DESARROLLO · OWL FRAMEWORK

Aplicaciones independientes con OWL

Componentes frontend con Owl que no dependen de las vistas tradicionales de Odoo (XML, QWeb). Quioscos de POS, portales de auto-facturación, interfaces externas accesibles desde cualquier navegador — sin necesidad de iniciar sesión.

1¿Qué son?

Módulos frontend construidos con Owl sin depender directamente de las vistas tradicionales del backend (lista, formulario, kanban). Ejemplos típicos:

🛒 Quiosco POS
Los usuarios crean sus propias órdenes desde una tablet o celular.
🧾 Auto-facturación
Portal donde clientes timbran su factura sin necesitar usuario.

2¿Por qué se usan?

🎨 UI a la medida
Sin las limitaciones de las vistas tradicionales.
👥 Usuarios externos
Interactúan con el backend sin ser usuarios del sistema.
⚡ Mejor rendimiento
Owl ofrece alta reactividad y renderizado optimizado.

3Estructura del módulo

Trabajamos con un módulo owl_application con __init__.py y __manifest__.py. Vamos a crear cada pieza:

3.1 — Componente Root (plantilla)

▸ Archivo: /owl_application/static/src/standalone_app/root.xml
Plantilla XML del componente Root

3.2 — JavaScript del Root

▸ Archivo: /owl_application/static/src/standalone_app/root.js
JavaScript del componente Root

3.3 — Configuración separada

💡 BUENA PRÁCTICA
Mantén el código de configuración aparte del componente. Crea app.js donde se mande llamar al Root.
Archivo app.js que invoca el componente Root

4Paquete de recursos en el manifest

Dentro de __manifest__.py creamos un paquete de recursos. Debe incluir web._assets_core (framework JS de Odoo) y luego las rutas a los archivos creados:

Paquete de recursos en el manifest
⚠️ OJO
Llamamos al paquete assets_standalone_app. Ese nombre tiene que coincidir con el que usaremos en la vista QWeb.

5Vista QWeb que carga el paquete

Una vez creado el paquete, definimos una vista QWeb que lo utilice:

Vista QWeb apuntando al paquete de recursos

6Controlador que renderiza la vista

El controlador devuelve el ID de la plantilla, y al entrar a la URL /owl_application/standalone_app obtenemos la vista renderizada:

Controlador que devuelve el template
🌐 ACCESO EXTERNO
Para probarlo desde fuera (móvil sin sesión) usamos ngrok y obtenemos una URL temporal. Resultado al entrar al controlador desde el celular:
URL temporal accesible sin iniciar sesión en Odoo

7Mejorando el ejemplo: actualizar una orden POS

Tenemos una orden de POS con id = 5 sin notas. Hagamos que la app independiente actualice su descripción:

Orden de punto de venta sin notas

7.1 — Plantilla actualizada

Plantilla del componente Root con input y botón
📝 NOTA
Los estilos CSS no se cuidan aquí — el foco del blog es la lógica de Owl, no el diseño.

7.2 — JavaScript actualizado

JavaScript del Root con función updateOrder
⚡ updateOrder()
Se ejecuta al pulsar el botón de la plantilla.
📡 POST al controlador
Llama a /owl_application/standalone_app/update con la nueva nota; el controlador actualiza la orden id=5.
✅ Estado reactivo
Si todo sale bien, el componente cambia su estado y muestra “Orden actualizada con éxito”.

7.3 — Ruta nueva en el controlador

Ruta /update en el controlador
⚠️ IMPORTANTE
Agregamos csrf=False solo para simplificar el código del blog. NUNCA hacer esto en bases productivas — habilita la protección CSRF.

8Resultado final

Ingresamos la nueva nota desde la URL externa y actualizamos:

Ingresar la nueva nota desde la app

Y al volver al backend de Odoo, la orden ya tiene la nota actualizada — sin haber sido usuarios del sistema:

La orden actualizada vista en el backend

9Consejos rápidos

🎯 Casos de uso muy específicos
Las apps independientes con Owl no son requeridas en la mayoría de proyectos.
🧱 Independencia de XML
Si construyes una app Owl, mantenla aislada del sistema de vistas tradicionales.
🧩 Componentes pequeños
Divide la app en componentes Owl reutilizables y bien nombrados.
🛡️ Lógica en backend
Las reglas de negocio van en Python — Owl es presentación y flujo.

📌 En resumen

Las aplicaciones independientes con Owl abren la puerta a interfaces frontales modernas que interactúan con Odoo sin requerir sesión: quioscos, portales, formularios externos. Si tienes un caso de uso, escríbenos a info@exdoo.mx.

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