Skip to content

Visualizacion de Retenciones en PDF de Recibo

Modulo: Tesoreria Tipo: Process Estado: Planificado Fecha: 2026-03-11


Descripcion

Este proceso contempla la muestra correcta de las retenciones de cobranza genericas en el comprobante PDF generado al emitir un recibo. Cuando un recibo tiene retenciones registradas en recret, el PDF debe listarlas con su nombre y valor, y el total del comprobante debe reflejar correctamente la suma.

El approach es analogo al ya implementado para retenciones de ganancias en ordenes de pago, donde el template de PDF resuelve el nombre del concepto desde su tabla de conceptos y muestra cada retencion dinamicamente.

Valor para el negocio:

  • Permite al usuario ver en el comprobante fisico las retenciones que el cliente aplico al pagar
  • Garantiza que el total impreso en el recibo sea consistente con los movimientos registrados en el sistema
  • Equipara el tratamiento de retenciones en recibo al ya existente para ordenes de pago

Contexto:

  • Las retenciones de cobranza se registran al procesar el recibo y quedan en la tabla recret
  • El nombre de cada retencion se obtiene de boniret via el campo id_retencion
  • La generacion del PDF ocurre en informes/ — no hay cambio de frontend visible al usuario
  • El approach de referencia es el de retenciones de ganancias en ordenes de pago, donde el template resuelve el nombre desde congan y lista cada retencion dinamicamente

Contexto del comprobante

El PDF de recibo se genera desde informes/reports/mod-ctacte/cargrecib_template.php. Este mismo template sirve tanto para recibos (deudores) como para ordenes de pago (acreedores).

Actualmente el template tiene dos sistemas de retenciones:

SistemaTipo de operacionTabla de conceptosTabla de relacionEstado
Retenciones de GananciasOrden de pago (acreedor)congandetganImplementado
Retenciones de CobranzaRecibo (deudor)boniretrecretPendiente

El template ya resuelve dinamicamente los nombres de retenciones de ganancias consultando congan. El mismo mecanismo debe aplicarse para retenciones de cobranza consultando boniret.


Comportamiento esperado

En el PDF del recibo

Cuando un recibo tiene retenciones de cobranza aplicadas (recret):

  1. Se lista cada retencion con valor distinto de cero, mostrando:
    • Nombre del concepto, obtenido de boniret.nombre via recret.id_retencion
    • Valor de la retencion
  2. Las retenciones con valor igual a cero no se muestran
  3. El total del comprobante incluye el monto del recibo mas la suma de las retenciones

En re-impresion de recibo

Al reimprimir un recibo ya registrado, el PDF debe mostrar las mismas retenciones que se mostraron al momento de la emision, cargandolas desde recret JOIN boniret.


Reglas de Negocio

RN-008: Muestra de retenciones en PDF

  • Condicion: Se genera o reimprime el PDF de un recibo que tiene retenciones registradas en recret
  • Accion: El PDF muestra dinamicamente cada retencion con su nombre (desde boniret) y su valor
  • Filtro: Solo se muestran las retenciones cuyo valor sea distinto de cero
  • Total: El total del comprobante impreso equivale al monto del recibo mas la suma de las retenciones mostradas

RN-009: Resolucion del nombre del concepto

  • Condicion: El template construye la lista de retenciones para el PDF
  • Accion: Para cada fila en recret, se consulta boniret usando recret.id_retencion para obtener boniret.nombre
  • Analogia: Es el mismo mecanismo que usa el template para ganancias, donde resuelve el nombre desde congan

RN-007: Cuenta contable obligatoria (ya documentada en proceso de carga)

  • Al registrar una retencion en el recibo, la cuenta contable es obligatoria
  • Sin cuenta contable valida no se puede confirmar la retencion
  • Esta regla garantiza que el egreso en tesoreria siempre tenga cuenta contable correcta

Casos de Uso

CU-001: Emision de recibo con retenciones — PDF correcto

