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:

  1. 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 un C_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.
  2. Generación de Líneas de Detalle (LevelNo = 1):
    • Consulta la vista contable diaria cds_rv_fact_acct_day aplicando 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 = 1 en la tabla temporal.
  3. 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' y LevelNo = 0.
  4. Actualización Masiva del Balance Acumulado: Ejecuta un comando SQL de tipo UPDATE que 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:

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.


Revision #1
Created 2026-05-19 21:17:44 UTC by Angel Lara
Updated 2026-05-19 21:17:44 UTC by Angel Lara