1.1 🗂️ Árbol completo de archivos

Vista jerárquica de los 63 archivos productivos. Tamaños tomados del filesystem real (Mayo 2026).

public_html/reportes/
│
├── 📄 index.php                     30.8 KB · Landing portal · 4 stats globales + 3 cards
├── 📄 DOCUMENTACION.md              22.3 KB · Doc principal · versiones + arquitectura
├── 📄 u120688891_chess.sql         765 MB   · ⚠️ Dump completo de la BD (NO debe estar acá)
│
├── 📂 analisis/                              · ★ Este análisis técnico (v1.0.0)
│   └── v1.0.0/
│       ├── index.html                        · Landing del análisis
│       ├── secciones/                        · 14 secciones HTML
│       ├── diagramas/                        · Diagramas ASCII y SVG
│       └── assets/{css,js}/                  · Estilos compartidos
│
├── 📂 venta/                                 · 💰 Módulo Ventas
│   ├── .htaccess                     1.7 KB · Reglas Apache (deny txt, sql, bak)
│   ├── DOCUMENTACION.md             48.0 KB · Doc detallado de venta (1232 líneas)
│   ├── index.php                    29.9 KB · Listado de períodos sincronizados
│   ├── dashboard.php               147.4 KB · ★ Dashboard principal (3200+ líneas)
│   ├── monitor.php                  16.2 KB · Monitor en vivo del estado de imports
│   ├── reinit_import.php            38.2 KB · UI de importación masiva
│   ├── sync_api.php                 12.7 KB · UI sync de 1 mes
│   ├── sync_api_process.php         17.4 KB · Backend AJAX lote×lote
│   ├── _debug_samarelli.php          7.0 KB · ⚠️ Debug ad-hoc (debe removerse)
│   │
│   ├── config/
│   │   └── database.php              1.4 KB · Constantes DB + API ChessERP + SITE_VERSION
│   ├── includes/
│   │   ├── chess_api_client.php      4.6 KB · Cliente HTTP a ChessERP (login + getVentas)
│   │   ├── data_api.php             50.4 KB · ★ Núcleo: 20+ funciones de queries
│   │   ├── db_reportes.php           1.0 KB · PDO singleton + bootstrap articulos_raw
│   │   └── functions.php             7.1 KB · formatMoney, formatPercent, formatTons, …
│   ├── api/
│   │   └── filter.php               14.4 KB · Endpoint drill-down (supervisor/dep/prov/vend)
│   ├── assets/
│   │   ├── css/style.css            69.6 KB · Estilos del módulo
│   │   └── js/app.js                42.0 KB · Helpers UI (fmtMoney, openTab, fullscreen)
│   └── sql/
│       └── schema_reportes.sql       9.1 KB · DDL de la tabla ventas (~160 cols)
│
├── 📂 caja/                                  · 🏦 Módulo Caja y Bancos (hub + 3 submódulos)
│   ├── DOCUMENTACION.md             16.0 KB · Doc del hub
│   ├── REFERENCIA_EXCEL.md           8.1 KB · Mapa exacto de columnas de cada Excel
│   ├── TROUBLESHOOTING.md            9.2 KB · Guía de re-sync y diagnóstico
│   ├── version.php                   2.3 KB · CAJA_VERSION + changelog inline
│   │
│   ├── index.php                    11.2 KB · Hub con cards a submódulos
│   ├── sync.php                     36.7 KB · UI carga individual (1 mes, 6 Excel)
│   ├── sync_bulk.php                56.6 KB · ★ UI importación masiva multi-mes
│   ├── reset_db.php                 20.2 KB · Panel admin (eliminar/limpiar/drop)
│   ├── dashboard.jsx                21.8 KB · ⚠️ Legado React (debe eliminarse)
│   │
│   ├── _partials/
│   │   └── header.php                5.9 KB · Header sticky compartido con sub-tabs
│   ├── config/
│   │   └── database.php              260 B  · Constantes DB
│   ├── assets/css/style.css         66.4 KB · CSS compartido del módulo
│   │
│   ├── api/                                  · APIs comunes del módulo padre
│   │   ├── _schema.php              21.5 KB · ★ Schema centralizado (10 tablas)
│   │   ├── init.php                  2.1 KB · Crea schema + inicializa sync
│   │   ├── save.php                  3.3 KB · INSERT caja_gastos por lote
│   │   ├── save_raw.php             12.6 KB · INSERT caja_raw_* por lote
│   │   └── get_conceptos.php         2.0 KB · Lee catálogo persistido
│   │
│   ├── 📂 gastos/                            · 💸 Submódulo Gastos
│   │   ├── DOCUMENTACION.md         26.2 KB
│   │   ├── index.php                28.8 KB · Dashboard (Tabulator árbol RUBRO ▸ CONCEPTO)
│   │   └── api/data.php              3.1 KB · Endpoint agregados por año/mes/prov
│   │
│   ├── 📂 tesoreria/                         · 🏦 Submódulo Tesorería (5 pestañas)
│   │   ├── DOCUMENTACION.md          9.8 KB
│   │   ├── index.php                53.8 KB · Dashboard con 5 pestañas
│   │   └── api/
│   │       ├── flujo.php             6.8 KB · Ingresos vs Egresos
│   │       ├── cobros.php            4.6 KB · Formas de pago, contado vs Cta Cte
│   │       ├── origen.php            4.0 KB · Origen de cobros + estado pago
│   │       ├── cajas.php             4.0 KB · Cheques cartera + saldo diario
│   │       └── alertas.php           5.9 KB · Anticipos, runway, anulados, dif. cotiz.
│   │
│   └── 📂 finanzas/                          · 📊 Submódulo Finanzas (3 pestañas)
│       ├── DOCUMENTACION.md          8.1 KB
│       ├── index.php                37.1 KB · Dashboard con 3 pestañas
│       └── api/
│           ├── iva.php               5.5 KB · IVA crédito/débito + saldo técnico
│           ├── percepciones.php      4.2 KB · IIBB/RG3337/RG5329/Municipal
│           ├── centros_costo.php     3.2 KB · Distribución por centro
│           ├── proveedores.php       4.3 KB · Top 30 + concentración + plazo
│           └── cruce_ventas.php      7.0 KB · Margen limpio + $/tonelada
│
├── 📂 cashflow/                              · 💸 Módulo Cashflow
│   ├── DOCUMENTACION.md             18.7 KB
│   ├── version.php                   1.0 KB · CASHFLOW_VERSION = 1.1.0
│   ├── index.php                    51.2 KB · ★ Dashboard (5 KPIs + 2 agings + calendar)
│   ├── sync.php                     14.7 KB · UI upload unificada (?tipo=cliente|proveedor|cheque)
│   ├── reset_db.php                 19.4 KB · Panel admin propio
│   ├── config/database.php           378 B  · Constantes DB
│   └── api/
│       ├── _schema.php               5.6 KB · 4 tablas
│       ├── init.php                  2.1 KB · Crea sync por (tipo, fecha_corte)
│       ├── save.php                 11.4 KB · INSERT lotes (cliente/prov/cheque)
│       ├── data.php                 19.3 KB · ★ Endpoint principal con todo el JSON
│       └── delete-sync.php           1.9 KB · DELETE por (tipo, fecha)
│
├── 📂 articulos/                             · 📦 Catálogo maestro
│   ├── DOCUMENTACION.md             16.4 KB
│   ├── index.php                    19.8 KB · Landing con stats del catálogo
│   ├── sync.php                     14.4 KB · UI carga del Excel (66 cols)
│   ├── config/database.php           342 B  · Constantes DB
│   └── api/
│       ├── _schema.php               7.8 KB · ★ 5 tablas (cross-module)
│       ├── init.php                  1.5 KB · Crea schema + opcional TRUNCATE
│       └── save.php                  8.2 KB · INSERT lotes 66-col con ON DUP KEY UPDATE
│
└── 📂 listas/                                · 🏷️ Listas de precios
    ├── index.php                    14.5 KB · Consultor de precios por lista/agrupación
    ├── sync.php                      76 B   · ⚠️ Stub: redirige a /catalogo/admin/api_sync.php
    ├── config/database.php           967 B  · DB + LISTAS_DISPONIBLES (17 listas)
    └── api/
        ├── _schema.php               4.4 KB · 3 tablas (precios + agrupaciones + sync)
        ├── init.php                  2.3 KB
        ├── precios.php               2.3 KB · Consulta de precios
        └── sync_process.php         11.7 KB · Backend del sync (delegado)

