- Identificado código crítico en ajax/login.php:20 con empresaId = 15 hardcodeado - Mapeados 22 archivos totales con empresaId = 15 - Analizado flujo de login actual que forza empresaId = 15 - Documentado problema principal en md/plan-accion-multi-empresa.md - Lista completa: 1 login, 13 crons, 1 ajax, 7 archivos adicionales Próximo paso: Modificar login para obtener empresaId dinámicamente del usuario
3.4 KiB
3.4 KiB
Plan de Acción - Sistema Multi-Empresa Dinámico
Objetivo
Eliminar código hardcodeado con empresaId = 15 y implementar sistema dinámico que obtenga el empresaId del usuario logueado.
Reglas de Base de Datos
empresaId = 1→ usa base de datosventas_nm(sin número)empresaId > 1→ usa base de datosventas_nm{empresaId}(con número)
Estructura del Sistema
- Base Master:
ventas_nmgen(usuarios, empresas, configuración) - Base Empresa:
ventas_nm{empresaId}(datos operativos)
Fases del Proyecto
Fase 1: Análisis y Diagnóstico (En Progreso)
- Identificar todos los archivos con código hardcodeado
- Mapear flujo actual de autenticación
- Analizar cómo se obtiene el
empresaIddel usuario - Revisar configuración actual de base de datos
Fase 2: Implementación Core (Pendiente)
- Modificar
SystemConfigpara manejo dinámico deempresaId - Actualizar
DatabaseManagerpara selección dinámica de BD - Implementar lógica de prefijo de base de datos
- Crear función para obtener
empresaIddel usuario actual
Fase 3: Actualización de Módulos (Pendiente)
- Actualizar módulos de catálogos
- Actualizar módulos de ventas
- Actualizar módulos de inventarios
- Actualizar módulos de reportes
Fase 4: Pruebas y Validación (Pendiente)
- Pruebas con
empresaId = 1(baseventas_nm) - Pruebas con
empresaId > 1(baseventas_nm{numero}) - Validar flujo completo de autenticación
- Verificar funcionamiento de todos los módulos
Fase 5: Documentación y Limpieza (Pendiente)
- Documentar nueva arquitectura
- Limpiar código obsoleto
- Actualizar comentarios
- Crear guía de implementación
Archivos Críticos a Revisar
classes/system-config.class.phpclasses/database-manager.class.phpinit.phpconfig.php- Módulos principales (
modules/)
Control de Versiones
- Cada fase completada = 1 commit
- No hacer push hasta autorización explícita
- Esperar pruebas funcionales antes de subir
Notas Importantes
- Mantener compatibilidad con código existente
- Preservar seguridad del sistema
- No romper funcionalidades actuales
- Testing exhaustivo antes de producción
Hallazgos de Fase 1
🚨 Problema Principal Identificado
Archivo crítico: ajax/login.php:20
$empresa->setEmpresaId("15"); // HARDCODEADO
📋 Lista Completa de Archivos con empresaId = 15
Login y Autenticación:
ajax/login.php:20- CRÍTICO - Seteo hardcodeado en login
Crons (13 archivos):
crons/reporte-inventario*.php(5 archivos)crons/rep-prods-prov*.php(6 archivos)crons/liberar-productos.php
AJAX:
ajax/facturas.php:9
🔍 Análisis del Flujo de Login
- Usuario ingresa email/password →
login.js - AJAX envía a
ajax/login.php - ❌ PROBLEMA:
$empresa->setEmpresaId("15")forza empresaId=15 - Consulta:
usuarioWHEREempresaId = 15(solo busca en empresa 15) - Establece sesión:
$_SESSION["empresaId"] = 15
🎯 Solución Requerida
El login debe:
- Obtener
empresaIdde la tablausuariobasado en email/password - NO forzar empresaId=15
- Usar el
empresaIdreal del usuario para conectar a su base de datos
Estado: Fase 1 en progreso - Problema identificado Creado: 07-01-2026 Última actualización: 07-01-2026