erp-transportistas-v2/docs/02-definicion-modulos/MAI-009-facturacion-transporte/REQUERIMIENTOS.md
Adrian Flores Cortes 569eaeb5a4 docs: Add MAI-009 (Facturación) and MAI-010 (Liquidaciones) specifications
MAI-009 Facturación Transporte (31 SP):
- README, REQUERIMIENTOS (7 RF), RESUMEN-EPICA
- 5 User Stories: generación factura, recargos, CFDI/Carta Porte,
  conciliación/pagos, estados de cuenta

MAI-010 Liquidaciones (31 SP):
- README, REQUERIMIENTOS (6 RF), RESUMEN-EPICA
- 5 User Stories: esquemas pago, cálculo por viaje, viáticos,
  deducciones, generar/autorizar liquidación

Part of Phase 2 - P0 Critical Modules specification

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 02:05:03 -06:00

235 lines
7.6 KiB
Markdown

# REQUERIMIENTOS.md - MAI-009: Facturación de Transporte
**Version:** 1.0.0
**Fecha:** 2026-01-27
**Fuente:** REQ-GIRO-TRANSPORTISTA.md - Sección 4.8
---
## Requerimientos Funcionales
### RF-4.8.1: Factura por Viaje/Embarque/OT
**Descripción:**
El sistema debe permitir configurar si la facturación se realiza por viaje individual, por embarque (grupo de OTs), o por OT específica.
**Criterios de Aceptación:**
1. Configuración por cliente: facturar por viaje, embarque u OT
2. Selección de viajes cerrados (con POD) pendientes de facturar
3. Facturación masiva de múltiples viajes en una sola factura
4. Facturación individual (una factura por viaje)
5. Agrupación automática por periodo (semanal, quincenal, mensual)
6. Generación de borrador editable antes de timbrar
**Mapeo a DDL:**
- Tabla: `billing.facturas_transporte`
- Tabla: `billing.lineas_factura`
- Vista: `v_viajes_por_facturar`
**Endpoints Requeridos:**
- `GET /api/v1/facturacion/viajes-pendientes` - Listar viajes a facturar
- `POST /api/v1/facturas` - Crear factura
- `GET /api/v1/facturas/:id` - Obtener factura
- `PUT /api/v1/facturas/:id` - Actualizar borrador
**Prioridad:** Alta
---
### RF-4.8.2: Cálculo Automático de Recargos
**Descripción:**
El sistema debe calcular y aplicar automáticamente los recargos correspondientes: fuel surcharge, demoras (detention) por tiempos reales, reentregas, cambios de destino.
**Criterios de Aceptación:**
1. Fuel surcharge: aplicar % vigente sobre tarifa base
2. Detention en carga: calcular si tiempo real > tolerancia
3. Detention en descarga: calcular si tiempo real > tolerancia
4. Reentrega: aplicar cargo si hubo reexpedición
5. Cambio de destino: calcular diferencial de tarifa
6. Mostrar desglose de cada recargo en la factura
7. Permitir ajustar o eliminar recargos con justificación
**Mapeo a DDL:**
- Tabla: `billing.recargos_catalogo`
- Tabla: `billing.fuel_surcharge`
- Tabla: `billing.lineas_factura` (con recargoId)
**Endpoints Requeridos:**
- `POST /api/v1/facturas/:id/calcular-recargos` - Calcular recargos
- `PUT /api/v1/facturas/:id/lineas/:lineaId` - Ajustar línea
- `DELETE /api/v1/facturas/:id/lineas/:lineaId` - Eliminar línea
**Prioridad:** Alta
---
### RF-4.8.3: Integración con POD
**Descripción:**
El sistema debe anexar el POD y evidencias de entrega a la factura/expediente digital para soporte de cobranza.
**Criterios de Aceptación:**
1. Vincular factura con viajes y sus PODs
2. Incluir URL de evidencias (fotos, firma) en factura
3. Generar expediente digital con: factura PDF, XML, POD, carta porte
4. Enviar expediente completo al cliente
5. POD disponible para descarga desde portal cliente
**Mapeo a DDL:**
- Tabla: `billing.facturas_transporte` (viajeIds, otIds)
- Relación con: `tracking.pods`
**Endpoints Requeridos:**
- `GET /api/v1/facturas/:id/expediente` - Obtener expediente
- `GET /api/v1/facturas/:id/expediente/zip` - Descargar ZIP
**Prioridad:** Alta
---
### RF-4.8.4: Conciliación
**Descripción:**
El sistema debe permitir comparar: cotización original vs factura emitida vs monto cobrado, para identificar diferencias y ajustes.
**Criterios de Aceptación:**
1. Mostrar comparativo: cotizado vs facturado
2. Identificar diferencias (recargos no cotizados, descuentos aplicados)
3. Registrar ajustes con justificación
4. Generar notas de crédito/débito cuando aplique
5. Dashboard de conciliación por periodo
**Mapeo a DDL:**
- Vista: `v_conciliacion_facturas`
- Tabla: `billing.notas_credito_debito`
**Endpoints Requeridos:**
- `GET /api/v1/facturacion/conciliacion` - Reporte de conciliación
- `POST /api/v1/notas` - Crear nota de crédito/débito
**Prioridad:** Media
---
### RF-4.8.5: Estados de Cuenta por Cliente
**Descripción:**
El sistema debe generar estados de cuenta con: viajes, cargos, abonos, notas, y análisis de antigüedad de saldos (aging).
**Criterios de Aceptación:**
1. Estado de cuenta por cliente con periodo seleccionable
2. Mostrar: facturas emitidas, notas, pagos recibidos, saldo
3. Análisis de aging: corriente, 30 días, 60 días, 90 días, +90 días
4. Alertas de facturas próximas a vencer
5. Exportar a PDF y Excel
6. Envío automático periódico al cliente
**Mapeo a DDL:**
- Vista: `v_estado_cuenta_cliente`
- Vista: `v_aging_cartera`
**Endpoints Requeridos:**
- `GET /api/v1/clientes/:id/estado-cuenta` - Estado de cuenta
- `GET /api/v1/facturacion/aging` - Reporte de aging
- `POST /api/v1/clientes/:id/estado-cuenta/enviar` - Enviar por email
**Prioridad:** Media
---
### RF-4.8.6: Timbrado CFDI
**Descripción:**
El sistema debe generar el CFDI 4.0 con complemento Carta Porte 3.1 y timbrarlo mediante PAC autorizado.
**Criterios de Aceptación:**
1. Generar XML CFDI 4.0 con datos fiscales
2. Incluir complemento Carta Porte (MAE-016)
3. Enviar a PAC para timbrado
4. Recibir y almacenar UUID, sello digital, cadena original
5. Generar PDF representación impresa
6. Manejar errores de validación SAT
7. Proceso de cancelación con motivo
**Mapeo a DDL:**
- Tabla: `billing.facturas_transporte` (uuidCfdi, xmlCfdi)
**Endpoints Requeridos:**
- `POST /api/v1/facturas/:id/timbrar` - Timbrar CFDI
- `POST /api/v1/facturas/:id/cancelar` - Cancelar CFDI
- `GET /api/v1/facturas/:id/pdf` - Obtener PDF
- `GET /api/v1/facturas/:id/xml` - Obtener XML
**Prioridad:** Alta
---
### RF-4.8.7: Registro de Pagos
**Descripción:**
El sistema debe permitir registrar pagos parciales o totales y actualizar el estado de la factura.
**Criterios de Aceptación:**
1. Registrar pago con: monto, fecha, referencia, método
2. Soportar pagos parciales con saldo pendiente
3. Marcar factura como PAGADA cuando saldo = 0
4. Generar complemento de pago si aplica (PPD)
5. Conciliar con movimientos bancarios (opcional)
**Mapeo a DDL:**
- Tabla: `billing.pagos_factura`
- Tabla: `billing.facturas_transporte` (montoPagado, fechaPago)
**Endpoints Requeridos:**
- `POST /api/v1/facturas/:id/pagos` - Registrar pago
- `GET /api/v1/facturas/:id/pagos` - Historial de pagos
**Prioridad:** Alta
---
## Requerimientos No Funcionales
### RNF-001: Integración PAC
El sistema debe soportar al menos 2 PACs con failover automático.
### RNF-002: Performance
La generación de factura (sin timbrado) debe completarse en <5 segundos.
### RNF-003: Retención
Los CFDIs deben almacenarse por al menos 5 años según normativa SAT.
### RNF-004: Disponibilidad
El proceso de timbrado debe tener 99.5% de disponibilidad.
---
## Validaciones de Negocio
| Validación | Descripción | Acción si falla |
|------------|-------------|-----------------|
| FAC_001 | Viaje con POD válido | Bloquear facturación |
| FAC_002 | Datos fiscales cliente completos | Alertar, bloquear timbrado |
| FAC_003 | Carta Porte completa si aplica | Bloquear timbrado |
| FAC_004 | Tarifa vigente aplicada | Alertar si tarifa vencida |
| FAC_005 | Fuel surcharge actualizado | Alertar si >30 días |
---
## Matriz de Trazabilidad
| RF | Tabla DDL | Entity | Endpoint | US |
|----|-----------|--------|----------|---|
| RF-4.8.1 | facturas_transporte | FacturaTransporte | /facturas | US-MAI009-001 |
| RF-4.8.2 | lineas_factura | LineaFactura | /facturas/:id/lineas | US-MAI009-002 |
| RF-4.8.3 | facturas_transporte | FacturaTransporte | /facturas/:id/expediente | US-MAI009-001 |
| RF-4.8.4 | v_conciliacion | - | /facturacion/conciliacion | US-MAI009-004 |
| RF-4.8.5 | v_estado_cuenta | - | /clientes/:id/estado-cuenta | US-MAI009-005 |
| RF-4.8.6 | facturas_transporte | FacturaTransporte | /facturas/:id/timbrar | US-MAI009-003 |
| RF-4.8.7 | pagos_factura | PagoFactura | /facturas/:id/pagos | US-MAI009-004 |
---
*MAI-009 REQUERIMIENTOS - ERP Transportistas - Sistema SIMCO v4.0.0*