Rollback de Importaciones de Pagos
Permite revertir una importación completa de pagos cuando se detecta un error después del procesamiento. Todos los efectos de la importación se deshacen en una sola operación atómica.
¿Cuándo usar rollback?
- Se cargó un archivo incorrecto (datos de otro mes o cliente)
- Se detectaron errores en los datos después de la importación
- Se duplicó una carga por error (mismo archivo cargado dos veces)
- El archivo contenía montos incorrectos
:::warning Rollback Irreversible
El rollback elimina permanentemente todos los registros de pagos de esa importación, incluyendo los que ya fueron asignados manualmente. No se puede deshacer.
:::
¿Qué revierte el rollback?
| Acción | Detalle |
|---|
| Eliminar gestiones | Todas las GestionModels con ImportJobId del job |
| Eliminar pagos sin asignar | Todas las UnassignedPayments del job |
| Eliminar ítems de revisión | Todos los PaymentImportReviewItems del job |
| Revertir MontoPagado | Resta el total de PaymentRemove de cada integrante afectado |
| Recalcular fechas | FechaUltimoPago y MontoUltimoPago se recalculan desde gestiones restantes |
| Marcar job | Status → rolled_back con auditoría |
Proceso Paso a Paso
1. Localizar la Importación
- Ir a Gestiones → Carga de Pagos
- Localizar el job en el historial de importaciones
- Verificar que el estado sea
completed o failed
2. Ejecutar Rollback
- Hacer clic en "Revertir" (solo visible para Admin/Supervisor)
- Se muestra un diálogo de confirmación con:
- Nombre del archivo
- Cantidad de gestiones a eliminar
- Advertencia de irreversibilidad
- Confirmar haciendo clic en "Sí, Revertir"
3. Resultado
- El job cambia su badge a "Revertido"
- Se muestra un toast de éxito con conteos:
- Gestiones eliminadas
- Pagos sin asignar eliminados
- Integrantes afectados
Lógica de Recálculo de Montos
Requisitos y Restricciones
| Requisito | Detalle |
|---|
| Roles permitidos | Admin, Supervisor |
| Estados válidos para rollback | completed, failed, cancelled |
| No se puede revertir | Jobs en processing, pending, o ya rolled_back |
| Timeout de transacción | 30 segundos |
| Concurrencia | Solo un rollback simultáneo por job |
Mensajes de Error
| Situación | Mensaje |
|---|
| Job en proceso | "El trabajo aún está en proceso. Debe completarse antes de revertirlo." |
| Ya revertido | "Este trabajo ya fue revertido" |
| Job no encontrado | "Trabajo no encontrado" |
| Sin permiso | "No autorizado para revertir este trabajo" |
| Error de BD | "Error al revertir trabajo" (retry posible) |
Acceso
| Propiedad | Valor |
|---|
| Ubicación | Historial de carga de pagos |
| Permiso API | api:import:pagos:rollback |
| Roles por defecto | Admin, Supervisor |
| Botón visible si | Rol ∈ [Admin, Supervisor] Y Estado ∈ [completed, failed] Y JobType = 'pagos' |