Análisis
›
§1 Estructura del proyecto
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
Prefijo Cantidad Propósito
ventas / sincronizaciones2 Sin prefijo (es el módulo "principal").
caja_*9 Schema v2 con 1 derivada + 6 raw + 2 meta.
cashflow_*5 1 control + 3 carteras + 1 extractos.
articulos_*7 1 raw principal + 4 raw auxiliares + 2 derivadas (precios, agrupaciones).
catalogo_*5 Config del catálogo público (no parte de reportes).
clientes_raw · clientes_sync_log2 Catálogo cliente (módulo separado).
listas_sync1 Metadata de syncs de listas (datos viven en articulos_precios).
Tipos de archivos
Tipo Patrón Función
Controlador HTML+PHP index.php, dashboard.phpRenderiza HTML inicial + inline JS que llama a APIs JSON.
API JSON api/*.phpDevuelve application/json. Recibe parámetros por $_GET o JSON POST.
UI Sync sync*.phpUI con SheetJS o llamadas a ChessERP API.
Schema api/_schema.phpFunción *_ensure_schema() con CREATE TABLE IF NOT EXISTS + ALTER TABLE defensivos.
Includes / libs includes/*.phpHelpers PHP, conexión PDO, cliente API.
Versión version.phpConstantes semver.
1.3 🎭 Responsabilidades por archivo (los críticos)
📊 Módulo Venta
Archivo Responsabilidad Llama 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
Archivo Responsabilidad
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
Archivo Responsabilidad
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
Archivo Responsabilidad
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ía Versión Usada en Función
Tabulator 6.3 Todos los dashboards Tablas con virtual scroll, sort, search, bottomCalc, dataTree.
Chart.js 4.4 Todos los dashboards Gráficos de barras, líneas, doughnut, escala dual Y.
SheetJS (xlsx)0.20.3 sync*.php · caja, articulosParseo Excel cliente-side.
Outfit Font via Google Fonts Todo el sistema Tipografía unificada (300–800).
JetBrains Mono via Google Fonts Aná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
Archivo Líneas Contenido
/reportes/DOCUMENTACION.md564 Versiones · arquitectura · BD · fórmulas · maintenance.
/venta/DOCUMENTACION.md1.232 ★ Doc más extenso. Funciones, queries, changelog detallado.
/caja/DOCUMENTACION.md288 Hub + schema v2 + submódulos + changelog.
/caja/REFERENCIA_EXCEL.md~230 Mapa columna×columna de cada Excel.
/caja/TROUBLESHOOTING.md281 Guía de re-sync, diagnóstico, queries de verificación.
/caja/gastos/DOCUMENTACION.md~700 Pipeline 3-tier completo.
/caja/tesoreria/DOCUMENTACION.md276 5 pestañas con endpoints y queries.
/caja/finanzas/DOCUMENTACION.md217 3 pestañas con fórmulas y heurísticas.
/cashflow/DOCUMENTACION.md462 Schema, endpoints, dashboard, limitaciones.
/articulos/DOCUMENTACION.md453 Schema 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.