v2.1 — UUID de CFDI por folio
Primera pieza del layout completo (ver docs/v1_0_cierre.md para el roadmap de
columnas pendientes: pago, proveedor, CFDI, XML). Esta cierra la columna UUID.
Query
docs/queries/gastos/v_uuid_detalle_por_folio.sql — 1 fila por (folio, UUID),
sin agregar (SQL Server de esta instancia no soporta STRING_AGG, versión
anterior a 2017). La agregación a lista/conteo por folio se hace en Python.
Regla final
- Nivel folio (
Gasto_Registro), nuncaGrd_ID/documento — replica la lógica exacta deRPAG008_99.asp(MPRO tampoco resuelve la ambigüedad a nivel documento, delega al usuario mostrando “Varios”). - Join con
LIKE gr.Gr_Folio + '%', noLEFT(Cd_Documento, LEN(Gr_Folio)) = Gr_Folio— la versión conLEFT()no es sargable, escanea las 671k filas deComprobante_Digitalcompletas por cada folio (~9,000 folios × 671k filas). ConLIKEy comodín al final, SQL Server sí usa el índice (~7s contra el semestre completo, vs. varios minutos conLEFT()). - Deduplicar siempre por
Cd_Timbre_UUIDdistinto, nunca por conteo de filas deComprobante_Digital.Comprobante_Digitalpuede traer 2+ filas físicas para el mismo comprobante (registro de encabezado vs. detalle,Cd_Documentode 10 vs. 14 caracteres — visto enRPAG008_99.asp). Contar filas crudas genera falsos “Varios”: en la primera pasada, 501 de 614 folios marcados como “2+” eran el mismo UUID duplicado, no facturas distintas. - Cuando de verdad hay 2+ UUIDs distintos, se listan todos (no se muestra “Varios” como texto, a diferencia de MPRO) — con la deduplicación, esos casos son folios de lote con múltiples facturas reales, vale la pena verlas todas.
Resultado (enero-junio 2026, 9,162 folios)
| Categoría | Folios | % |
|---|---|---|
| 1 comprobante | 8,424 | 91.9% |
| 0 (sin XML) | 625 | 6.8% |
| 2+ (Varios real) | 113 | 1.2% |
El “sin XML” no es un hueco de datos — es esperado por diseño de negocio:
GASTO_RECLASIFICACION (0/86, 100%) y folios de reversión (Importe<=-$1,
32/35, 91%) son movimientos contables internos sin CFDI asociado.
Pendiente / no explorado en esta pieza
- Los 113 folios “Varios real” no se inspeccionaron uno por uno — se asume que son lotes legítimos (similar al patrón de “costeo estándar” ya visto en v1.0), pero no se confirmó con drill-down individual.
- Mecanismo alterno visto en
RPAG008_99.aspparaCd_Documentode ≤10 caracteres: busca en tablaAdjunto(noComprobante_Digital) — no explorado, puede ser una fuente adicional de UUID/adjuntos no capturada todavía.
Véase también
docs/v1_0_cierre.md— roadmap completo del layout extendido.- Exploración anterior (
consulta_xmls_gastos): confirma los mismos dos caminos de UUID (Pago_Cxp_Comprobante.Pcc_Timbre_UUIDpara gastos vía pago,Comprobante_Digital.Cd_Timbre_UUIDpara compras) — este cierre usa únicamente el segundo camino, anclado enGasto_Registrodirecto.