Tipos personalizados de reportes en Odoo
Más allá del PDF y HTML estándar, Odoo permite declarar tipos de reportes personalizados con sus propios handlers en JavaScript que invocan a controladores Python — útil para CSV, Excel u otros formatos que requieran lógica especial.
1¿Qué es ir.actions.report?
Es el modelo que define acciones de reporte. Cuando creas un reporte (factura PDF, cotización, etc.) se representa como un registro en ir.actions.report.
2¿Qué son los handlers?
Son los controladores que renderizan el contenido final del reporte. Según el report_type:
3Caso práctico: tipo de reporte CSV personalizado
Vamos a crear un nuevo tipo “csv_test”. Heredamos la vista lista de cotizaciones y añadimos un botón en el header:

El botón llama a la función action_csv_test en sale.order:

ir.actions.report con: nombre del modelo, opciones con IDs de registros, output_format = “csv_test” (identificador) y nombre del archivo. El campo report_type = “csv_test” es el nuevo tipo que vamos a declarar.4Declarar el handler en JavaScript
Desde JS declaramos el nuevo tipo de reportes — al disparar uno de tipo csv_test, llama a la URL /csv_test_report de un controlador y descarga el resultado:

5Crear el controlador Python
El controlador en CSVTestController con URL /csv_test_report recibe modelo + IDs y genera un CSV con columnas ID, orden, partner:

6Probar el reporte
Seleccionamos varias ventas, aparece el botón Imprimir reporte CSV y al pulsarlo se descarga:

El archivo descargado, abierto en LibreOffice y editor de texto:


7Consejos rápidos
qweb-pdf para PDFs estándar, controller para casos con lógica especial.ir.actions.report y redefine solo lo que toca.iot y pos_iot los usan para llamar métodos JS y extender funcionalidad.📌 En resumen
Los tipos de reportes personalizados son la herramienta correcta cuando QWeb-PDF no alcanza. Tres piezas: el dict que retorna la acción Python, el handler JS que enrutaa, y el controlador Python que genera el contenido. En Exdoo los implementamos para CSVs específicos, archivos XML para SAT u otras integraciones.
Deja un comentario