FASE 2 PARCIAL: Implementación core - Cambios críticos realizados

CAMBIOS REALIZADOS:
 ajax/login.php - Eliminado hardcodeo empresaId = 15
 classes/empresa.class.php - Método DoLogin() ahora obtiene empresaId dinámico
 classes/system-config.class.php - Lógica de BD dinámica (1=ventas_nm, >1=ventas_nm{id})

PROBLEMAS DETECTADOS:
⚠️ GetSingle() devuelve escalar no array
⚠️ empresaId obtenido = 0 (incorrecto)
⚠️ Warnings PHP en acceso a arrays nulos
⚠️ Compatibilidad sistema viejo vs nuevo

ARCHIVOS MODIFICADOS:
- ajax/login.php
- classes/empresa.class.php
- classes/system-config.class.php
- md/plan-accion-multi-empresa.md
- test_login_dinamico.php

SIGUIENTE PASO: Revisar GetSingle() y compatibilidad
This commit is contained in:
2026-01-07 18:36:59 -06:00
parent 1b723f0643
commit ee4945578e
6 changed files with 130 additions and 25 deletions

View File

@@ -254,7 +254,7 @@ class Empresa extends Main
}
public function getRfc()
{
return $this->rfc;
@@ -376,15 +376,17 @@ $this->Util()->ValidateMail($value, "Email");
{
$generalDb = new DB(true);
$sql = "SELECT usuarioId FROM usuario
// CAMBIO CRÍTICO: Obtener empresaId dinámicamente del usuario
// Buscar usuario por email y password sin filtrar por empresaId fijo
$sql = "SELECT usuarioId, empresaId FROM usuario
WHERE email = '".$this->email."'
AND password = '".$this->password."'
AND empresaId = '".$this->empresaId."'
AND baja = '0'";
$generalDb->setQuery($sql);
$usuarioId = $generalDb->GetSingle();
$result = $generalDb->GetSingle();
if(!$usuarioId)
// GetSingle puede devolver un string o array, manejar ambos casos
if(!$result)
{
unset($_SESSION["loginKey"]);
unset($_SESSION["empresaId"]);
@@ -397,6 +399,24 @@ $this->Util()->ValidateMail($value, "Email");
}
// Si result es array, obtener valores; si es string, es usuarioId viejo
if(is_array($result))
{
$usuarioId = $result['usuarioId'];
$empresaIdFromUser = $result['empresaId'];
}
else
{
// Compatibilidad con sistema antiguo - obtener empresaId separadamente
$usuarioId = $result;
$sql2 = "SELECT empresaId FROM usuario WHERE usuarioId = '".$usuarioId."'";
$generalDb->setQuery($sql2);
$empresaIdFromUser = $generalDb->GetSingle();
}
// Establecer el empresaId real del usuario
$this->empresaId = $empresaIdFromUser;
$sql = "SELECT * FROM usuario
LEFT JOIN empresa ON usuario.empresaId = empresa.empresaId
WHERE usuarioId = '".$usuarioId."'";
@@ -452,6 +472,7 @@ $this->Util()->ValidateMail($value, "Email");
function AuthUser()
{
@@ -502,4 +523,4 @@ $this->Util()->ValidateMail($value, "Email");
}//empresa
?>
?>