11. Reportes — Print Formats, Jasper Reports y reportes financieros
iDempiere puede generar un documento imprimible (una factura, una orden, un libro) por dos caminos distintos, y FINORA usa ambos según lo que necesite cada reporte.
Print Format: definido en el Diccionario, sin código
Sección titulada «Print Format: definido en el Diccionario, sin código»El motor nativo (AD_PrintFormat, con sus AD_PrintFormatItem por columna) genera el diseño de
impresión desde el propio Diccionario de Aplicación (ver
Tutorial 3): qué columnas de una tabla o de una
consulta se imprimen, en qué orden, con qué formato numérico o de fecha, agrupadas y totalizadas cómo.
Se edita con un editor propio dentro de la interfaz (sin escribir una plantilla aparte), y es el
camino natural para la mayoría de los listados y documentos estándar del ERP.
Jasper Reports: control pixel a pixel, cargado desde el bundle
Sección titulada «Jasper Reports: control pixel a pixel, cargado desde el bundle»Cuando el formato de salida necesita posicionamiento exacto — el ejemplo típico es una factura en
forma libre preimpresa, donde el papel ya trae membrete y casillas fijas de una imprenta — el
editor de Print Format no alcanza. Para eso, iDempiere puede usar una plantilla Jasper Reports
(.jrxml) en lugar de un Print Format.
Lo que hace interesante esto para un plugin OSGi es que la plantilla no necesita estar en el
sistema de archivos del servidor: BundleResourceLoader (org.adempiere.report.jasper) sabe resolver
una ruta con el prefijo bundle:<símbolo-del-bundle>:<ruta>, leyendo el archivo directamente del jar
del plugin:
AD_Process.JasperReport = bundle:com.finora.lve.fiscal:reports/invoice/FVE_Invoice_FormaLibre.jrxmlBundleResourceLoader copia ese archivo a una carpeta local y lo compila la primera vez (y de nuevo
solo si su contenido cambió), así que la plantilla viaja versionada con el código del plugin, no como
un archivo suelto que alguien tiene que copiar a mano al servidor
(finora-lve/docs/ARCHITECTURE.md, §4.4, ADR-LVE-005).
finora-lve/plugins/com.finora.lve.fiscal/└── reports/ └── invoice/ └── FVE_Invoice_FormaLibre.jrxmlFINORA LVE usa este camino para: la factura legal en forma libre (con desplazamientos de impresión
configurables por lote de formas, porque cada imprenta entrega un formato ligeramente distinto), los
comprobantes de retención, y los libros legales de IVA (sobre vistas del Diccionario,
FVE_RV_*) — todos exportables a PDF y XLSX (finora-lve/docs/ARCHITECTURE.md, §4.4).
Reportes financieros (FinReport)
Sección titulada «Reportes financieros (FinReport)»Los estados financieros (Balance General, Estado de Resultados) en iDempiere no se arman con Print
Format ni con Jasper directamente: se definen con líneas de reporte (Report Line Set, tablas
PA_ReportLine/PA_ReportLineSet del módulo de Performance Analysis), donde cada línea agrupa
cuentas contables (o rangos de cuentas) y se puede anidar en secciones con subtotales — el motor
FinReport del core arma el documento final leyendo esas definiciones contra Fact_Acct.
Cuándo usar cada uno
Sección titulada «Cuándo usar cada uno»| Necesitas | Usa |
|---|---|
| Un listado o documento estándar, editable sin código | Print Format |
| Posicionamiento exacto sobre papel preimpreso, o un layout que Print Format no puede lograr | Jasper Reports, cargado con bundle:<bsn>:<ruta> |
| Un estado financiero (Balance, Resultados) armado desde el plan de cuentas | Report Line Set + FinReport |
Idioma del reporte, no solo de la interfaz
Sección titulada «Idioma del reporte, no solo de la interfaz»Un detalle que se pasa por alto al diseñar un Print Format: iDempiere permite traducciones por idioma
del propio formato de impresión (títulos de columna, encabezados, textos fijos), independientes de la
traducción de la ventana. Un cliente que opera en es_VE pero exporta un reporte para una casa matriz
en en_US puede ver el mismo documento con encabezados en el idioma correcto sin duplicar el Print
Format — la traducción vive en la tabla de traducciones del propio registro AD_PrintFormat, igual que
cualquier otro elemento traducible del Diccionario.
Fuentes
Sección titulada «Fuentes»finora-lve/docs/ARCHITECTURE.md, §4.4 (Jasper cargado desde el bundle, riesgo de fuentes embebidas)finora-erp-experience/research/IDEMPIERE_BEST_PRACTICES_AUDIT.md, §6 (Agent 01, 2026-09-26; commitsb8c7efdy35d4007) — confirma que el core empaqueta las fuentes DejaVufinora-lve/decisions/ADR.md, ADR-LVE-005 (reportes legales en Jasper cargado desde el bundle)finora-lve/AGENTS.md(módulo FINORA LVE Contable: estados financieros VEN-NIF)- wiki.idempiere.org — pendiente de una referencia específica sobre
PA_ReportLineSet/FinReport(marcado Por verificar arriba)