¡Solo faltan 4 días para el final del reto! Hoy cubrimos una funcionalidad esencial en cualquier aplicación de gestión: la generación de documentos imprimibles (Informes PDF).
En Odoo (V19), los informes PDF se basan en una estructura de tres partes: una Acción de Reporte que invoca el informe, un Motor de Plantillas (QWeb) que renderiza el contenido, y el uso de Wkhtmltopdf (un motor de renderizado de HTML a PDF).
¿Qué hemos cubierto en el Día 21?
Hemos añadido el código XML necesario para definir la acción de reporte y la vista de plantilla QWeb que formará el cuerpo de nuestro PDF.
Los componentes clave que hemos cubierto son:
1. La Acción de Reporte (ir.actions.report)
Esta acción de XML es el punto de inicio para la generación del informe. Define los metadatos del PDF:
- model: El modelo en el que se basa el informe.
- report_type: Generalmente qweb-pdf.
- report_name: El nombre técnico de la plantilla QWeb que contiene el diseño.
- name: El nombre que aparece en el menú de impresión y en el nombre del archivo PDF.
2. La Plantilla QWeb
QWeb es el lenguaje de plantillas que utiliza sintaxis HTML enriquecida con directivas Odoo (t-if, t-foreach, t-field). Esta plantilla es la que diseña el contenido.
- Estructura: La plantilla debe heredar o incluir las estructuras base de Odoo para obtener los estilos, el header y el footer (si no, el PDF saldrá sin ellos).
- Acceso a Datos: Dentro de QWeb, los registros del modelo se acceden a través de la variable docs.
- Ejemplo Básico: <t t-foreach=»docs» t-as=»o»>…</t> para iterar sobre los registros seleccionados.
3. El Botón de Impresión
Para que el usuario pueda generar el PDF desde el formulario, añadimos un botón especial en la vista Formulario:
- type=»report»: Indica que este botón debe ejecutar una acción de reporte.
- name: Debe ser el ID externo de la ir.actions.report.
La Importancia para el Negocio
La capacidad de generar facturas, contratos o etiquetas personalizadas es vital. Los informes PDF son el punto final de muchos flujos de trabajo, y QWeb ofrece una flexibilidad enorme para el diseño basado en datos.
Explicación Detallada en Vídeo
En el siguiente vídeo, te muestro la sintaxis de ir.actions.report, cómo estructurar la plantilla QWeb básica y cómo se accede a los campos de tu registro (o.campo_x) dentro del HTML.
Código Fuente en GitLab
Puedes consultar el código fuente completo de esta lección, con la definición de la acción de reporte y la plantilla QWeb de ejemplo, directamente en nuestro repositorio.
➡️ Ver el Código en GitLab: https://github.com/angelmoya/calendario-adviento-curso-tecnico-odoo-19/tree/d9d7e5ccded32a06ca86c11daa23758c60077e78
Conecta Conmigo y Sigue Aprendiendo
¡Ya puedes generar PDFs profesionales! Mañana, volvemos a la eficiencia de datos.
- LinkedIn: Conecta conmigo en LinkedIn
YouTube: ¡No olvides suscribirte al canal para no perderte ninguna lección! http://www.youtube.com/@AngelMoya-Odoo