Skip to main content

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:

  1. 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.
  2. 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 datos invoicePaidToDate(...) y invoiceOpenToDate(...).
  3. 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ón currencyConvert(...) 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.
  4. 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 datos T_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.
  • PastDueAmt0 a PastDueAmt5: 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.