Appearance
Advertencia de Reingreso de Cheque de Terceros
Módulo: Tesorería Tipo: Process Estado: Implementado Fecha: 2026-06-05
Descripción
Cuando un operador intenta ingresar un cheque de terceros que ya fue egresado anteriormente, el sistema realiza una búsqueda previa y muestra un diálogo de confirmación con los datos del cheque egresado. Esto evita reingreso silencioso de cheques que ya salieron del sistema.
Flujo
1. Operador completa los campos número, CUIT y banco en el formulario.
2. Antes de enviar el POST, el frontend llama:
GET mod-tesoreria/cheque?numero={n}&cuit={c}&banco={b}
3. Si found=false → el formulario se envía directamente.
4. Si found=true y fecegr IS NOT NULL → se muestra el diálogo de confirmación.
5. Si el operador confirma → se envía el POST y el backend limpia fecegr (reingreso).
6. Si el operador cancela → no se envía nada.Reglas de Negocio
RN-01: Pre-flight solo cuando los tres campos están completos
La búsqueda previa se ejecuta únicamente cuando numero, cuit y banco están presentes y no vacíos. Si alguno falta, el formulario se envía sin pre-flight.
RN-02: Diálogo de confirmación bloqueante
El diálogo SweetAlert2 que aparece cuando se detecta un cheque egresado:
- No es descartable haciendo clic fuera del cuadro (
allowOutsideClick: false). - Muestra: número de cheque, banco, CUIT y fecha de egreso formateada.
- El operador debe elegir explícitamente Confirmar o Cancelar.
RN-03: Cheque sin egreso no requiere confirmación
Si el cheque existe pero fecegr IS NULL (nunca egresó), el formulario se envía directamente sin mostrar el diálogo.
Frontend
Interacciones
| Situación | Comportamiento |
|---|---|
| Cheque no existe en el sistema | Envío directo, sin diálogo |
| Cheque existe, sin egreso | Envío directo, sin diálogo |
| Cheque existe + egresado | Diálogo de confirmación bloqueante |
| Operador confirma reingreso | POST enviado |
| Operador cancela | No se envía nada |
Endpoint de pre-flight
GET /mod-tesoreria/cheque?numero={numero}&cuit={cuit}&banco={banco}Respuesta esperada:
json
{
"found": true | false,
"fecegr": "2026-03-15" | null
}Backend
El endpoint GET busca por los tres campos (numero, cuit, banco) y devuelve si existe y su fecha de egreso. El POST de reingreso pone fecegr = NULL en el registro existente.
Consideraciones Técnicas
- La verificación es optimista: si el GET falla por red o timeout, el formulario puede continuar (degradación graceful recomendada).
- El diálogo es del lado del cliente — no previene el POST si alguien llama el endpoint directamente. La validación de negocio definitiva debe estar en el backend.
Referencias
- Spec:
openspec/changes/advertencia-reingreso-cheque-terceros/spec.md - Relacionado: Flujo de Tesorería - Ventas