Informes Financieros
Este libro técnico detalla el funcionamiento y la arquitectura de los procesos clave incluidos en el plugin . Este módulo amplía las capacidades financieras y contables nativas de Lirion, permitiendo la generación avanzada de estados financieros, automatización de diarios contables, análisis de antigüedad de saldos, generación de auxiliares de contabilidad y automatización de estructuras jerárquicas.
- Introducción y Resumen de Procesos
- Motor de Reportes Financieros
- Generador de Notas Contables
- Auxiliar Contable (Estado de Cuenta)
- Antigüedad de Saldos
- Generador Jerárquico de Líneas (DFS)
Introducción y Resumen de Procesos
Este libro técnico detalla el funcionamiento y la arquitectura de los procesos clave incluidos en el plugin com.cdsoftware.finreport. Este módulo amplía las capacidades financieras y contables nativas de iDempiere/Lirion, permitiendo la generación avanzada de estados financieros, automatización de diarios contables, análisis de antigüedad de saldos, generación de auxiliares de contabilidad y automatización de estructuras jerárquicas.
Propósito del Módulo: Proporcionar herramientas robustas para la consolidación, análisis y automatización contable directa en el núcleo de iDempiere, optimizando el rendimiento mediante consultas a vistas precalculadas y el uso eficiente de tablas temporales de base de datos.
Procesos Contenidos en el Plugin
El plugin está estructurado en torno a cinco procesos principales, cada uno diseñado para resolver una necesidad contable o de generación de informes específica:
| Proceso | Clase Java | Descripción Funcional y Uso |
|---|---|---|
| Motor de Reportes Financieros | FinReport.java |
Generador dinámico de Balance General y Estado de Resultados utilizando cubos de reportes o la tabla Fact_Acct directamente. |
| Generador de Diarios Contables | GLJournalGenerate.java |
Automatiza la creación de asientos de diario (GL Journals) a partir de reglas, multiplicadores y redondeos de saldos existentes. |
| Auxiliar Contable (Estado de Cuenta) | AccountingLedger.java |
Genera la información detallada de transacciones auxiliares calculando saldos iniciales y saldos acumulados progresivos. |
| Antigüedad de Saldos | Aging.java |
Clasifica facturas y cobros/pagos pendientes en rangos de vencimiento (corriente, 30, 60, 90, 120+ días) a una fecha de corte. |
| Generador Jerárquico de Líneas (DFS) | DFSGenerateLines.java |
Utiliza una búsqueda en profundidad (DFS) sobre el árbol de cuentas para crear de manera automática las líneas y orígenes de reportes. |
Nota: Para desarrolladores e implementadores, cada sección detalla los parámetros de entrada requeridos en iDempiere, las tablas temporales utilizadas y las validaciones de negocio implementadas en el código fuente.
Motor de Reportes Financieros
Descripción General
El proceso FinReport es el motor principal para la generación de reportes financieros personalizados en iDempiere/Lirion (como el Balance General, Estado de Resultados, etc.). Este proceso lee definiciones dinámicas de filas y columnas, consolida los montos contables desde el diario real y genera la salida lista para impresión o exportación.
Funcionamiento del Motor: A diferencia de los informes contables rígidos, FinReport permite definir estructuras complejas en las ventanas de Configuración de Reportes (PA_Report), aplicando cálculos matemáticos entre columnas, porcentajes de participación y expansiones jerárquicas dinámicas.
Flujo de Ejecución Técnico
El proceso sigue los siguientes pasos durante su ejecución en el servidor:
- Inicialización: Carga la definición del reporte (
PA_Report) utilizando el ID del registro seleccionado y calcula los periodos contables basados en el calendario y offsets definidos. - Limpieza y Preparación: Inserta filas vacías temporales en la tabla de base de datos
T_Reportcorrespondientes a la estructura de líneas configurada (PA_ReportLine). - Consolidación Contable: Consulta los registros de transacciones contables acumulando saldos de débito y crédito. Si se especifica un Cubo de Reportes (
PA_ReportCube), consultaFact_Acct_Summary; de lo contrario, lee directamente deFact_Acct. - Cálculos Dinámicos: Procesa fórmulas matemáticas definidas para columnas, porcentajes de líneas y cálculos acumulativos.
- Formateo y Renderizado: Crea o actualiza dinámicamente un formato de impresión (
MPrintFormat) personalizado con los anchos y estilos adecuados para las columnas calculadas, y limpia de la tablaT_Reportlas líneas marcadas como no imprimibles.
Parámetros
Al ejecutar el proceso FinReport en Lirion o iDempiere, se presentan los siguientes parámetros de configuración:
| Parámetro | Nombre en BD | Descripción / Uso |
|---|---|---|
| Período | C_Period_ID |
Período contable base sobre el cual generar el reporte. Si está vacío, calcula el período basado en la fecha del sistema. |
| Jerarquía de Organización | PA_Hierarchy_ID |
Estructura de árbol organizativo para consolidar múltiples sucursales u organizaciones. |
| Organización | Org_ID |
Filtro opcional para limitar el reporte a una organización específica (y opcionalmente a sus hijas dentro de la jerarquía). |
| Socio de Negocio | C_BPartner_ID |
Filtro opcional para segmentar los saldos por un tercero específico. |
| Producto | M_Product_ID |
Filtro opcional para segmentar por un producto. |
| Cubo de Reportes | PA_ReportCube_ID |
Cubo de datos opcional para acelerar la extracción de saldos pre-agrupados en lugar de la tabla de hechos Fact_Acct. |
| Detalle de Origen Primero | DetailsSourceFirst |
Determina si las líneas detalladas de origen contable se muestran antes de las líneas de totales correspondientes. |
Generador de Notas Contables
Descripción General
El proceso Generador de Diarios Contables (GLJournalGenerate) automatiza la creación de asientos de diario en PrimApp / iDempiere a partir de los saldos de transacciones acumulados en el diario real (tabla Fact_Acct). Este proceso aplica multiplicadores, reglas de agrupamiento de dimensiones contables y factores de redondeo configurados en una plantilla predefinida.
Automatización de Cierres Contables: Este proceso es clave para realizar provisiones contables automáticas, distribución de costos indirectos, reclasificaciones de saldos de fin de mes o amortizaciones sin necesidad de cálculos manuales externos.
Flujo de Ejecución Técnico
Cuando el proceso se ejecuta, realiza el siguiente flujo de procesamiento en el servidor de aplicaciones:
- Carga de la Plantilla Contable: Instancia la plantilla de configuración del generador (
QSS_JournalGenerator) utilizando el ID del registro activo. - Definición del Agrupamiento (Dimensiones): Determina qué dimensiones contables se heredarán en las líneas del diario contable de destino:
- Si
CopyAllDimensionsestá marcado en la línea del generador, el proceso agrupa y copia dinámicamente todos los elementos del esquema contable (Tercero, Producto, Proyecto, Actividad, Campaña, etc.). - Si no está marcado, solo agrupa y copia el Tercero (según la regla
BPDimensionType) y/o el Producto (siSameProductestá activo).
- Si
- Extracción y Sumarización: Ejecuta consultas SQL dinámicas sobre
Fact_Acctagrupadas por las dimensiones resultantes. Filtra las transacciones contables reales (PostingType = 'A') en base a las cuentas contables del árbol definidas en las Fuentes del Generador (QSS_JournalGeneratorSource). - Cálculo de Multiplicadores y Redondeo:
- Para cada fuente de origen, multiplica el saldo neto (
AmtAcctDr - AmtAcctCr) por el multiplicador de la fuente (AmtMultiplier) y aplica su respectivo redondeo. - Suma los montos resultantes y, a nivel de línea de destino, aplica el multiplicador de la línea y el factor de redondeo de destino (
RoundFactor).
- Para cada fuente de origen, multiplica el saldo neto (
- Resolución Dinámica de Terceros: Si el tipo de dimensión de tercero es
Column, el proceso inspecciona el registro referenciado en la base de datos (por ejemplo, obteniendo el socio de negocio asignado a un proyecto o activo) para mapearlo dinámicamente como el tercero de la línea del diario. - Balanceo Contable: Calcula la diferencia neta entre los débitos y créditos resultantes de todo el lote. Si existe una diferencia menor debido a redondeos o porcentajes de distribución, genera automáticamente una línea de ajuste utilizando la cuenta de Ajuste Deudor (
AdjustDR) o Ajuste Acreedor (AdjustCR) definida en el generador. - Generación de Asiento:
- Si Es Simulación está activo (
IsSimulation = true), el proceso imprime en pantalla y en la bitácora el detalle de las líneas calculadas sin modificar los datos del sistema. - Si no es simulación, crea físicamente la cabecera del diario (
GL_Journal), genera las combinaciones contables correspondientes (C_ValidCombination) para cada línea (GL_JournalLine) y ejecuta la acción de documento parametrizada (por ejemplo, Completar el Asiento).
- Si Es Simulación está activo (
Estructura de Plantillas de Configuración
El comportamiento contable y el direccionamiento del proceso se gobiernan a través de tres niveles de registros:
- Generador de Diarios (Cabecera): Define el Esquema Contable (
C_AcctSchema_ID), la Organización, el Tipo de Documento, la Categoría de Diario, el Tipo de Registro (Generalmente Real 'A') y las Cuentas de Ajuste por Redondeo. - Línea de Generación: Define las cuentas contables definitivas en las que se registrarán el Débito (
C_ElementValueDR_ID) y/o el Crédito (C_ElementValueCR_ID), así como el tipo de agrupamiento de dimensiones (como el Tipo de Tercero: Fijo, Mismo Origen, Columna Externa) y sus multiplicadores finales. - Fuente del Generador: Define qué cuenta contable o árbol contable de origen (
C_ElementValue_ID) enFact_Acctproporcionará la información de saldo financiero, y qué porcentaje o multiplicador individual se le aplicará.
Parámetros
Al ejecutar el proceso Generador de Diarios Contables desde la interfaz de PrimApp / iDempiere, se presentan los siguientes parámetros de configuración:
| Parámetro | Nombre en BD | Descripción / Uso |
|---|---|---|
| Rango de Fechas | ProcessingDate |
Rango de fechas (Desde/Hasta) para filtrar y acumular los montos del diario origen (Fact_Acct). |
| Fecha de Contabilidad | DateAcct |
Fecha contable del asiento de diario generado. Determina el período contable destino. |
| Es Simulación | IsSimulation |
Si se marca como "Sí" (Y), el generador solo muestra una previsualización de los montos resultantes en el registro de log sin crear el asiento real. |
| Acción de Documento | DocAction |
La acción de documento contable que se aplicará automáticamente tras crear el diario (Completar, Preparar, etc.). |
| Nº del Documento | DocumentNo |
Número de documento personalizado opcional para el diario generado. Si está vacío, usa la secuencia predeterminada del tipo de documento. |
| Socio de Negocio | C_BPartner_ID |
Filtro opcional para extraer los saldos de origen contable pertenecientes a un tercero específico. |
| Producto | M_Product_ID |
Filtro opcional para extraer los saldos de origen contable pertenecientes a un producto específico. |
| Jerarquía de Organización | PA_Hierarchy_ID |
Estructura organizativa para consolidar movimientos contables de múltiples subsidiarias o sucursales. |
Importante: El proceso requiere que el diario generado contenga al menos una línea válida y sea posible balancearlo. Asegúrese de que las cuentas de ajuste contable de débitos y créditos estén debidamente configuradas en la cabecera del Generador de Diarios para evitar fallas en ejecuciones definitivas.
Auxiliar Contable (Estado de Cuenta)
Descripción General
El proceso Auxiliar Contable (Estado de Cuenta) (AccountingLedger) compila los movimientos contables detallados y calcula progresivamente el saldo acumulado (débitos, créditos y saldo en marcha) de una o varias cuentas contables dentro de un rango de fechas. La información consolidada se inserta en la tabla temporal T_ReportStatementCDS para facilitar su impresión y análisis.
Cálculo Eficiente de Saldos Progresivos: A diferencia de las consultas tradicionales de bases de datos, este proceso aprovecha las funciones analíticas de ventana SQL y el uso de una tabla temporal segmentada por instancia de proceso (
AD_PInstance_ID) para generar estados de cuenta complejos a gran velocidad.
Flujo de Ejecución Técnico
El proceso ejecuta las siguientes etapas durante su ejecución en el servidor de aplicaciones:
- Inicialización de Rango de Fechas: Si el usuario define fechas específicas en el parámetro
DateAcct, se utilizan dichos valores. Si no especifica fechas pero proporciona unC_Period_ID, extrae las fechas de inicio y fin de dicho período. Como último recurso, calcula los rangos basados en el mes calendario actual. - Generación de Líneas de Detalle (LevelNo = 1):
- Consulta la vista contable diaria
cds_rv_fact_acct_dayaplicando los filtros de cuenta, organización, terceros, proyectos, actividades y dimensiones del usuario. - Calcula el balance acumulado de las transacciones usando la función analítica SQL:
SUM(AmtAcctDr - AmtAcctCr) OVER (PARTITION BY e.Value ORDER BY e.Value, a.DateAcct, e.Description ASC ROWS UNBOUNDED PRECEDING). - Inserta los resultados con
LevelNo = 1en la tabla temporal.
- Consulta la vista contable diaria
- Cálculo del Saldo Inicial (LevelNo = 0):
- Suma los movimientos acumulados anteriores a la fecha de inicio del reporte.
- Control Contable de Cuentas de Resultados: Si la cuenta procesada no es de Balance (sino una cuenta de gastos o ingresos), el proceso restringe la consulta del saldo inicial limitándola a la fecha de inicio del año fiscal en curso (obtenida mediante
MPeriod.getFirstInYear). Esto evita la acumulación indebida de saldos históricos cerrados en ejercicios anteriores. - Inserta la línea de saldo consolidado inicial con la descripción fija
'SALDO INICIAL'yLevelNo = 0.
- Actualización Masiva del Balance Acumulado: Ejecuta un comando SQL de tipo
UPDATEque recalcula y encadena el saldo acumulado real progresivo sumando el saldo inicial (LevelNo = 0) con el histórico detallado de transacciones (LevelNo = 1) ordenadas por fecha contable y descripción.
Estructura de la Tabla Temporal T_ReportStatementCDS
La tabla intermedia t_reportstatementcds consolida los registros antes de que iDempiere invoque al motor de renderizado del reporte. Los campos clave de esta tabla son:
AD_PInstance_ID: Código numérico único asignado a la instancia del proceso ejecutado, permitiendo aislar las consultas concurrentes entre usuarios.LevelNo: Indica la jerarquía de la línea (0= Saldo Inicial;1= Detalle Transaccional).DateAcct: Fecha del movimiento contable.Name/Description: Nombre descriptivo o detalle de la transacción contable.AmtAcctDr/AmtAcctCr: Montos contables de débito y crédito.Balance: Saldo progresivo consolidado calculado a la fecha.Account_ID/Account_Name: Identificadores de la cuenta contable conteniendo la línea.c_bpartner_id: Socio de negocio de la transacción (tercero relacionado).
Nota de Rendimiento: La tabla temporal utiliza índices en su estructura de base de datos para los campos AD_PInstance_ID, Account_ID y DateAcct para garantizar velocidad óptima en grandes volúmenes de transacciones contables diarias.
Parámetros
Al ejecutar el proceso Auxiliar Contable (Estado de Cuenta) en la interfaz de PrimApp / iDempiere, se presentan los siguientes parámetros de configuración:
| Parámetro | Nombre en BD | Descripción / Uso |
|---|---|---|
| Esquema Contable | C_AcctSchema_ID |
El esquema de cuentas del cual se extraerán las transacciones (parámetro obligatorio). |
| Tipo de Asiento | PostingType |
Filtro por tipo de registro (A = Real, S = Presupuestado, P = Planificado). Por defecto, 'A'. |
| Período | C_Period_ID |
Define el período contable para deducir fechas en caso de que no se especifique un rango manual. |
| Fecha Contable | DateAcct |
Rango de fechas (desde/hasta) para el análisis auxiliar. |
| Cuenta Contable | Account_ID |
La cuenta natural a procesar. El proceso soporta la expansión jerárquica si se indica una jerarquía en el árbol. |
| Socio de Negocio | C_BPartner_ID |
Filtro opcional para extraer transacciones correspondientes a un tercero específico. |
| Jerarquía | PA_Hierarchy_ID |
Jerarquía para la resolución estructural del árbol organizativo o de cuentas. |
| Dimensiones Adicionales | Varios IDs | Filtros opcionales para refinar la extracción por Organización (AD_Org_ID), Producto, Proyecto, Actividad, Campaña, Región de Ventas, y elementos de dimensiones personalizadas de usuario (User1_ID, User2_ID, UserElement1_ID, UserElement2_ID). |
Antigüedad de Saldos
Descripción General
El proceso de Antigüedad de Saldos (Aging) analiza las facturas de venta y de compra pendientes de cobro o pago, junto con los cobros y pagos no aplicados, clasificándolos en rangos de vencimiento (corriente, 1-30, 31-60, 61-90, 91-120, 120+ días) a una fecha de corte específica. El resultado se registra en la tabla temporal T_Aging a través del modelo MAging.
Cálculo Histórico y Conversión de Monedas: Este proceso destaca por su capacidad de generar reportes de antigüedad retroactivos a cualquier fecha histórica (mediante la vista
RV_OpenItemToDate) y convertir dinámicamente todos los montos a una moneda de presentación común utilizando las tasas de cambio contables del sistema.
Flujo de Ejecución Técnico
El proceso sigue las siguientes etapas durante su ejecución en el servidor:
- Cálculo del Desfase de Fecha de Corte: Carga la fecha de corte parametrizada (
StatementDate). Si está vacía, asume la fecha actual del sistema. Calcula la diferencia en días entre hoy y la fecha de corte (m_statementOffset) para ajustar dinámicamente los días de vencimiento (DaysDue) obtenidos de la base de datos. - Selección del Origen de Datos (Actual vs. Histórico):
- Modo de Saldos Actuales (DateAcct = Falso): Consulta la vista estándar de partidas abiertas del sistema (
RV_OpenItem), reflejando los saldos pendientes a la fecha actual del sistema. - Modo Histórico (DateAcct = Verdadero): Consulta la vista histórica de partidas abiertas (
RV_OpenItemToDate) y calcula los importes pagados y abiertos a la fecha de corte del reporte mediante las funciones nativas de base de datosinvoicePaidToDate(...)yinvoiceOpenToDate(...).
- Modo de Saldos Actuales (DateAcct = Falso): Consulta la vista estándar de partidas abiertas del sistema (
- Conversión de Moneda Opcional: Si el usuario especifica una moneda destino en el parámetro
ConvertAmountsInCurrency_ID, el proceso encapsula las columnas de importes contables en la consulta SQL dentro de la funcióncurrencyConvert(...)utilizando la moneda de origen de la transacción, el ID de moneda destino, la fecha de contabilidad, el tipo de conversión y los datos de cliente/organización. - Agregación e Inserción en T_Aging (Modelo MAging):
- Ejecuta la consulta generada aplicando filtros por Organización, Grupo de Socios de Negocio o Tercero específico.
- Para cada fila devuelta, ajusta los días de retraso del pago sumando el desfase:
DaysDue + m_statementOffset. - Si el parámetro Listar Facturas (
IsListInvoices) está activo, genera registros desglosados detallando la factura, la fecha de facturación, el plan de pagos (C_InvoicePaySchedule_ID), la actividad, el proyecto y la campaña. Si no está marcado, agrupa la información del saldo consolidado por Socio de Negocio. - Inserta los cobros y pagos no aplicados (cobros a cuenta o anticipos donde
C_Payment_ID > 0) como saldos abiertos negativos en el reporte para disminuir el saldo vencido general de forma correcta. - Llama a
MAging.add(...)para mapear los montos en los rangos de mora correspondientes y los persiste en la tabla temporal de base de datosT_Aging.
Estructura de la Tabla Temporal T_Aging
El proceso interactúa directamente con la tabla de base de datos intermedia T_Aging. Los campos y cubetas clave utilizados son:
AD_PInstance_ID: Código numérico único de ejecución de proceso que garantiza el aislamiento de consultas concurrentes.StatementDate: Fecha de corte a la que fue calculado el análisis contable.C_BPartner_ID: Identificador del socio de negocio asociado al saldo contable.C_Currency_ID: Moneda de registro de los importes contables resultantes.DueAmt: Monto total del saldo abierto contable del tercero o documento.PastDueAmt0aPastDueAmt5: Distribución de montos contables abiertos en las diferentes cubetas de mora contable (por ejemplo, corriente, 1-30, 31-60, 61-90, 91-120 y más de 120 días).
Nota: Los cobros y pagos que han sido registrados en cuentas pero no han sido aplicados a facturas (cobros y pagos a cuenta) son clasificados de manera automática en la columna de saldo contable corriente (PastDueAmt0) para compensar y reflejar el valor neto real de deuda del tercero.
Parámetros
Al ejecutar el proceso de Antigüedad de Saldos (Aging) en Lirion o iDempiere, se presentan los siguientes parámetros de configuración:
| Parámetro | Nombre en BD | Descripción / Uso |
|---|---|---|
| Fecha de Corte | StatementDate |
Fecha de corte de saldos para calcular los rangos de antigüedad. Si se deja en blanco, asume el día de hoy. |
| A Fecha Contable | DateAcct |
Si se marca como "Sí" (Y), calcula la antigüedad utilizando los saldos a la fecha histórica indicada (retroactivo). Si es "No" (N), calcula los saldos vigentes actuales. |
| Transacción de Ventas | IsSOTrx |
Indica si se procesa la antigüedad de cuentas por cobrar de clientes (Y) o cuentas por pagar de proveedores (N). |
| Convertir a Moneda | ConvertAmountsInCurrency_ID |
Moneda de presentación de reporte. Realiza conversiones automáticas al ID seleccionado. |
| Organización | AD_Org_ID |
Filtro opcional para limitar la extracción a una sucursal u organización específica. |
| Grupo de Terceros | C_BP_Group_ID |
Filtro opcional para evaluar únicamente una categoría específica de socios de negocio. |
| Socio de Negocio | C_BPartner_ID |
Filtro contable opcional para evaluar un tercero de forma individual. |
| Listar Facturas | IsListInvoices |
Si se marca como "Sí" (Y), desglose individual de las facturas con sus rangos de vencimiento. Si es "No" (N), muestra los totales acumulados por socio de negocio. |
Generador Jerárquico de Líneas (DFS)
Descripción General
El proceso Generador Jerárquico de Líneas (DFS) (DFSGenerateLines) automatiza la creación de la estructura de líneas de reporte (PA_ReportLine) y sus correspondientes orígenes (PA_ReportSource) en iDempiere/Lirion. Para lograr esto, realiza un recorrido en profundidad (Depth-First Search - DFS) sobre el árbol del catálogo de cuentas, partiendo de un nodo raíz seleccionado.
Propósito del Generador DFS: Evitar la configuración manual de docenas o cientos de líneas contables al estructurar reportes financieros. Al leer jerarquías existentes del catálogo de cuentas, recrea la estructura exacta de manera jerárquica con sus sumatorias automáticas.
Flujo de Ejecución Técnico
Cuando el proceso se ejecuta, realiza los siguientes pasos en la base de datos y el servidor de aplicaciones:
- Secuenciación Inicial: Identifica el último número de secuencia (
SeqNo) registrado en el conjunto de líneas activo (PA_ReportLineSet_ID) para continuar la numeración incremental desde allí (con saltos de 10 en 10). - Carga del Árbol de Cuentas: Carga la definición del elemento contable (
C_Element_ID) y recupera la estructura del árbol jerárquico asociado. - Búsqueda del Nodo Raíz: Localiza el nodo inicial (
C_ElementValue_ID) con parent_id = 0 en el árbol configurado para iniciar el recorrido desde esa posición específica del catálogo. - Recorrido Recursivo DFS: Recorre recursivamente cada nodo del subárbol:
- Filtro de Resumen (IsSummary): Valida si el nodo actual debe ser procesado de acuerdo al parámetro configurado.
- Creación de Línea: Si corresponde procesarlo, crea un registro en la tabla
PA_ReportLinecon el nombre y descripción del elemento. - Asignación de Origen (Leaf Nodes): Si el nodo es una hoja (no tiene hijos), crea un registro en
PA_ReportSourcevinculándolo directamente al elemento contable (cuenta de detalle). - Generación de Totales: Si el nodo es un nodo de resumen (tiene hijos), tras procesar recursivamente a todos sus descendientes, genera automáticamente una línea de totalización con la descripción "Total [Código Cuenta]" y vincula su origen.
Tablas de iDempiere Utilizadas
El proceso interactúa y modifica las siguientes tablas del diccionario de datos de iDempiere:
AD_TreeNode: Define la relación jerárquica (Padre/Hijo) entre los elementos del árbol contable.C_ElementValue: Almacena las cuentas contables individuales, su código, nombre y tipo (detalle o resumen).PA_ReportLineSet: Cabecera del conjunto de líneas activo sobre el cual se ejecuta el proceso (el ID del registro actual de la ventana).PA_ReportLine: Registros de líneas de reporte que se insertan de forma secuencial durante el recorrido DFS.PA_ReportSource: Orígenes de datos que asocian cada línea de reporte con su cuenta correspondiente del catálogo.
Importante: Este proceso realiza inserciones directas sobre la estructura activa de PA_ReportLineSet. Se recomienda realizar una copia de seguridad o ejecutar en un conjunto de prueba, ya que no elimina líneas existentes antes de la inserción y podría duplicar secuencias si se ejecuta múltiples veces en el mismo registro.
Parámetros
Al ejecutar el proceso Generador Jerárquico de Líneas (DFS) en Lirion o iDempiere, se presentan los siguientes parámetros de configuración:
| Parámetro | Nombre en BD | Descripción / Uso |
|---|---|---|
| Elemento Contable | C_Element_ID |
El catálogo de cuentas (Chart of Accounts) de donde se leerá la estructura jerárquica. |
| Cuenta Raíz | C_ElementValue_ID |
El nodo de cuenta a partir del cual se elijo iniciar la travesía DFS (por ejemplo, la cuenta de Activo, Pasivo o Ingresos). |
| Filtrar Solo Cuentas de Resumen | IsSummary |
Filtro opcional. Si es Y, el generador solo creará líneas para las cuentas marcadas como de resumen (isSummary = 'Y') en el catálogo. Si es vacío o N, procesará todas las cuentas del subárbol. |