Skip to content

PROGRESS — conciliacion-cfdi

Estado vivo. El código y el detalle día a día viven en el repo separado github.com/ehalso/conciliacion-cfdi (rama conciliar-retencion al 2026-09-10) — su propio PROGRESS.md/docs/pendientes.md/ docs/hallazgos.md son la fuente de verdad completa. Esto es un resumen para quien navegue trivasa-context sin tener ese repo a la mano.

2026-09-10

  • Recibidos: 99.36% en H1 2026 (9,511/9,572), sin cambios de método esta sesión — se centró en retención y en una mejora de rendimiento.
  • Retención: nivel 1 corrido para los 6 meses de H1 2026. Hallazgo principal: dos conceptos de retención (cve_retenc 14 = arrendamiento/ honorarios 10%, vs. 16 = intereses a prestamista 20%) con mecánica de conciliación completamente distinta — el segundo nunca usa CONSTANCIA_RETENCION. De los CFDI "huérfanos" (sin link en Comprobante_Digital), se confirmaron dos mecanismos reales y distintos: omisión pura de etiquetado (un lote de 15 CFDI de febrero) y CFDI sustituido sin re-ligar (CfdiRetenRelacionados, un caso de enero). Detalle completo en docs/schema/calidad-de-datos.md de este repo.
  • Mejora de rendimiento (colaborativa con esta sesión de ctunlinux): se agregaron 5 columnas a raw_sat.cfdi_recibidos/cfdi_emitidos (descuento, ieps_trasladado, impuestos_locales_trasladados, impuestos_locales_retenidos, total_impuestos_retenidos), pobladas por el loader de raw_sat_xml con la misma lógica que ya usaba conciliacion-cfdi/src/cfdi_parser.py. El pipeline de conciliación ya no necesita volver a bajar y parsear el XML de mpro en cada corrida — validado exacto contra los 6 meses de H1 (mismo resultado de siempre). cfdi_recibidos quedó backfillado enero-septiembre 2026; cfdi_emitidos solo enero 2026.
  • Confirmado con Esteban: los pendientes de nómina IMSS/INFONAVIT (la familia de mayor monto, ~85% del residual) no se filtran del universo ni reciben una vía de cuadre especial — son errores de captura reales, y deben pasar por la misma Regla 1 que cualquier otro CFDI.

Siguiente paso más obvio

  1. Nivel 3 de retención: trazar hasta Poliza_Control para el cargo/abono contable real de lo que ya concilia en nivel 1.
  2. Fallback de matcheo por RFC+proveedor+mes+monto contra Gasto_Registro_Documento para recuperar los CFDI de retención huérfanos por omisión de etiquetado (mecanismo 1), y seguir la cadena CfdiRetenRelacionados para los huérfanos por sustitución (mecanismo 2).
  3. Emitidos: completar el backfill de raw_sat.cfdi_emitidos más allá de enero 2026 para poder correr el mismo nivel de conciliación que recibidos en todo H1.