Skip to content

Billing ​

Objetivo ​

Documentar cómo sy-energy convierte la energía consumida en un importe a cobrar, y qué diferencia hay entre los dos modelos comerciales que soporta.

Responsabilidad del módulo ​

Calcular el costo de la energía por centro de carga según el contrato vigente, consolidarlo en un estado de cuenta y dejarlo listo para facturar.

Audiencia ​

Finanzas, operación y desarrollo interno.

Estado documental ​

  • Estado: Borrador
  • Última actualización: 2026-08-02
  • Owner: Pendiente
  • SME requerido: finanzas / operación
  • Fuente resumida: constructores de estado de cuenta, tipos de producto y comandos de cálculo.

Los dos modelos ​

Todo el módulo gira alrededor de una decisión: cómo se determina el precio de la energía en el contrato.

Tipo de productoCómo se cobraCuándo se puede facturar
fixed — FijoPrecio pactado en el contrato.En cuanto cierra el mes: solo hace falta la demanda.
fixed-with-energy-loss — Fijo con pérdidasPrecio pactado, considerando pérdidas de energía.Igual que el fijo.
pass-through — Pass ThroughSe traslada al cliente el costo real del mercado.Solo cuando CENACE publicó la información del periodo.

Esa diferencia es la razón de que el ciclo mensual tenga dos fechas: día 1 para los contratos fijos, día 4 para los pass-through.

Entidades principales ​

EntidadRol
ContratoVincula un centro de carga con un tipo de producto y una vigencia.
Centro de cargaEl punto que consume energía, identificado por RMU.
Estado de cuentaDocumento mensual con el desglose del periodo.
Factura / OrdenDocumento fiscal derivado del estado de cuenta.

Un solo contrato activo

El sistema exige exactamente un contrato activo por centro de carga en el periodo. Con cero o con más de uno, la generación del estado de cuenta falla y notifica al administrador.

Es la causa más frecuente de que un centro de carga quede sin facturar en el cierre mensual.

Cómo se arma el estado de cuenta ​

text
file:statement-account --rmu --year --month
        │
        ├─ busca el contrato activo del periodo
        │
        └─ según el tipo de producto:
              fixed / fixed-with-energy-loss  →  constructor de costo fijo
              pass-through                    →  constructor pass-through

El comando falla, sin generar documento, si el centro de carga no existe, si no hay contrato activo o si hay más de uno.

run:statement-account hace lo mismo para todos los centros de carga del participante, encolando un trabajo por cada uno. Sin --year y --month usa el mes anterior al día en que se ejecuta.

Componentes del costo pass-through ​

Cuando el contrato es pass-through, el costo se compone de varios conceptos que se calculan por fecha de operación:

ComponenteComando
Mercado de Día en Adelantopassthrough:mda
Mercado de Tiempo Realpassthrough:mtr
Congestiónpassthrough:congestion
Distribuciónpassthrough:distribution
Ancho de bandapassthrough:bandwidth
Estimado del mespassthrough:estimated

Y el cálculo integral del mes, sobre los contratos activos del centro de carga:

bash
php artisan calculate:by-passthrough --rmu=<RMU> --year=<YYYY> --month=<MM>

Cubre bloque de energía, CELs, capacidad y pass-through de CENACE.

Otros conceptos ​

ConceptoDónde se calcula
Capacidad anualcalculate:critical-hours y calculate:by-charge-center --slug=year-capacity
CELs — Certificados de Energías LimpiasDominio de CELs; entra en el cálculo integral.
Balances de CENACE, energía, trading y pass-throughEstrategias de reporte del sistema.

Las 100 horas críticas del año determinan la capacidad; se calculan una vez por año, no en cada cierre.

Validaciones disponibles ​

ValidaciónComando
Potencia MDA contratada vs. la del estado de cuentaverify:mda-deals --year= --month=
Completitud de la energía de CENACE en un periodopassthrough:check-cenace-energy <inicio> <fin>
Contratos activos en una fechacontracts:active --date=

Las tres conviene correrlas antes de facturar, no después.

Errores comunes ​

SíntomaCausa probable
Un centro de carga no generó estado de cuentaCero o más de un contrato activo en el periodo.
Importes en cero en un contrato pass-throughEl periodo se calculó antes de que CENACE publicara la información.
Importes incompletosFaltan datos de demanda o huecos en el ECD.
Diferencias de potencia MDADiscrepancia entre contrato y estado de cuenta; revisar con verify:mda-deals.

Evidencia esperada ​

  • Exportación de contratos activos del periodo.
  • Estado de cuenta generado para cada centro de carga esperado.
  • Resultado de las validaciones previas al cierre.

Riesgos y gaps ​

  • No está documentada la fórmula de cada componente pass-through; esta página describe el flujo, no el cálculo.
  • No está documentado el tratamiento de un periodo reliquidado por CENACE después de facturar.
  • No hay una vista única que muestre qué centros de carga quedaron sin estado de cuenta en un cierre.
  • No está confirmado si los cálculos son idempotentes al repetirse sobre un periodo ya procesado.

Próxima revisión ​

Al resolver las preguntas abiertas del ciclo mensual de facturación.