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>
120 lines
3.8 KiB
Markdown
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
|