29 Carrito de Compras en Laravel Sistema de Órdenes de Compra con JavaScript Dinámico en el sistema

Duración: 14 min
Módulo: Módulo Compras Lección 6 de 16

Descripción

🚀 Lección 29: Construcción del Carrito de Compras Dinámico con JavaScript y Ajax para nuestro Sistema Farmacéutico

En este capítulo nos sumergimos de lleno en la interactividad del sistema, transformando una vista estática en una experiencia de usuario sumamente ágil y profesional, ideal para el ritmo de trabajo real en una farmacia.

🎯 El Objetivo Central

El propósito de esta lección es estructurar el formulario de creación para las órdenes de compra. Creamos un "carrito temporal" que permite gestionar los productos que se solicitarán a los proveedores, logrando que cada acción se procese de forma interna en el servidor sin que el navegador tenga que recargar la pantalla ni una sola vez.

🛠️ Lo que Desarrollamos en el Controlador

Para dar soporte a esta interfaz dinámica, expandimos la lógica del backend agregando funciones clave envueltas en sistemas de control de errores para garantizar la estabilidad del software:

Carga Inteligente de Datos: Preparamos la vista enviando el listado de sucursales, proveedores y el catálogo de productos. Optimizamos la consulta para traer al mismo tiempo las categorías, laboratorios, formas farmacéuticas y presentaciones de cada medicamento.

Función para Agregar Ítems: Un nuevo método que recibe la información del producto seleccionado e inicializa su registro en la tabla de compras temporales.

🔄 Función para Actualizar Ítems: La lógica encargada de modificar en tiempo real la cantidad, el precio de compra o el precio de venta a medida que el usuario edita la información.

Función para Remover Ítems: Un proceso limpio para dar de baja un producto específico del listado temporal si el usuario cambia de opinión.

🧹 Función para Limpiar el Carrito: El mecanismo para vaciar por completo la orden en desarrollo y empezar desde cero con un solo clic.

🎨 La Magia en la Interfaz y la Experiencia de Usuario

La vista de esta lección cobra vida propia gracias a un robusto script de JavaScript que maneja más de mil líneas de lógica en el frontend, logrando un comportamiento fluido:

🛑 Validación del Flujo de Trabajo: El sistema guía al usuario obligándolo a seleccionar primero la sucursal de destino. Si intenta agregar un producto antes de este paso, una alerta detiene la acción para evitar registros huérfanos.

📊 Cálculo de Utilidades en Tiempo Real: Implementamos una lógica bidireccional en caliente. Si el usuario digita el precio de compra y el de venta, el sistema muestra instantáneamente el porcentaje de ganancia. Si prefiere ingresar directamente el porcentaje de ganancia deseado, el sistema calcula de inmediato el precio de venta sugerido.

⌨️ Fluidez con Lector de Barras y Teclado: Optimizamos la navegación para que al presionar la tecla Enter o Tab, el foco del cursor salte automáticamente al siguiente campo de edición. Esto permite un trabajo continuo con pistolas de código de barras, agilizando la carga en el mostrador.

🗑️ Gestión de Registros Temporales: Toda esta información se almacena de forma aislada en una tabla temporal vinculada al usuario en sesión. De este modo, los inventarios generales y los lotes permanecen intactos hasta que la orden sea confirmada formalmente.

Al terminar este capítulo, el sistema cuenta con una pantalla moderna, interactiva y de alta velocidad, dejando el escenario perfectamente preparado para la consolidación de la compra y el envío automatizado por correo electrónico al proveedor en los próximos videos.