1.2 📐 Convenciones del proyecto

Naming

  • _schema.php — función <modulo>_ensure_schema(PDO $pdo) idempotente.
  • init.php — crea schema + inicializa registro en tabla *_sincronizaciones.
  • save.php / save_raw.php — recibe lotes JSON via POST, inserta y devuelve {ok, insertadas}.
  • data.php — endpoint de lectura que devuelve el JSON del dashboard.
  • sync.php — UI con SheetJS para parsear Excel cliente-side.
  • sync_bulk.php — versión multi-mes.
  • reset_db.php — panel admin (delete-period / delete-all / drop).
  • version.php — constantes semver (<MOD>_VERSION, <MOD>_VERSION_DATE).
  • DOCUMENTACION.md — markdown extenso por módulo.

Estilo de prefijos en BD

PrefijoCantidadPropósito
ventas / sincronizaciones2Sin prefijo (es el módulo "principal").
caja_*9Schema v2 con 1 derivada + 6 raw + 2 meta.
cashflow_*51 control + 3 carteras + 1 extractos.
articulos_*71 raw principal + 4 raw auxiliares + 2 derivadas (precios, agrupaciones).
catalogo_*5Config del catálogo público (no parte de reportes).
clientes_raw · clientes_sync_log2Catálogo cliente (módulo separado).
listas_sync1Metadata de syncs de listas (datos viven en articulos_precios).

