FASE 1: Análisis y diagnóstico - Problema hardcodeado identificado
- 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
This commit is contained in:
100
md/plan-accion-multi-empresa.md
Normal file
100
md/plan-accion-multi-empresa.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# 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 datos `ventas_nm` (sin número)
|
||||
- `empresaId > 1` → usa base de datos `ventas_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)
|
||||
- [x] Identificar todos los archivos con código hardcodeado
|
||||
- [ ] Mapear flujo actual de autenticación
|
||||
- [ ] Analizar cómo se obtiene el `empresaId` del usuario
|
||||
- [ ] Revisar configuración actual de base de datos
|
||||
|
||||
### Fase 2: Implementación Core (Pendiente)
|
||||
- [ ] Modificar `SystemConfig` para manejo dinámico de `empresaId`
|
||||
- [ ] Actualizar `DatabaseManager` para selección dinámica de BD
|
||||
- [ ] Implementar lógica de prefijo de base de datos
|
||||
- [ ] Crear función para obtener `empresaId` del 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` (base `ventas_nm`)
|
||||
- [ ] Pruebas con `empresaId > 1` (base `ventas_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.php`
|
||||
- `classes/database-manager.class.php`
|
||||
- `init.php`
|
||||
- `config.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`
|
||||
```php
|
||||
$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
|
||||
1. **Usuario ingresa email/password** → `login.js`
|
||||
2. **AJAX envía a** `ajax/login.php`
|
||||
3. **❌ PROBLEMA**: `$empresa->setEmpresaId("15")` forza empresaId=15
|
||||
4. **Consulta**: `usuario` WHERE `empresaId = 15` (solo busca en empresa 15)
|
||||
5. **Establece sesión**: `$_SESSION["empresaId"] = 15`
|
||||
|
||||
### 🎯 Solución Requerida
|
||||
El login debe:
|
||||
1. Obtener `empresaId` de la tabla `usuario` basado en email/password
|
||||
2. NO forzar empresaId=15
|
||||
3. Usar el `empresaId` real 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
|
||||
Reference in New Issue
Block a user