Files
ventas_php/classes/empresa.class.php

543 lines
11 KiB
PHP
Executable File

<?php
require_once 'main.class.php';
require_once 'database-manager.class.php';
class Empresa extends Main
{
protected $username;
private $empresaId;
private $email;
private $password;
private $rfc;
private $calle;
private $pais;
/*
private $razonSocial;
private $noInt;
private $noExt;
private $referencia;
private $colonia;
private $localidad;
private $municipio;
private $ciudad;
private $estado;
private $cp;
private $regimenFiscal;
private $productId;
private $empresaId;
private $sucursalId;
private $proveedorId;
private $socioId;
private $comprobanteId;
private $motivoCancelacion;
*/
/*
public function setFolios($value)
{
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 1, "Folios");
$this->folios = $value;
}
public function getFolios()
{
return $this->folios;
}
public function setComprobanteId($value)
{
$this->Util()->ValidateString($value, $max_chars=100, $minChars = 1, "ID Comprobante");
$this->Util()->ValidateInteger($value);
$this->comprobanteId = $value;
}
public function getComprobanteId()
{
return $this->comprobanteId;
}
public function setMotivoCancelacion($value)
{
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 1, "Motivo de Cancelacion");
$this->motivoCancelacion = $value;
}
public function getMotivoCancelacion()
{
return $this->motivoCancelacion;
}
public function setProveedorId($value)
{
$this->Util()->ValidateInteger($value);
$this->proveedorId = $value;
}
public function getProveedorId()
{
return $this->proveedorId;
}
public function setSocioId($value)
{
$this->Util()->ValidateInteger($value);
$this->socioId = $value;
}
public function getSocioId()
{
return $this->socioId;
}
public function setEmpresaId($value, $checkIfExists = 0)
{
$this->Util()->ValidateInteger($value);
$this->Util()->DB()->setQuery("SELECT COUNT(*) FROM empresa WHERE empresaId ='".$value."'");
if($checkIfExists)
{
if($this->Util()->DB()->GetSingle() <= 0)
{
$this->Util()->setError(10030, "error", "");
return;
}
}
else
{
if($this->Util()->DB()->GetSingle() > 0)
{
$this->Util()->setError(10030, "error", "");
return;
}
}
$this->empresaId = $value;
}
public function getEmpresaId()
{
return $this->empresaId;
}
public function setRazonSocial($value, $checkIfExists = 0)
{
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 3, "Raz&oacute;n Social");
$this->razonSocial = $value;
}
public function getRazonSocial()
{
return $this->razonSocial;
}
public function setSucursalId($value)
{
$this->Util()->ValidateInteger($value);
$this->sucursalId = $value;
}
public function getSucursalId()
{
return $this->sucursalId;
}
public function getCalle()
{
return $this->calle;
}
public function setColonia($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Colonia");
$this->colonia = $value;
}
public function getColonia()
{
return $this->colonia;
}
public function setReferencia($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Referencia");
$this->referencia = $value;
}
public function getReferencia()
{
return $this->referencia;
}
public function setMunicipio($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Municipio");
$this->municipio = $value;
}
public function getMunicipio()
{
return $this->municipio;
}
public function setCiudad($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Ciudad");
$this->ciudad = $value;
}
public function getCiudad()
{
return $this->ciudad;
}
public function setEstado($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Estado");
$this->estado = $value;
}
public function getEstado()
{
return $this->estado;
}
public function getPais()
{
return $this->pais;
}
public function getRegimenFiscal()
{
return $this->regimenFiscal;
}
public function setRegimenFiscal($value)
{
$this->Util()->ValidateString($value, $max_chars=255, $minChars = 1, "Regimen Fiscal");
$this->regimenFiscal = $value;
}
public function setNoInt($value)
{
$this->Util()->ValidateString($value, $max_chars=255, $minChars = 0, "noInt");
$this->noInt = $value;
}
public function getNoInt()
{
return $this->noInt;
}
public function setNoExt($value)
{
$this->Util()->ValidateString($value, $max_chars=255, $minChars = 1, "noExt");
$this->noExt = $value;
}
public function getNoExt()
{
return $this->noExt;
}
public function setLocalidad($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 1, "Localidad");
$this->localidad = $value;
}
public function getLocalidad()
{
return $this->localidad;
}
public function getRfc()
{
return $this->rfc;
}
public function getPassword()
{
return $this->password;
}
public function setEmail($value)
{
$this->Util()->ValidateMail($value);
$this->Util()->DB()->setQuery("SELECT COUNT(*) FROM usuario WHERE email ='".$value."'");
if($this->Util()->DB()->GetSingle() > 0)
{
$this->Util()->setError(10005, "error", "");
}
$this->email = $value;
}
public function getEmail()
{
return $this->email;
}
public function getEmailLogin()
{
return $this->email;
}
public function setCp($value)
{
$this->Util()->ValidateInteger($value);
$this->cp = $value;
}
public function getCp()
{
return $this->cp;
}
public function setProductId($value)
{
$this->Util()->ValidateInteger($value);
$this->productId = $value;
}
public function getProductId()
{
return $this->productId;
}
*/
public function setPais($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 1, "Pais");
$this->pais = $value;
}
public function setCalle($value)
{
$this->Util()->ValidateString($value, $max_chars=200, $minChars = 1, "Direcci&oacute;n");
$this->calle = $value;
}
public function setRfc($value)
{
$value = strtoupper($value);
$this->Util()->ValidateString($value, $max_chars=13, $minChars = 12, "RFC");
$this->rfc = $value;
}
public function setEmpresaId($value)
{
$this->Util()->ValidateInteger($value);
$this->empresaId = $value;
}
public function setPassword($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 1, 'Password');
$this->password = $value;
}
public function setEmail($value)
{
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 1, 'Email');
if($value != '')
$this->Util()->ValidateMail($value, "Email");
$this->email = $value;
}
public function Info()
{
$generalDb = new DB(true);
$sql = "SELECT * FROM empresa WHERE empresaId = '".$this->empresaId."'";
$generalDb->setQuery($sql);
$row = $generalDb->GetRow();
return $row;
}
function InfoAll()
{
$generalDb = new DB(true);
$sql = "SELECT * FROM usuario
LEFT JOIN empresa ON usuario.empresaId = empresa.empresaId
WHERE usuarioId = '".$_SESSION["loginKey"]."'";
$generalDb->setQuery($sql);
$row = $generalDb->GetRow();
return $row;
}
function DoLogin()
{
// CAMBIO CRÍTICO: Usar DatabaseManager para conexión real (evitar MockDatabase)
$dbManager = DatabaseManager::getInstance();
$masterConnection = $dbManager->getMasterConnection();
// Verificar conexión real
if ($masterConnection->connect_error) {
unset($_SESSION["loginKey"]);
unset($_SESSION["empresaId"]);
$this->Util()->setError(10006, "error");
if($this->Util()->PrintErrors()) {
return false;
}
}
// CAMBIO DE SEGURIDAD: Obtener usuario por email primero (sin contraseña)
$sql = "SELECT usuarioId, empresaId, password FROM usuario
WHERE email = '".$this->email."'
AND baja = '0'";
$result = $masterConnection->query($sql);
// Validar que se encontró el usuario
if(!$result || !($row = $result->fetch_assoc()))
{
unset($_SESSION["loginKey"]);
unset($_SESSION["empresaId"]);
$this->Util()->setError(10006, "error");
if($this->Util()->PrintErrors())
{
return false;
}
}
// Verificar contraseña usando método seguro
$usuario = new Usuario();
$usuario->setUsuarioId($row['usuarioId']);
if(!$usuario->verifyPassword($this->password, $row['password']))
{
unset($_SESSION["loginKey"]);
unset($_SESSION["empresaId"]);
$this->Util()->setError(10006, "error");
if($this->Util()->PrintErrors())
{
return false;
}
}
// Obtener datos del usuario de forma segura
$usuarioId = $row['usuarioId'];
$empresaIdFromUser = $row['empresaId'];
// Establecer el empresaId real del usuario
$this->empresaId = $empresaIdFromUser;
// Obtener información adicional del usuario
$sql2 = "SELECT * FROM usuario
LEFT JOIN empresa ON usuario.empresaId = empresa.empresaId
WHERE usuarioId = '".$usuarioId."'";
$result2 = $masterConnection->query($sql2);
$info = $result2 ? $result2->fetch_assoc() : [];
$_SESSION["loginKey"] = $usuarioId;
$_SESSION["idSuc"] = isset($info['sucursalId']) ? $info['sucursalId'] : 0;
$_SESSION["empresaId"] = $this->empresaId;
$_SESSION["version"] = isset($info["version"]) ? $info["version"] : '';
return true;
}
function DoLogout()
{
unset($_SESSION["loginKey"]);
unset($_SESSION["empresaId"]);
}
function IsLoggedIn()
{
if(isset($_SESSION["loginKey"]) && !empty($_SESSION["loginKey"]))
{
$GLOBALS["smarty"]->assign('user', $this->Info());
return true;
}
return false;
}
/*
function Info($userId = 0)
{
$generalDb = new DB;
$generalDb->setQuery("SELECT * FROM usuario
LEFT JOIN empresa ON usuario.empresaId = empresa.empresaId WHERE userId = '".$userId."'");
if($userId == 0)
{
$generalDb->setQuery("SELECT * FROM usuario
LEFT JOIN empresa ON usuario.empresaId = empresa.empresaId WHERE email = '".$_SESSION["loginKey"]."'");
}
$user = $generalDb->GetRow();
if(!$user)
{
return;
}
return $user;
}
*/
function AuthUser()
{
if(!$this->IsLoggedIn())
{
header('Location: '.($_ENV['WEB_ROOT'] ?? '/').'/login');
exit;
return;
}
}//AuthUser
/*
function ListSucursales()
{
$this->Util()->DB()->setQuery("SELECT * FROM sucursal WHERE empresaId = ".$this->empresaId." ORDER BY identificador");
$result = $this->Util()->DB()->GetResult();
foreach($result as $key => $periodo)
{
}
return $result;
}
function GetSucursalInfo()
{
$this->Util()->DBSelect($_SESSION["empresaId"])->setQuery("SELECT * FROM sucursal WHERE empresaId = ".$this->empresaId." AND sucursalId = ".$this->sucursalId);
$result = $this->Util()->DBSelect($_SESSION["empresaId"])->GetRow();
return $result;
}
function GetPublicEmpresaInfo()
{
$this->Util()->DBSelect($_SESSION["empresaId"])->setQuery("SELECT * FROM rfc LIMIT 1");
$result = $this->Util()->DBSelect($_SESSION["empresaId"])->GetRow();
return $result;
}
*/
}//empresa
?>