Tipos de archivos

TipoPatrónFunción
Controlador HTML+PHPindex.php, dashboard.phpRenderiza HTML inicial + inline JS que llama a APIs JSON.
API JSONapi/*.phpDevuelve application/json. Recibe parámetros por $_GET o JSON POST.
UI Syncsync*.phpUI con SheetJS o llamadas a ChessERP API.
Schemaapi/_schema.phpFunción *_ensure_schema() con CREATE TABLE IF NOT EXISTS + ALTER TABLE defensivos.
Includes / libsincludes/*.phpHelpers PHP, conexión PDO, cliente API.
Versiónversion.phpConstantes semver.

1.3 🎭 Responsabilidades por archivo (los críticos)

📊 Módulo Venta

ArchivoResponsabilidadLlama a
config/database.php Constantes BD + API ChessERP + SITE_VERSION + zone tz.
includes/db_reportes.php Singleton PDO. Bootstrap articulos_ensure_schema(). articulos/api/_schema.php
includes/chess_api_client.php HTTP a ChessERP: login(), getVentas(). API externa
includes/data_api.php ★ 20+ funciones de queries. KPIs, márgenes, ABC, evolución, comportamiento. db_reportes.php
includes/functions.php Formatters PHP: formatMoney, formatPercent, formatTons, cleanSupervisor.
index.php Lista todos los períodos sincronizados con KPIs y cards enriquecidas. getSincronizaciones()
dashboard.php ★ 147 KB. KPIs + 6 tabs Rentabilidad + ABC + comportamiento + evolución 12m + cross-filter. loadDashboardDataFromApi()
sync_api.php UI con select mes/año + botón "Sincronizar" + barra de progreso AJAX. sync_api_process.php
sync_api_process.php Backend lote×lote: init · lote · finalizar · cancelar. chess_api_client.php
reinit_import.php Importación masiva con modo "reset" (DROP + recrea) o "resume" (saltea completados). chess_api_client.php
monitor.php Auto-refresh cada 3s del estado de cada mes (procesando/completado/error).
api/filter.php Cross-filter drill-down: clic en una fila → JSON con métricas filtradas. db_reportes.php

🏦 Módulo Caja

ArchivoResponsabilidad
api/_schema.php10 tablas con CREATE IF NOT EXISTS + ALTER defensivos + helpers caja_rebuild_cajeros(), caja_audit_log().
api/init.phpCrea schema + INSERT caja_sincronizaciones en estado "procesando".
api/save.phpINSERT a caja_gastos (la derivada). Al finalizar dispara caja_rebuild_cajeros.
api/save_raw.phpINSERT a las tablas raw (6 destinos: egresos_caja, conceptos, egresos_detalle, gastos_tipificados, movimiento_detalle, movimiento_resumido). Helpers f(), i(), s(), d().
sync.phpUI individual: dropzone para 6 Excel. SheetJS parsea cliente. JS orquesta secuencia.
sync_bulk.phpUI masiva: 1 file picker por tipo, detecta períodos, encola, importa lote × mes. Contiene parseMovDetalleMap() (bug histórico fix en v2.0.2).
gastos/index.phpDashboard Tabulator con árbol RUBRO ▸ CONCEPTO + Chart.js.
gastos/api/data.phpAgregados por año (rubro, concepto, provincia, mes).
tesoreria/index.phpDashboard 5 pestañas con KPIs ejecutivos siempre visibles.
finanzas/index.phpDashboard 3 pestañas. Cruce con tabla ventas para rentabilidad.
reset_db.php3 acciones: delete_period (por sync_id), delete_all (todas), drop_tables.

💸 Módulo Cashflow

ArchivoResponsabilidad
api/_schema.php4 tablas: sincronizaciones + carteras (cliente, proveedor) + cheques.
api/init.phpBorra sync previo del mismo (tipo, fecha_corte). Crea uno nuevo.
api/save.phpHelpers f/i/d idénticos a caja. Extrae cliente_id con regex desde "000002 - LEIVA MAURO".
api/data.php★ Endpoint principal. Devuelve KPIs + agings + carteras + cheques + calendario semanal + cruce comercial (6m con tabla ventas).
sync.phpUI unificada con detección CSV vs XLSX + fallback Windows-1252.
index.phpDashboard con 5 KPIs + 2 agings (8 tramos) + calendario 4 semanas + 6 tablas.

📦 Módulo Artículos · 🏷️ Listas

ArchivoResponsabilidad
articulos/api/_schema.php5 tablas. ★ Llamada cross-module desde venta/db_reportes.php.
articulos/api/save.php66 columnas, ON DUPLICATE KEY UPDATE idempotente.
articulos/sync.phpUI drag-and-drop, procesa 1 hoja principal + 4 auxiliares.
articulos/index.phpKPIs del catálogo: total, vigentes, anulados, con peso, con proveedor.
listas/api/_schema.php3 tablas + backfill desde articulos_raw.usado_disp_movil.
listas/api/precios.phpEndpoint de consulta filtrada por (lista, forma_agrupar, des_agrupacion).
listas/sync.php⚠️ Stub: redirect 301 a /catalogo/admin/api_sync.php.

1.4 🎨 Assets y dependencias CDN

Librerías externas (todas vía CDN, sin build step)

LibreríaVersiónUsada enFunción
Tabulator6.3Todos los dashboardsTablas con virtual scroll, sort, search, bottomCalc, dataTree.
Chart.js4.4Todos los dashboardsGráficos de barras, líneas, doughnut, escala dual Y.
SheetJS (xlsx)0.20.3sync*.php · caja, articulosParseo Excel cliente-side.
Outfit Fontvia Google FontsTodo el sistemaTipografía unificada (300–800).
JetBrains Monovia Google FontsAnálisis (este doc)Código y números tabulares.

Logos compartidos

  • /assets/images/logos/logo_dia.svg
  • /assets/images/logos/logo_noche.svg

Implementación: 2 <img> superpuestos + CSS show/hide según data-theme.

Theming unificado

Todos los HTML usan la misma clave de localStorage:

// Anti-flash de tema (primera línea del <head>)
(function(){
  var t = localStorage.getItem('za-theme') || 'dark';
  document.documentElement.setAttribute('data-theme', t);
})();

Variables CSS comunes: --bg-page, --bg-card, --text-main, --text-muted, --accent, --border.

1.5 📚 Documentación markdown existente

ArchivoLíneasContenido
/reportes/DOCUMENTACION.md564Versiones · arquitectura · BD · fórmulas · maintenance.
/venta/DOCUMENTACION.md1.232★ Doc más extenso. Funciones, queries, changelog detallado.
/caja/DOCUMENTACION.md288Hub + schema v2 + submódulos + changelog.
/caja/REFERENCIA_EXCEL.md~230Mapa columna×columna de cada Excel.
/caja/TROUBLESHOOTING.md281Guía de re-sync, diagnóstico, queries de verificación.
/caja/gastos/DOCUMENTACION.md~700Pipeline 3-tier completo.
/caja/tesoreria/DOCUMENTACION.md2765 pestañas con endpoints y queries.
/caja/finanzas/DOCUMENTACION.md2173 pestañas con fórmulas y heurísticas.
/cashflow/DOCUMENTACION.md462Schema, endpoints, dashboard, limitaciones.
/articulos/DOCUMENTACION.md453Schema 66 cols + cross-module JOIN.
TOTAL .md~4.700 Documentación markdown existente.
✅ Punto fuerte del proyecto
El proyecto tiene ~4.700 líneas de doc markdown mantenidas al día y con changelog real por módulo. Esto facilita enormemente el onboarding y la trazabilidad de cambios. Esta auditoría HTML complementa esos docs con análisis visual + escalabilidad.