v3.0 — CXP completo (caso general + CONTROL_COMBUSTIBLE) — cierre
Fecha: 2026-08-04
Query: docs/queries/gastos/v3_cxp_completo.sql
Script de comprobación: validar_cxp_v3_completo.py (.200/TRIVASADB3) /
validar_cxp_v3_semestre_207.py (.207, producción)
Qué resuelve
Consolida en un solo artefacto (UNION ALL de dos CTEs) la validación de CXP
que hasta ahora vivía separada:
- v2.2 (caso general, ya cerrado) — match exacto por documento
(
Cxp_Tabla = 'Gasto_Registro:'+Gr_Folio,Cxp_Documento = Grd_ID). - Caso
CONTROL_COMBUSTIBLE(docs/control_combustible_hallazgo.md) — match por texto libre agregado (Cxp_Referencia = Grd_Referencia,Pv_Cve_Proveedorigual,SUM()de ambos lados por la posibilidad de fan-out, ~13% de las referencias).
Cierra el pendiente que había quedado abierto en el roadmap: v2.2 estaba
validado al 100% pero sin .md de cierre, y no cubría CONTROL_COMBUSTIBLE
(excluido a propósito de esa query). Esta versión sí cubre el universo
completo de folios sujetos a CXP.
Por qué UNION ALL y no un JOIN condicional
Las dos ramas usan una llave de match y una granularidad de resultado
distintas: la general compara 1 documento contra 1 fila de CXP; la de
combustible compara N folios de una referencia consolidada contra la suma de
1+ filas de CXP. Forzar ambas lógicas en un solo JOIN con CASE en el ON
fue el enfoque que produjo el bug de fan-out original (ver
control_combustible_hallazgo.md) — separarlas en CTEs independientes,
unidas al final, evita repetir ese error y permite depurar cada rama por
separado.
Columna GRANULARIDAD_CXP
Para que ningún consumidor (programador externo, FlexMonster, dbt) sume mal
por accidente, la query expone explícitamente cómo interpretar
CXP_MONEDA_ORIGINAL en cada fila:
GRANULARIDAD_CXP | Significado | Regla de uso |
|---|---|---|
documento | Match exacto para ese Grd_ID | Usar tal cual |
referencia_consolidada | Total de TODA la referencia semanal, repetido en cada folio que la comparte | Nunca sumar por folio — tomar 1 vez por REFERENCIA |
Resultados
| Corrida | Servidor | Rango | Folios | Resueltos | % |
|---|---|---|---|---|---|
| Enero 2026 | .200 (TRIVASADB3) | 2026-01-01 a 2026-02-01 | 1,425 | 1,425 | 100.0% |
| Enero–junio 2026 | .207 (producción) | 2026-01-01 a 2026-07-01 | 9,162 | 9,160 | 99.9% |
Desglose por origen (semestre, .207):
| Origen | Granularidad | Folios | Resueltos | % |
|---|---|---|---|---|
| (vacío / GASTO_DIRECTO) | documento | 3,576 | 3,576 | 100.0% |
| COMPROBACION_GASTO | documento | 2 | 2 | 100.0% |
| CONTROL_COMBUSTIBLE | referencia_consolidada | 2,764 | 2,762 | 99.9% |
| GASTO_RECLASIFICACION | documento | 86 | 86 | 100.0% |
| ORDEN_COMPRA | documento | 709 | 709 | 100.0% |
| VIAJE | documento | 2,025 | 2,025 | 100.0% |
Los 2 folios sin resolver (semestre, .207)
0023-0008232 (Grd_Referencia='238', 2026-06-17) y 0023-0008227
(Grd_Referencia='E1258', 2026-06-23) — ambos CONTROL_COMBUSTIBLE, ambos
sin ninguna Cuenta_X_Pagar capturada todavía bajo su referencia+proveedor
al momento de la validación.
Nota al pie — rezago de borde de ventana: ambos folios caen en los últimos días del rango consultado (el semestre corta el 2026-07-01). Es esperable que la captura contable de la CXP consolidada tenga unos días/ semana de rezago frente al folio de gasto — no es evidencia de un hueco en el mecanismo, sino de folios cuya CXP aún no se ha capturado al momento de correr el reporte. Confirmar re-corriendo la validación más adelante.
Pendiente
- Nombre de archivo de salida (
v3_cxp_completo_enero2026.csv) quedó desactualizado tras la corrida de semestre — renombrar según rango/servidor antes de reutilizar el script. - No se ha expuesto
Monto Cobradocomo columna final del layout (sigue siendo solo validación) — pendiente del roadmap general.
Véase también
- Roadmap layout completo
- Hallazgo CONTROL_COMBUSTIBLE
docs/v2_1_cierre.md,docs/v1_0_cierre.md,docs/v02_cierre.md— cierres previos de las piezas que este documento consolida.