Actor: Sistema (generacion automatica del PDF al confirmar el recibo)

Precondiciones:

  • El recibo fue confirmado con al menos una retencion con valor ingresado
  • Las retenciones quedaron registradas en recret con id_retencion referenciando boniret

Flujo principal:

  1. El sistema genera el PDF del recibo al momento de la confirmacion
  2. El template recupera las retenciones del recibo desde recret usando el id_recibo
  3. Para cada retencion en recret con valor distinto de cero, consulta boniret para obtener el nombre
  4. El PDF muestra cada retencion con su nombre y valor
  5. El total del comprobante suma el monto del recibo mas el total de retenciones

Postcondiciones:

  • El PDF impreso refleja todas las retenciones aplicadas al recibo
  • El total del PDF es consistente con el movimiento registrado en tesoreria

CU-002: Re-impresion de recibo con retenciones

Actor: Usuario de tesoreria

Precondiciones:

  • El recibo fue emitido previamente con retenciones
  • El usuario accede a la pantalla de reimpresion y selecciona el recibo

Flujo principal:

  1. Usuario selecciona un recibo para reimprimir
  2. El sistema carga los datos del recibo incluyendo las retenciones desde recret JOIN boniret
  3. Se genera el PDF con el mismo contenido que en la emision original
  4. El PDF muestra las retenciones con nombre y valor, y el total correcto

Postcondiciones:

  • El PDF reimpreso es fiel al original, con las mismas retenciones

CU-003: Recibo sin retenciones — sin cambios en PDF

Actor: Sistema

Precondiciones:

  • El recibo no tiene retenciones registradas en recret

Flujo principal:

  1. El sistema genera el PDF del recibo
  2. El template no encuentra retenciones para este recibo
  3. El PDF se genera sin seccion de retenciones, identico al comportamiento actual

Postcondiciones:

  • El PDF no muestra retenciones
  • El total del comprobante es el monto del recibo sin modificaciones

Dependencias

Funcionalidades relacionadas

  • Carga de retenciones en recibo (02-carga-retenciones-recibos.md): proceso previo que registra las retenciones en recret. Este proceso depende de que las retenciones esten correctamente cargadas
  • Conceptos de retencion (boniret) (01-conceptos-tesoreria.md): fuente del nombre que se muestra en el PDF
  • Retenciones en orden de pago: approach de referencia ya implementado en el template

Tablas involucradas

  • recret — relacion recibo-retenciones. Campos relevantes: id_recibo, id_retencion, valor de la retencion
  • boniret — conceptos de retencion. Campo relevante: nombre

Criterios de Aceptacion

PDF al emitir

  • [ ] El PDF del recibo muestra una seccion de retenciones cuando el recibo tiene retenciones con valor
  • [ ] Cada retencion se muestra con el nombre obtenido de boniret y su valor
  • [ ] Las retenciones con valor igual a cero no aparecen en el PDF
  • [ ] El total del comprobante en el PDF incluye el monto del recibo mas las retenciones mostradas

PDF en re-impresion

  • [ ] Al reimprimir un recibo con retenciones, el PDF muestra las mismas retenciones que al emitirlo
  • [ ] El sistema carga las retenciones desde recret JOIN boniret para resolver el nombre

Recibos sin retenciones

  • [ ] Los recibos sin retenciones generan un PDF sin diferencias respecto al comportamiento actual

Notas Adicionales

  • El approach es analogo al ya implementado para retenciones de ganancias en ordenes de pago: el template consulta la tabla de conceptos para resolver el nombre y construye la lista dinamicamente
  • No hay cambio de interfaz de usuario: la modificacion es exclusiva del informe PDF generado en informes/
  • La seccion de retenciones de ganancias (fila RET. GANANC. en el PDF) no se modifica; las retenciones de cobranza se muestran como una seccion separada o como filas adicionales dinamicas segun el diseno del comprobante

Documentacion de Retenciones Genericas Sistema Bautista ERP