Nuevo modulo P0 critico especificado: - README.md: Vision general, alcance, actores, flujo - REQUERIMIENTOS.md: 4 RF (4.7.1-4.7.4), RNF, validaciones - RESUMEN-EPICA.md: Valor de negocio, criterios exito, 31 SP User Stories (5): - US-MAI007-001: Capturar firma digital (8 SP) - US-MAI007-002: Registrar tiempos reales (5 SP) - US-MAI007-003: Adjuntar fotos evidencia (5 SP) - US-MAI007-004: Validar POD antes de cierre (8 SP) - US-MAI007-005: Cerrar con excepcion (5 SP) Este modulo es bloqueante para: - MAI-009 (Facturacion) - MAI-010 (Liquidaciones) - MAE-016 (Carta Porte) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.8 KiB
US-MAI007-004: Validar POD antes de cierre
ID: US-MAI007-004 Modulo: MAI-007 (POD y Cierre) Prioridad: Alta Story Points: 8
Historia de Usuario
Como despachador Quiero que el sistema valide automaticamente que el POD este completo antes de cerrar Para asegurar que tenemos toda la documentacion necesaria para facturar
Criterios de Aceptacion
CA-001: Validacion de firma
Dado que intento cerrar un viaje Cuando el POD no tiene firma capturada Entonces el sistema bloquea el cierre y muestra "POD sin firma"
CA-002: Validacion de receptor
Dado que intento cerrar un viaje Cuando el POD no tiene nombre de receptor Entonces el sistema bloquea el cierre y muestra "Receptor no identificado"
CA-003: Validacion de tiempos
Dado que intento cerrar un viaje Cuando no se han registrado todos los tiempos requeridos Entonces el sistema muestra advertencia pero permite continuar
CA-004: Cierre exitoso
Dado que el POD cumple todas las validaciones Cuando confirmo el cierre Entonces el sistema:
- Cambia estado del viaje a CERRADO
- Congela costos del viaje
- Calcula rentabilidad preliminar
- Notifica a facturacion
CA-005: Resumen de cierre
Dado que cierro un viaje exitosamente Cuando se completa el proceso Entonces veo un resumen con: costos, ingresos estimados, margen
Mockup / UI
┌─────────────────────────────────────────┐
│ Cerrar Viaje #12345 │
├─────────────────────────────────────────┤
│ │
│ Validaciones: │
│ ✓ POD con firma │
│ ✓ Receptor identificado │
│ ✓ Tiempos registrados │
│ ⚠ Sin fotos adjuntas (opcional) │
│ │
│ ───────────────────────────────────── │
│ │
│ Resumen financiero: │
│ Ingresos: $15,000.00 │
│ Costos: $11,200.00 │
│ - Combustible $5,500.00 │
│ - Peajes $1,200.00 │
│ - Viaticos $800.00 │
│ - Otros $3,700.00 │
│ ───────────────────────────────────── │
│ Margen: $3,800.00 (25.3%) │
│ │
│ [Cancelar] [Confirmar Cierre ✓] │
│ │
└─────────────────────────────────────────┘
Reglas de Validacion
| Validacion | Tipo | Bloquea cierre |
|---|---|---|
| Firma presente | Requerido | Si |
| Nombre receptor | Requerido | Si |
| Tiempos completos | Recomendado | No |
| Fotos adjuntas | Opcional | No |
| GPS en geocerca | Recomendado | No |
Estados del Viaje
EN_TRANSITO → EN_DESTINO → ENTREGADO → CERRADO → FACTURADO
Notas Tecnicas
- Al cerrar se crea snapshot de costos en
cierres_viaje - Calculo de margen: (tarifa_cliente - sum(costos)) / tarifa_cliente
- Notificacion a facturacion via evento/webhook
- El cierre es irreversible sin rol de admin
Definicion de Done
- Validaciones automaticas implementadas
- Calculo de rentabilidad correcto
- Notificacion a facturacion
- Snapshot de costos inmutable
- UI de confirmacion clara
- Tests de integracion