Appearance
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
boniretvia el campoid_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
congany 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:
| Sistema | Tipo de operacion | Tabla de conceptos | Tabla de relacion | Estado |
|---|---|---|---|---|
| Retenciones de Ganancias | Orden de pago (acreedor) | congan | detgan | Implementado |
| Retenciones de Cobranza | Recibo (deudor) | boniret | recret | Pendiente |
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):
- Se lista cada retencion con valor distinto de cero, mostrando:
- Nombre del concepto, obtenido de
boniret.nombreviarecret.id_retencion - Valor de la retencion
- Nombre del concepto, obtenido de
- Las retenciones con valor igual a cero no se muestran
- 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 consultaboniretusandorecret.id_retencionpara obtenerboniret.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
recretconid_retencionreferenciandoboniret
Flujo principal:
- El sistema genera el PDF del recibo al momento de la confirmacion
- El template recupera las retenciones del recibo desde
recretusando elid_recibo - Para cada retencion en
recretcon valor distinto de cero, consultaboniretpara obtener el nombre - El PDF muestra cada retencion con su nombre y valor
- 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:
- Usuario selecciona un recibo para reimprimir
- El sistema carga los datos del recibo incluyendo las retenciones desde
recretJOINboniret - Se genera el PDF con el mismo contenido que en la emision original
- 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:
- El sistema genera el PDF del recibo
- El template no encuentra retenciones para este recibo
- 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 enrecret. 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 retencionboniret— 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
bonirety 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
recretJOINboniretpara 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