Files
ventas_php/md/plan-accion-multi-empresa.md
nickpons666 1b723f0643 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
2026-01-07 18:27:33 -06:00

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 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)

  • 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

$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/passwordlogin.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