Ir al contenido
FINORA Academy
SistemaFINORA ERP

11. Reportes — Print Formats, Jasper Reports y reportes financieros

Intermedio15 minVerificado el 25 sept. 2026

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.

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.jrxml

BundleResourceLoader 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.jrxml

FINORA 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).

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.

NecesitasUsa
Un listado o documento estándar, editable sin códigoPrint Format
Posicionamiento exacto sobre papel preimpreso, o un layout que Print Format no puede lograrJasper Reports, cargado con bundle:<bsn>:<ruta>
Un estado financiero (Balance, Resultados) armado desde el plan de cuentasReport Line Set + FinReport

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.

  • 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; commits b8c7efd y 35d4007) — confirma que el core empaqueta las fuentes DejaVu
  • finora-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)