erp-transportistas-v2/docs/02-definicion-modulos/MAI-007-pod-cierre/historias-usuario/US-MAI007-004.md
Adrian Flores Cortes 7f45eb6383 docs(modulos): MAI-007 POD y Cierre - Especificacion completa
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>
2026-01-27 01:33:03 -06:00

120 lines
3.8 KiB
Markdown

# 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