Skip to content

feat(finanzas/balanza): endpoint de balanza de comprobación desde el datalake

Rafael Bautista requested to merge ti into qa

Lee serving_fin.balanza_comprobacion (ERP Sinube, poblada por DAG) y expone GET /api/finanzas/balanza/detalle: un corte completo, ya cruzado al catálogo de empresas del grupo.

Tres decisiones que conviene no re-litigar:

  • El cruce es por RFC, no por nombre. Es más fuerte que el build_canon_index() que usan Saldos y Antigüedad: cruza 38 de 38 empresas y ningún RFC del catálogo es ambiguo. Se conserva el índice por nombre como respaldo si el ERP llegara a dar de alta una razón social sin RFC.
  • Las empresas viajan normalizadas en empresas[] y cada fila referencia su emp. No es por tamaño —GZipMiddleware deja el MB en 72 KB—: es para que el resultado del cruce exista una sola vez por empresa y dos renglones no puedan declarar portafolios distintos.
  • Un corte por llamada. Los dos cortes del periodo son extracciones alternativas, no meses: sumarlos duplicaría la balanza.

meta reporta lo que la vista necesita declarar en pantalla: el cuadre de sumas iguales, cuántos renglones traen movimiento (36 de 3,833 en el periodo vigente, y en todos los cargos igualan a los abonos) y cuántas subcuentas no traen su renglón padre.

Se siembra la sub-área balanza —sin ella el sidebar la esconde a todo el que no sea admin— y el umbral balanza_descuadre_tolerancia, porque el número que separa el redondeo del ERP de un descuadre real es criterio del área, no una constante del código.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01Jbr414bBvG1H44gwZrCnuZ

Merge request reports

Loading