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

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