nickpons666 e88af6d9e0 Fix undefined array key warnings in productos module
Added $info array initialization with default values for proveedorId
and prodCatId to prevent 'Trying to access array offset on null'
warnings in search-productos.tpl and enumProdCatSearch.tpl templates.
2026-01-07 22:24:05 -06:00

Sistema de Ventas Avantika

Descripción General

Sistema integral de gestión de ventas, inventario y facturación multi-empresa desarrollado en PHP. Actualmente funciona con PHP heredado y requiere migración completa a PHP 8.

Arquitectura del Sistema

Multi-Empresa

El sistema maneja múltiples empresas mediante una arquitectura de bases de datos separadas:

  • Base Master: avantikads_nmgen - Autenticación y catálogos globales
  • Bases Empresa: avantikads_nm{empresaId} - Datos específicos por empresa
  • Ejemplo: avantikads_nm15 para empresaId = 15

Flujo de Autenticación

  1. Usuario inicia sesión → Conexión a base master
  2. Validación de credenciales en tabla usuario
  3. Obtención de empresaId del registro del usuario
  4. Conexión dinámica a base de datos específica de la empresa

Estado Actual

Versión PHP

  • Actual: PHP con funciones obsoletas (mysql_*)
  • Requerido: Migración completa a PHP 8

Compatibilidad

  • NO COMPATIBLE con PHP 8
  • Requiere migración completa antes de actualizar

Problemas Críticos Identificados

1. Funciones Obsoletas (CRÍTICO)

  • 13 funciones mysql_* en classes/db.class.php
  • Impacto: Sistema completo sin base de datos
  • Solución: Migración completa a MySQLi/PDO

2. Funciones Eliminadas en PHP 8

  • ereg_replace()preg_replace()
  • each()foreach() (7 archivos)
  • create_function() → funciones anónimas (4 archivos)
  • split()explode()/preg_split() (4 archivos)

3. Sintaxis Incompatible

  • 100+ ocurrencias de $string{index}$string[index]
  • 98+ asignaciones list() incorrectas
  • Múltiples asignaciones por referencia problemáticas

4. Seguridad

  • Credenciales de bases de datos en código fuente
  • Falta de configuración centralizada segura

Estructura del Proyecto

ventas/
├── index.php                    # Punto de entrada principal
├── config.php                   # Configuración actual (a eliminar)
├── libraries.php               # Carga de clases y librerías
├── init.php                    # Inicialización del sistema
├── classes/                    # Clases del sistema
│   ├── db.class.php           # Base de datos (mysql_* obsoletas)
│   ├── util.class.php         # Utilidades (funciones obsoletas)
│   ├── usuario.class.php       # Gestión de usuarios
│   ├── producto.class.php     # Gestión de productos
│   └── [20+ clases más]
├── ajax/                       # Endpoints AJAX (50+ archivos)
├── modules/                    # Módulos del sistema (100+ archivos)
├── templates_c/               # Plantillas compiladas Smarty
├── pdf/                       # Generación de PDFs
├── tcpdf/                     # Librería TCPDF
├── properties/                # Archivos de configuración
├── base_datos/                # Esquemas de bases de datos
│   ├── avantikads_nmgen.sql  # Estructura base master
│   └── avantikads_nm15.sql   # Ejemplo empresa
└── php8-migration/            # Plan de migración a PHP 8

Tecnologías Utilizadas

Backend

  • PHP (versión heredada)
  • MySQL (multi-base de datos)
  • Smarty (motor de plantillas)
  • NuSOAP (webservices)
  • PHPMailer (correos electrónicos)
  • TCPDF (generación de PDFs)

Base de Datos

  • MySQL con arquitectura multi-empresa
  • Motor: InnoDB/MyISAM mixto
  • Charset: latin1 (requiere migración a utf8mb4)

Módulos Principales

  • Usuarios: Gestión multi-empresa de usuarios
  • Productos: Catálogo y control de inventario
  • Pedidos: Sistema de pedidos y envíos
  • Ventas: Procesamiento de ventas y facturación
  • Facturación: Facturas electrónicas (México)
  • Inventario: Control y ajustes de inventario
  • Reportes: Múltiples reportes de negocio
  • Proveedores: Gestión de proveedores
  • Clientes: Administración de clientes

Plan de Migración a PHP 8

Documentación Completa

Ver php8-migration/ para documentación detallada:

  1. analisis-sistema.md - Análisis general
  2. reporte-problemas.md - Problemas identificados
  3. plan-ejecucion.md - Plan de migración
  4. ejemplo-db-mysqli.php - Ejemplo migración DB
  5. ejemplo-env-config.php - Configuración segura
  6. .env.example - Plantilla de variables
  7. archivos-criticos.md - Lista de archivos críticos
  8. analisis-base-datos.md - Análisis BD multi-empresa

Estimación de Tiempo

  • Total estimado: 113-162 horas
  • Fases: Configuración → MySQL → Funciones → Sintaxis → Pruebas

Requisitos de Migración

Críticos

  1. Migrar funciones mysql_* a MySQLi/PDO
  2. Implementar configuración .env segura
  3. Actualizar sintaxis PHP 8
  4. Reemplazar funciones obsoletas

Seguridad

  1. Eliminar credenciales del código
  2. Implementar variables de entorno
  3. Validar routing multi-empresa
  4. Aislar datos por empresa

Advertencias Importantes

⚠️ NO ACTUALIZAR PHP sin completar migración completa
⚠️ Backup completo obligatorio antes de cambios
⚠️ Entorno de pruebas aislado requerido
⚠️ Pérdida total de funcionalidad si se actualiza PHP sin migración

Licencia

Sistema propiedad de Avantika - Uso exclusivo del propietario.


Última actualización: Enero 2026
Estado: En espera de aprobación para migración a PHP 8

Description
No description provided
Readme 92 MiB
Languages
PHP 77%
Smarty 7.7%
HTML 5.1%
JavaScript 4.3%
C 3.7%
Other 2.2%