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>
7.6 KiB
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:
- Configuración por cliente: facturar por viaje, embarque u OT
- Selección de viajes cerrados (con POD) pendientes de facturar
- Facturación masiva de múltiples viajes en una sola factura
- Facturación individual (una factura por viaje)
- Agrupación automática por periodo (semanal, quincenal, mensual)
- 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 facturarPOST /api/v1/facturas- Crear facturaGET /api/v1/facturas/:id- Obtener facturaPUT /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:
- Fuel surcharge: aplicar % vigente sobre tarifa base
- Detention en carga: calcular si tiempo real > tolerancia
- Detention en descarga: calcular si tiempo real > tolerancia
- Reentrega: aplicar cargo si hubo reexpedición
- Cambio de destino: calcular diferencial de tarifa
- Mostrar desglose de cada recargo en la factura
- 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 recargosPUT /api/v1/facturas/:id/lineas/:lineaId- Ajustar líneaDELETE /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:
- Vincular factura con viajes y sus PODs
- Incluir URL de evidencias (fotos, firma) en factura
- Generar expediente digital con: factura PDF, XML, POD, carta porte
- Enviar expediente completo al cliente
- 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 expedienteGET /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:
- Mostrar comparativo: cotizado vs facturado
- Identificar diferencias (recargos no cotizados, descuentos aplicados)
- Registrar ajustes con justificación
- Generar notas de crédito/débito cuando aplique
- 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ónPOST /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:
- Estado de cuenta por cliente con periodo seleccionable
- Mostrar: facturas emitidas, notas, pagos recibidos, saldo
- Análisis de aging: corriente, 30 días, 60 días, 90 días, +90 días
- Alertas de facturas próximas a vencer
- Exportar a PDF y Excel
- 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 cuentaGET /api/v1/facturacion/aging- Reporte de agingPOST /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:
- Generar XML CFDI 4.0 con datos fiscales
- Incluir complemento Carta Porte (MAE-016)
- Enviar a PAC para timbrado
- Recibir y almacenar UUID, sello digital, cadena original
- Generar PDF representación impresa
- Manejar errores de validación SAT
- Proceso de cancelación con motivo
Mapeo a DDL:
- Tabla:
billing.facturas_transporte(uuidCfdi, xmlCfdi)
Endpoints Requeridos:
POST /api/v1/facturas/:id/timbrar- Timbrar CFDIPOST /api/v1/facturas/:id/cancelar- Cancelar CFDIGET /api/v1/facturas/:id/pdf- Obtener PDFGET /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:
- Registrar pago con: monto, fecha, referencia, método
- Soportar pagos parciales con saldo pendiente
- Marcar factura como PAGADA cuando saldo = 0
- Generar complemento de pago si aplica (PPD)
- 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 pagoGET /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