# US-MAI009-001: Generar factura desde viajes **ID:** US-MAI009-001 **Módulo:** MAI-009 (Facturación Transporte) **Prioridad:** Alta **Story Points:** 8 --- ## Historia de Usuario **Como** facturador **Quiero** generar facturas seleccionando los viajes cerrados de un cliente **Para** cobrar los servicios de transporte de manera rápida y precisa --- ## Criterios de Aceptación ### CA-001: Listar viajes pendientes de facturar **Dado** que hay viajes cerrados con POD **Cuando** filtro por cliente y periodo **Entonces** veo la lista de viajes sin facturar con sus montos ### CA-002: Selección múltiple de viajes **Dado** que veo la lista de viajes **Cuando** selecciono varios viajes **Entonces** puedo generar una factura que los agrupe ### CA-003: Factura individual por viaje **Dado** que el cliente requiere facturas separadas **Cuando** selecciono "Facturar individualmente" **Entonces** se genera una factura por cada viaje seleccionado ### CA-004: Generar borrador editable **Dado** que seleccioné los viajes **Cuando** genero la factura **Entonces** se crea un borrador con líneas automáticas que puedo editar ### CA-005: Líneas automáticas desde tarifa **Dado** que cada viaje tiene una tarifa aplicada **Cuando** se genera el borrador **Entonces** cada línea refleja el precio del viaje según su tarifa ### CA-006: Vincular con POD y evidencias **Dado** que la factura incluye viajes **Cuando** consulto el expediente **Entonces** puedo ver/descargar los POD de cada viaje incluido --- ## Mockup / UI ``` ┌─────────────────────────────────────────────────────────────────┐ │ FACTURACIÓN - SELECCIONAR VIAJES [+ Nueva]│ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Cliente: [Distribuidora ABC ▼] │ │ Periodo: [01-ene-2026] al [31-ene-2026] [Buscar] │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ VIAJES PENDIENTES DE FACTURAR │ │ │ │ [☑ Seleccionar todos] │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ ☑ VJE-0120 | 05-ene-2026 │ │ │ │ CDMX → Guadalajara | Caja seca 53' │ │ │ │ Tarifa: $12,500.00 | POD: ✓ 05-ene-2026 14:30 │ │ │ ├─────────────────────────────────────────────────────────┤ │ │ │ ☑ VJE-0125 | 08-ene-2026 │ │ │ │ CDMX → Monterrey | Caja seca 53' │ │ │ │ Tarifa: $18,200.00 | POD: ✓ 08-ene-2026 16:45 │ │ │ │ ⚠ Detention: 3 hrs extra en descarga │ │ │ ├─────────────────────────────────────────────────────────┤ │ │ │ ☑ VJE-0128 | 12-ene-2026 │ │ │ │ CDMX → Guadalajara | Caja seca 53' │ │ │ │ Tarifa: $12,500.00 | POD: ✓ 12-ene-2026 11:20 │ │ │ ├─────────────────────────────────────────────────────────┤ │ │ │ ☐ VJE-0130 | 14-ene-2026 │ │ │ │ Guadalajara → Tijuana | Caja seca 53' │ │ │ │ Tarifa: $25,000.00 | POD: ⏳ PENDIENTE │ │ │ │ (No disponible - sin POD) │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ RESUMEN DE SELECCIÓN │ │ Viajes seleccionados: 3 │ │ Subtotal tarifas: $43,200.00 │ │ + Recargos estimados: $4,506.00 (fuel + detention) │ │ Total estimado: $47,706.00 + IVA │ │ │ │ Tipo de facturación: │ │ (●) Una factura con todos los viajes │ │ ( ) Una factura por cada viaje │ │ │ │ [Cancelar] [Generar Borrador] │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Borrador de Factura ``` ┌─────────────────────────────────────────────────────────────────┐ │ FACTURA BORRADOR ✕ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Estado: BORRADOR │ │ │ │ DATOS DEL CLIENTE │ │ Cliente: Distribuidora ABC S.A. de C.V. │ │ RFC: DAB850101XXX │ │ Uso CFDI: [G03 - Gastos en general ▼] │ │ Método pago: [PUE - Pago en una exhibición▼] │ │ Forma pago: [03 - Transferencia ▼] │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ CONCEPTOS [+ Agregar]│ │ │ │ | # | Descripción | Cant | P.U. | Importe |│ │ |---|--------------------------|------|-----------|----------|│ │ | 1 | Transporte CDMX→GDL | 1 | $12,500.00| $12,500 |│ │ | | VJE-0120 | | | [🗑] |│ │ |---|--------------------------|------|-----------|----------|│ │ | 2 | Transporte CDMX→MTY | 1 | $18,200.00| $18,200 |│ │ | | VJE-0125 | | | [🗑] |│ │ |---|--------------------------|------|-----------|----------|│ │ | 3 | Transporte CDMX→GDL | 1 | $12,500.00| $12,500 |│ │ | | VJE-0128 | | | [🗑] |│ │ |---|--------------------------|------|-----------|----------|│ │ │ │ Subtotal: $43,200.00 │ │ │ │ [Calcular Recargos] │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ Observaciones: │ │ [Servicios de transporte enero 2026 ]│ │ │ │ [Guardar borrador] [Vista previa] [Continuar →] │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Estados de Factura | Estado | Descripción | Acciones permitidas | |--------|-------------|---------------------| | BORRADOR | En edición | Editar, eliminar, agregar líneas | | EMITIDA | Timbrada CFDI | Ver, descargar, enviar, cancelar | | ENVIADA | Enviada al cliente | Ver, registrar pago | | PAGADA | Saldo = 0 | Ver | | PARCIAL | Pago parcial | Registrar pago | | VENCIDA | Pasó fecha vencimiento | Registrar pago, enviar recordatorio | | CANCELADA | Cancelada SAT | Ver | --- ## Notas Técnicas - Endpoint: `POST /api/v1/facturas` para crear borrador - Los viajes se vinculan via `viajeIds[]` - Las líneas se generan con clave SAT: 78101500 (Transporte de carga) - El expediente se genera bajo demanda con todos los PDFs --- ## Definición de Done - [ ] Listado de viajes pendientes de facturar - [ ] Filtro por cliente y periodo - [ ] Selección múltiple de viajes - [ ] Generación de borrador con líneas automáticas - [ ] Facturación individual o agrupada - [ ] Vinculación con POD - [ ] Tests de generación de factura