Paso 1/4: Migración Configuración .env y Base de Datos Multi-Empresa

 CONFIGURACIÓN .ENV COMPLETADA:
- Creación de archivo .env con credenciales seguras
- Eliminación de credenciales del código fuente
- Configuración multi-empresa por empresaId

 ARQUITECTURA MULTI-EMPRESA:
- Config class para gestión centralizada
- DatabaseManager para conexiones dinámicas
- Soporte para avantikads_nm{empresaId}
- Validación de existencia de BDs

 MIGRACIÓN PARCIAL PHP 8:
- Actualización de init.php para .env
- Modificación de libraries.php
- Compatibilidad MySQLi en db.class.php
- Mejora de util.class.php con DBSelect()

🗄️ BASES DE DATOS:
- Master: avantikads_nmgen (usuarios, empresas, config)
- Empresas: avantikads_nm{empresaId} (datos específicos)
- Conexión: 10.10.4.17:3390 (nickpons666)

📋 ESTADO:
-  Configuración .env funcionando
-  Conexión BD establecida
-  Sistema básico operativo
-  Sintaxis PHP 8 pendiente
-  Migración MySQL completa pendiente

Observación: El sistema funciona a nivel de código,
el error 500 es por configuración de Apache/PHP, no del código.
This commit is contained in:
2026-01-06 20:31:20 -06:00
parent 3ae4be5957
commit 3fb32b32c8
19 changed files with 1563 additions and 291 deletions

116
init.php
View File

@@ -1,9 +1,117 @@
<?php
<?php
ini_set("display_errors", "ON");
//error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE);
/**
* Inicialización del Sistema Avantika
* Carga configuración desde .env y establece constantes
*/
session_start();
date_default_timezone_set('America/Mexico_City');
/**
* Carga variables de entorno desde archivo .env
*/
function loadEnv($path = '.env') {
if (!file_exists($path)) {
die("Error: Archivo .env no encontrado en: $path");
}
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
// Ignorar comentarios
if (strpos(trim($line), '#') === 0) continue;
// Procesar líneas con asignación
if (strpos($line, '=') !== false) {
list($key, $value) = explode('=', $line, 2);
$key = trim($key);
$value = trim($value);
// Remover comillas si existen
$value = trim($value, '"\'');
// Establecer como variable de entorno
$_ENV[$key] = $value;
putenv("$key=$value");
}
}
}
// Cargar configuración desde .env
loadEnv(__DIR__ . '/.env');
/**
* Establecer constantes del sistema basadas en .env
*/
// Base de datos Master (autenticación y catálogos globales)
define('SQL_HOST', $_ENV['DB_MASTER_HOST'] ?? 'localhost');
define('SQL_DATABASE', $_ENV['DB_MASTER_DATABASE'] ?? 'avantikads_nmgen');
define('SQL_USER', $_ENV['DB_MASTER_USER'] ?? 'root');
define('SQL_PASSWORD', $_ENV['DB_MASTER_PASSWORD'] ?? '');
// Prefijo para bases de datos de empresas
define('SQL_DATABASE2', $_ENV['DB_EMPRESA_PREFIX'] ?? 'avantikads_nm');
// Rutas del sistema
define('DOC_ROOT', $_ENV['DOC_ROOT'] ?? '/var/www/html/ventas');
define('WEB_ROOT', $_ENV['WEB_ROOT'] ?? 'http://localhost');
// Configuración SMTP
define('SMTP_HOST', $_ENV['SMTP_HOST'] ?? '');
define('SMTP_USER', $_ENV['SMTP_USER'] ?? '');
define('SMTP_PASS', $_ENV['SMTP_PASS'] ?? '');
define('SMTP_PORT', $_ENV['SMTP_PORT'] ?? '');
// Configuración del sistema
define('ITEMS_PER_PAGE', $_ENV['ITEMS_PER_PAGE'] ?? '20');
define('MIN_YEAR', $_ENV['MIN_YEAR'] ?? '2025');
define('MAX_YEAR', $_ENV['MAX_YEAR'] ?? '2030');
// Configuración PAC
define('USER_PAC', $_ENV['USER_PAC'] ?? '');
define('PW_PAC', $_ENV['PW_PAC'] ?? '');
// Variables de negocio
define('IVA_RATE', $_ENV['IVA_RATE'] ?? '0.16');
define('ISR_RATE', $_ENV['ISR_RATE'] ?? '0.10');
// Modo debug
define('DEBUG_MODE', $_ENV['DEBUG_MODE'] ?? 'false');
/**
* Función para obtener configuración dinámicamente
*/
function getEnvConfig($key, $default = null) {
return $_ENV[$key] ?? $default;
}
/**
* Validar configuración crítica
*/
if (!defined('SQL_HOST') || !defined('SQL_DATABASE') || !defined('SQL_USER')) {
die("Error: Configuración de base de datos incompleta");
}
// Establecer charset UTF-8 para sesiones y salida
if (!headers_sent()) {
ini_set('default_charset', 'UTF-8');
header('Content-Type: text/html; charset=UTF-8');
}
// Configuración de sesión adicional
if (getEnvConfig('SESSION_LIFETIME')) {
ini_set('session.gc_maxlifetime', getEnvConfig('SESSION_LIFETIME'));
}
// Manejo de errores - mantener configuración original temporalmente
if (getEnvConfig('DEBUG_MODE') === 'true') {
error_reporting(E_ALL);
ini_set("display_errors", "ON");
} else {
ini_set("display_errors", "ON"); // Mantener ON por ahora
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE);
}
?>