# US-MAI009-003: Timbrar CFDI con Carta Porte **ID:** US-MAI009-003 **Módulo:** MAI-009 (Facturación Transporte) **Prioridad:** Alta **Story Points:** 8 --- ## Historia de Usuario **Como** facturador **Quiero** timbrar la factura como CFDI 4.0 con complemento Carta Porte **Para** cumplir con las obligaciones fiscales y entregar documentos válidos al cliente --- ## Criterios de Aceptación ### CA-001: Validar datos antes de timbrar **Dado** que tengo un borrador de factura **Cuando** intento timbrar **Entonces** el sistema valida: datos fiscales del cliente, líneas correctas, Carta Porte completa ### CA-002: Generar XML CFDI 4.0 **Dado** que los datos son válidos **Cuando** proceso el timbrado **Entonces** se genera el XML con estructura CFDI 4.0 ### CA-003: Incluir complemento Carta Porte 3.1 **Dado** que los viajes tienen datos de Carta Porte **Cuando** se genera el XML **Entonces** incluye el complemento con: ubicaciones, mercancías, autotransporte ### CA-004: Enviar a PAC y recibir respuesta **Dado** que el XML está listo **Cuando** se envía al PAC **Entonces** se recibe: UUID, sello, cadena original, o errores de validación ### CA-005: Manejar errores de validación **Dado** que el PAC retorna error **Cuando** veo el resultado **Entonces** se muestran los errores específicos para corregir ### CA-006: Generar PDF representación impresa **Dado** que el CFDI fue timbrado **Cuando** descargo el PDF **Entonces** incluye: datos fiscales, QR, cadena, sello, complemento CP --- ## Mockup / UI ``` ┌─────────────────────────────────────────────────────────────────┐ │ TIMBRAR CFDI ✕ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Factura: BORRADOR | Total: $55,338.96 MXN │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ VALIDACIÓN PREVIA │ │ │ │ DATOS FISCALES │ │ ✓ RFC emisor válido: TRA850101XXX │ │ ✓ RFC receptor válido: DAB850101XXX │ │ ✓ Régimen fiscal configurado │ │ ✓ Uso CFDI seleccionado: G03 │ │ │ │ FACTURA │ │ ✓ Al menos una línea de concepto │ │ ✓ Totales calculados correctamente │ │ ✓ Forma y método de pago seleccionados │ │ │ │ CARTA PORTE (3 viajes) │ │ ✓ VJE-0120: Ubicaciones y mercancías completas │ │ ✓ VJE-0125: Ubicaciones y mercancías completas │ │ ✓ VJE-0128: Ubicaciones y mercancías completas │ │ ✓ Datos de autotransporte completos │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ ✅ VALIDACIÓN EXITOSA - Listo para timbrar │ │ │ │ PAC: Finkok (Primario) │ │ Ambiente: [Producción ▼] │ │ │ │ [Cancelar] [🔐 Timbrar CFDI] │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Resultado Exitoso ``` ┌─────────────────────────────────────────────────────────────────┐ │ ✅ CFDI TIMBRADO EXITOSAMENTE ✕ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ DATOS DEL TIMBRE │ │ │ │ Serie: A │ │ Folio: 00456 │ │ UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 │ │ │ │ Fecha timbrado: 2026-01-27 14:32:15 │ │ PAC: Finkok │ │ Certificado SAT: 00001000000506258000 │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ ARCHIVOS GENERADOS │ │ │ │ 📄 A-00456.pdf (Representación impresa) [Descargar] │ │ 📄 A-00456.xml (CFDI timbrado) [Descargar] │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ COMPLEMENTO CARTA PORTE │ │ │ │ IdCCP: CCC000001234567890 │ │ Versión: 3.1 │ │ 3 ubicaciones | 5 mercancías | 1 figura transporte │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ SIGUIENTE PASO │ │ │ │ [Enviar al cliente] [Ver factura] [Nueva factura] │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Error de Validación ``` ┌─────────────────────────────────────────────────────────────────┐ │ ❌ ERROR AL TIMBRAR ✕ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ El PAC rechazó el CFDI. Corrija los siguientes errores: │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ ERRORES SAT │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ ❌ CCE205 - El RFC del receptor no está en la lista LCO│ │ │ │ RFC: DAB850101XXX │ │ │ │ Acción: Verificar RFC correcto del cliente │ │ │ ├─────────────────────────────────────────────────────────┤ │ │ │ ❌ CCP155 - La clave del producto no es válida │ │ │ │ Línea 2: Clave "99999999" no existe en catálogo │ │ │ │ Acción: Corregir clave de producto SAT │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ Código respuesta PAC: 307 │ │ Mensaje: Documento no válido según esquema XSD │ │ │ │ [Volver a editar] [Reintentar timbrado] │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Proceso de Cancelación ``` ┌─────────────────────────────────────────────────────────────────┐ │ CANCELAR CFDI ✕ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Factura: A-00456 │ │ UUID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 │ │ Total: $55,338.96 MXN │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ ⚠ ADVERTENCIA │ │ La cancelación de un CFDI tiene implicaciones fiscales. │ │ Una vez cancelada, no se puede revertir. │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ Motivo de cancelación: │ │ [01 - Comprobante emitido con errores con relación▼] │ │ ○ 01 - Con errores con relación │ │ ○ 02 - Con errores sin relación │ │ ○ 03 - No se llevó a cabo la operación │ │ ○ 04 - Operación nominativa relacionada │ │ │ │ UUID que sustituye (si aplica): │ │ [________________________________] │ │ │ │ Justificación interna: │ │ [Error en datos del cliente, se reexpide corregida ] │ │ │ │ [Cancelar operación] [⚠ Cancelar CFDI] │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Notas Técnicas - Integración con PAC Finkok (primario) y SW Sapien (respaldo) - XML se genera según esquema SAT CFDI 4.0 - Complemento Carta Porte 3.1 se obtiene de MAE-016 - UUID y XML se almacenan en `billing.facturas_transporte` - PDF se genera con template HTML + puppeteer - Failover automático si PAC primario falla --- ## Definición de Done - [ ] Validación previa de datos fiscales - [ ] Generación de XML CFDI 4.0 - [ ] Inclusión de complemento Carta Porte 3.1 - [ ] Integración con PAC (timbrado) - [ ] Manejo de errores de validación SAT - [ ] Generación de PDF representación - [ ] Proceso de cancelación con motivo - [ ] Failover a PAC secundario - [ ] Tests de timbrado y cancelación