Este proyecto ha sido estructurado con buenas prácticas de desarrollo para que sirva como una herramienta completamente operativa para negocios reales. Además, ¡es una base genial y muy amigable para que la utilicen como su próximo proyecto de curso universitario o instituto técnico! A continuación, detallo exactamente qué hace cada módulo y la ingeniería que lo respalda.
Stack Tecnológico y Librerías Implementadas
El sistema está construido bajo una arquitectura cliente-servidor clásica, pero rigurosamente optimizada para no sobrecargar la red, utilizando las siguientes tecnologías:
Lenguaje Backend: PHP 8+ estructurado por procedimientos modulares.
Motor de Base de Datos: Microsoft SQL Server (utilizando la extensión
sqlsrvde PHP), con diseño relacional, integridad referencial (Foreign Keys) y soporte para decimales exactos en el inventario.Frontend y UI: HTML5, CSS3 y Bootstrap 5, utilizando un modelo Flexbox para mantener el pie de página (footer) de JASNET Soluciones siempre fijado al fondo de la pantalla.
Iconografía: Bootstrap Icons, elegidos para brindar una apariencia redondeada, moderna y nativa (al estilo de aplicaciones móviles o Flaticon).
Librería de Alertas: SweetAlert2, utilizada para reemplazar los cuadros de diálogo nativos del navegador por ventanas modales elegantes, animadas y no bloqueantes.
Gestión de Tablas: DataTables (jQuery), configurado en español fluido, que otorga búsqueda en tiempo real, paginación automática y ordenamiento de columnas sin recargar la página.
Motor de Exportación: Extensión DataTables Buttons junto con JSZip y pdfmake, que permite renderizar el DOM de las tablas HTML y convertirlas directamente en archivos nativos de Excel y PDF con un solo clic en el navegador del cliente.
Generador de PDFs (Backend): FPDF, librería nativa de PHP encargada de dibujar en el servidor los tickets térmicos de 80mm y las facturas A4 milímetro a milímetro.
Descripción de los Módulos del Sistema
Panel
Qué hace: Es el centro de mando del sistema. Calcula en tiempo real las métricas del día (cuánto dinero ha ingresado hoy y cuántos productos están activos). Divide la interfaz visualmente en tres áreas lógicas: Tareas del Cajero, Control de Inventario y Herramientas del Dueño, facilitando la navegación a usuarios sin experiencia técnica.
Mis Productos
Qué hace: Gestiona la mercadería de la tienda. Permite registrar productos asignando códigos de barras autogenerados, vinculándolos a categorías y Unidades de Medida (Kilos, Gramos, Litros, Unidades). Al eliminar un producto, aplica un "borrado lógico" (cambia el estado a ANULADO) en lugar de un borrado físico, protegiendo así la integridad de las ventas pasadas donde ese producto participó.
Caja Registradora
Qué hace: Es el corazón transaccional del sistema. Utiliza JavaScript (Memoria Local/JSON) para crear un "carrito de compras" virtual. El cajero puede agregar múltiples productos distintos, modificar cantidades y ver el cálculo en pantalla sin hacer ninguna petición a la base de datos. Solo cuando presiona "Cobrar", empaqueta todo el carrito en formato JSON y lo envía al backend, donde PHP realiza un bucle transaccional para insertar los detalles y descontar el stock exacto antes de lanzar el PDF en una pestaña nueva.
Cuadre de Caja Personal
Qué hace: Controla el efectivo físico. Obliga al usuario a declarar su "sencillo" o base inicial para abrir la caja. Durante el turno, suma silenciosamente todas las ventas exitosas. Al finalizar, exige que el cajero cuente su dinero físico y lo declare. El sistema cruza esa información y guarda el historial auditable, mostrando si hubo un faltante o sobrante de dinero. Todo esto administrado a través de pestañas flotantes modernas.
Historial de Ventas
Qué hace: Muestra todos los comprobantes emitidos. Permite reimprimir el PDF de una venta pasada si el cliente lo extravía. Además, cuenta con un motor de anulación: si una venta se registró por error, el administrador puede anularla, y el sistema automáticamente le devuelve el stock a los productos involucrados en esa venta específica.
Personal y Accesos
Qué hace: Permite al administrador crear cuentas para sus empleados, encriptando las contraseñas en la base de datos mediante el algoritmo Bcrypt nativo de PHP. Su característica principal es el Registro de Actividades (Logs), una tabla inmutable donde el sistema graba automáticamente cuándo un usuario abrió la caja, qué vendió, o qué configuración alteró, exportable a Excel para auditorías.
Ajustes del Negocio
Qué hace: Desvincula la información de la empresa del código fuente. Permite modificar el nombre público de la tienda, la moneda, dirección y teléfono desde una interfaz gráfica. Estos datos alimentan automáticamente la cabecera del sistema y los membretes de los PDFs de venta.
Herramienta de Seguridad (Vaciar Sistema)
Qué hace: Un módulo crítico para mantenimiento. Si se ingresa la clave maestra contenida en el archivo oculto clave_reset.txt, ejecuta sentencias DELETE y comandos DBCC CHECKIDENT de SQL Server para borrar todas las transacciones y resetear los contadores a cero, pero manteniendo intactos a los usuarios, la configuración y las categorías.
Escalabilidad: Base para un Sistema de Ventas Avanzado
Es importante destacar que esta versión 1.0 ha sido diseñada pensando en el crecimiento. El código fuente y la estructura de la base de datos están preparados y limpios para que ustedes mismos puedan implementar mejoras orientadas a un sistema de ventas mucho más avanzado.
Sobre esta misma base, pueden escalar el proyecto para agregar:
Módulo de proveedores y cuentas por pagar.
Integración con facturación electrónica.
Manejo de múltiples sucursales y almacenes.
Kardex detallado o control de lotes y fechas de caducidad.
Espero que este desglose técnico les sirva de guía tanto para implementar mejoras en sus negocios como de inspiración para sus propios proyectos académicos, pueden solicitar el codigo fuente a traves de arizolavalladolidgiancarlosjas@gmail.com / +51-939645087