Skip to content

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 NULL se agrega a todas las tablas registradas en mulcta.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 con NULL post-migración.
  • La migración es de tipo BASE con niveles EMPRESA + SUCURSAL (itera todos los schemas de tenant).

Migración

DirecciónAcció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 por index.php para el schema/sucursal del tenant — no se abre una conexión separada.

Templates afectados

Los tres templates de factura aplican este cambio:

  • factura-a4.php
  • factura-a4-elegante.php
  • factura-a4-prueba.php

Consideraciones Técnicas

  • La migración itera dinámicamente las tablas de mulcta.base para no hardcodear nombres de tablas que pueden variar por instalación.
  • El backfill usa la columna fecha de cada tabla como aproximación razonable para created_at de filas históricas.
  • El saldo mostrado en el PDF es informativo y no tiene efecto en la contabilización del comprobante.

Referencias