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_Proveedor igual, 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_CXPSignificadoRegla de uso
documentoMatch exacto para ese Grd_IDUsar tal cual
referencia_consolidadaTotal de TODA la referencia semanal, repetido en cada folio que la comparteNunca sumar por folio — tomar 1 vez por REFERENCIA

Resultados

CorridaServidorRangoFoliosResueltos%
Enero 2026.200 (TRIVASADB3)2026-01-01 a 2026-02-011,4251,425100.0%
Enero–junio 2026.207 (producción)2026-01-01 a 2026-07-019,1629,16099.9%

Desglose por origen (semestre, .207):

OrigenGranularidadFoliosResueltos%
(vacío / GASTO_DIRECTO)documento3,5763,576100.0%
COMPROBACION_GASTOdocumento22100.0%
CONTROL_COMBUSTIBLEreferencia_consolidada2,7642,76299.9%
GASTO_RECLASIFICACIONdocumento8686100.0%
ORDEN_COMPRAdocumento709709100.0%
VIAJEdocumento2,0252,025100.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 Cobrado como columna final del layout (sigue siendo solo validación) — pendiente del roadmap general.

Véase también