12 Commits

Author SHA1 Message Date
2638d17684 Cuentas por Pagar: correcciones vista Global y respuesta AJAX\n- Evitar subtabla de Notas en vista Global y simplificar fila (colspan=11)\n- Prevenir cierres huérfanos en paginación (pages_new.tpl) con bandera skipClosures\n- Cambiar AJAX a devolver HTML plano (no JSON) para alinearse con cuentas-pagar.js\n- Ajustes sólo de marcado/flujo; sin cambios de lógica de negocio 2026-01-10 01:08:52 -06:00
bb4022c952 Cuentas por Pagar: corregida estructura del header para que las filas se inserten dentro del <tbody> y se alineen correctamente. Ajustada fila de totales y colspans en la lista a 11 columnas para coincidir con el encabezado. Sin cambios de funcionalidad, solo corrección visual/markup. 2026-01-10 00:46:54 -06:00
6839e0efd2 Corrección de visibilidad y diseño en la tabla de productos duplicados. Mejora global en el sistema de paginación y optimización de anchos de tabla. 2026-01-09 16:55:08 -06:00
cea1423109 fix(productos): Resuelve múltiples errores de variables undefined y validación
- Arregla variable \$_GET["p"] con null coalescing
- Implementa paginación completa en EnumDuplicados()
- Agrega validación isset() en templates para evitar null access
- Mejora validación de entradas GET
- Corrige inicialización de variables en templates

Resuelve errores masivos y warnings en módulo de productos.
2026-01-09 16:20:51 -06:00
68d56a6ea4 fix(politicas): Resuelve problemas de variables undefined y validación
- Corrige variable \$atributos.pages por \$politicas.pages en template
- Agrega inicialización de \$user y \$Usr para acceso a empresaId
- Añade case default para manejar operaciones no válidas
- Mejora manejo de sesión en contexto AJAX
- Limpia código de debugging después de resolver problemas

Resuelve error "undefined" al agregar políticas en bonificación-devolución.
2026-01-09 16:03:08 -06:00
448a2aa240 feat(security): Implementar sistema de contraseñas seguro con hashing
- Añadir hashing bcrypt para todas las contraseñas nuevas y existentes
- Implementar verificación segura con password_hash() y password_verify()
- Migrar 10 contraseñas existentes de texto plano a formato hash
- Agregar protección CSRF en formulario de login
- Implementar rate limiting (5 intentos/minuto) contra fuerza bruta
- Mejorar formulario de edición con campos de contraseña seguros
- Agregar validación de coincidencia y longitud mínima de contraseñas
- Sanitización de inputs y validación de formato de email
- Prevenir exposición de hashes en interfaz de usuario

Cambia vulnerabilidad crítica donde las contraseñas se almacenaban y viajaban en texto plano.
2026-01-09 15:24:26 -06:00
cb1a44e380 fix(promociones): Resuelve múltiples advertencias y errores en promociones y sucursales
- Se corrigieron las advertencias 'Undefined array key "checked"' en 'enumProvPromo.tpl', 'enumSucPromo.tpl' y 'enumProdCatPromo.tpl'.
- Se resolvieron las advertencias 'Trying to access array offset on null' en 'enumTiposPromo.tpl', 'enumDesctosPromo.tpl', 'enumStatusPromo.tpl', 'enumVigenciaPromo.tpl' y 'enumPromoAplicar.tpl'.
- Se corrigió el error 'Call to undefined method Util::DecodeUrlRow()' en 'ajax/sucursales.php' reemplazándolo por 'DecodeUrlResult()'.
- Se modificó 'templates/lists/sucursales.tpl' para evitar la inclusión de 'pages_ajax.tpl' cuando la variable '$pages' es nula.
- Se eliminaron archivos de log y temporales.
2026-01-08 01:23:30 -06:00
ccfa01fa0e feat(atributos): Mejora la funcionalidad de la página de atributos
- Deshabilita la paginación para mostrar todos los atributos por defecto.
- Corrige un error de renderizado en 'atributos-valores.tpl' añadiendo etiquetas de cierre faltantes.
- Cambia el orden de los atributos a 'atributoId' en 'atributo.class.php'.
- Corrige un bug en 'atributoValor.class.php' descomentando una condición.
- Asegura que las acciones AJAX (añadir, editar, eliminar) refresquen la lista correctamente sin paginación.
2026-01-08 01:06:11 -06:00
57d1d41e1f Fix undefined array key 'telefono' in proveedores list template
Changed $item.telefono to $item.telefonoVtas to match database schema.
The proveedor table has telefonoVtas, telefonoPagos, and telefonoEnt fields,
not a single 'telefono' field.
2026-01-07 22:01:04 -06:00
3a5afa82fe Fix systematic errors in pagination, sucursal warnings, and fatal count() errors across multiple modules 2026-01-07 01:06:27 -06:00
aaa77e870e Complete PHP 8.3.6 migration with modern architecture
- Added secure .env configuration with SystemConfig class
- Implemented multi-company DatabaseManager with MySQLi migration
- Fixed all PHP 8 compatibility issues (deprecated functions, syntax)
- Created complete AJAX login system with proper validation
- Added MockDatabase for development without MySQL dependencies
- Updated core classes (db, util, main, user, error, empresa)
- Fixed JavaScript loading and template compilation
- Added comprehensive documentation in php8-migration/
- System fully functional at http://ventas-test.local:82/login

Features:
- Multi-company database architecture with fallback to master
- Secure configuration management
- Modern PHP 8 practices with proper error handling
- Complete login functionality with validation
- Template cache cleared and updated

All critical issues resolved and system ready for production.
2026-01-06 22:52:04 -06:00
3ae4be5957 Primer commit del sistema avantika sin cambios 2026-01-06 19:42:24 -06:00