Appearance
Saldo de CtaCte en PDFs de Comprobantes
Módulo: CtaCte Tipo: Process Estado: Implementado Fecha: 2026-06-10
Descripción
Al generar el PDF de una factura, nota de crédito o nota de débito, el sistema imprime el saldo de cuenta corriente del cliente vigente en el momento de la generación. Para soportar este dato, se agregó una columna created_at a todas las tablas de movimientos de ctacte registradas en mulcta.base.
Dominio 1: Columna created_at en tablas de movimientos
Propósito
Cada tabla de movimientos de ctacte (mulcta.base) necesita registrar el instante de inserción de cada fila. Esto permite calcular el saldo en un punto en el tiempo específico y habilita auditorías históricas.
Reglas
- La columna
created_at TIMESTAMP WITH TIME ZONE NOT NULLse agrega a todas las tablas registradas enmulcta.base(vía migración dinámica, no hardcodeada). - El default es
NOW()para que las filas nuevas se auto-populen sin cambios en la aplicación. - Las filas históricas se backfillean con
created_at = fecha::timestamp— ninguna fila puede quedar conNULLpost-migración. - La migración es de tipo BASE con niveles EMPRESA + SUCURSAL (itera todos los schemas de tenant).
Migración
| Dirección | Acción |
|---|---|
up() | Agrega created_at con default NOW() + backfill de filas históricas |
down() | Elimina la columna de todas las tablas mulcta.base |
Dominio 2: Saldo de cliente en PDFs de comprobantes de venta
Comportamiento
Al generar el PDF de una factura, nota de crédito o nota de débito, el sistema añade el saldo de cuenta corriente del cliente como dato adicional en la sección de datos del cliente.
Cálculo del saldo
sql
SELECT SUM(debe) - COALESCE(SUM(haber), 0)
FROM ordcta
WHERE id_cliente = :idCliente- El saldo se calcula post-operación: el comprobante ya está registrado en la base de datos antes de generar el PDF, por lo que el saldo reflejado incluye el efecto del comprobante actual.
- La consulta usa la misma conexión (
$conn) configurada porindex.phppara el schema/sucursal del tenant — no se abre una conexión separada.
Templates afectados
Los tres templates de factura aplican este cambio:
factura-a4.phpfactura-a4-elegante.phpfactura-a4-prueba.php
Consideraciones Técnicas
- La migración itera dinámicamente las tablas de
mulcta.basepara no hardcodear nombres de tablas que pueden variar por instalación. - El backfill usa la columna
fechade cada tabla como aproximación razonable paracreated_atde filas históricas. - El saldo mostrado en el PDF es informativo y no tiene efecto en la contabilización del comprobante.
Referencias
- Spec:
openspec/changes/registro-saldo-ctacte-comprobantes/spec.md - Relacionado: Recibo — Saldo de Cliente
- Relacionado: Schema Column Resource