32 Edición de Órdenes de Compra en Laravel Carrito Dinámico y Buscador Avanzado 🛒Sistema de Farmacia
Duración: 18 minDescripción
🚀 Lección 32: Edición de Órdenes de Compra con Carrito Dinámico y Recálculo en Tiempo Real
En este capítulo abordamos uno de los retos arquitectónicos más interesantes de nuestro sistema farmacéutico: la modificación de órdenes de compra pendientes. En lugar de crear un formulario de edición estático y aburrido, replicamos la experiencia del carrito dinámico, permitiendo alterar el pedido directamente sobre los registros reales de la base de datos sin recargar la página.
🎯 El Objetivo Central
El propósito de esta lección es estructurar las rutas, controladores y lógica de frontend necesarios para editar una orden de compra existente. Aprendemos a cargar la información guardada de un pedido, habilitar el buscador avanzado para añadir nuevos medicamentos y programar el recálculo automático de los costos financieros globales cada vez que se agregue, actualice o elimine un producto.
🧭 El Nuevo Bloque de Rutas Operativas
Para no mezclar las aguas con el módulo de compras temporales, diseñamos un conjunto de rutas totalmente independiente en el servidor. Estas nuevas rutas apuntan directamente al identificador de la compra generada y controlan las acciones en caliente:
➕ Inclusión de Último Momento: Una ruta para añadir nuevos medicamentos a la lista de una orden que ya había sido cerrada.
🔄 Modificación de Renglones: Una ruta encargada de actualizar las cantidades o costos estimados directamente en las filas del pedido original.
❌ Depuración del Pedido: Rutas dedicadas para remover un artículo específico de la lista o vaciar por completo el desglose si se decide cancelar todos los ítems para reestructurar la orden.
🧠 Lógica en el Backend y Sincronización de Tablas
A nivel de controladores, el flujo migra de la tabla temporal a las tablas transaccionales definitivas, implementando una arquitectura en espejo:
📊 El Método de Edición: Al cargar la pantalla, recuperamos la cabecera de la compra con todas sus relaciones anidadas y enviamos el desglose de los productos ordenados secuencialmente. Esto permite que el formulario se pinte con los datos del proveedor, la sucursal y los medicamentos previamente guardados.
⚙️ Métodos del Desglose Real: Programamos las funciones en el backend para que impacten directamente sobre el modelo de detalles de compra. Si el usuario añade un producto, este se inserta en la base de datos vinculado al ID de la compra matriz con valores en cero, quedando listo para ser editado.
🧮 Función de Recálculo Global: Implementamos un método matemático interno en el servidor. Cada vez que una fila del detalle se altera, se elimina o se agrega, esta función se dispara automáticamente para sumar los subtotales de cada renglón y actualizar el monto financiero total en la cabecera de la compra, manteniendo la consistencia del dinero en todo momento.
🎨 Experiencia de Usuario e Interactividad en Caliente
La interfaz de edición es una obra de arte visual que hereda la potencia de JavaScript y Ajax para ofrecer respuestas instantáneas en el mostrador:
🎯 Carga Precargada Dinámica: El sistema detecta automáticamente qué sucursal y proveedor se eligieron, bloqueando o liberando los controles según corresponda, y lista los productos vigentes en la tabla inferior.
⚡ Inserciones y Modificaciones Invisibles: El usuario puede usar el buscador avanzado o el lector de códigos de barras para anexar medicamentos. Al cambiar una cantidad o un precio, el sistema guarda los cambios internamente de inmediato y calcula el nuevo margen de ganancia bidireccional en la pantalla.
🧹 Control y Vaciado Completo: Al probar la función de limpieza, el sistema elimina todas las filas del desglose y actualiza el costo de la cabecera a cero. Como regla de negocio inteligente, el botón principal de confirmación se deshabilita automáticamente si el carrito se queda vacío, evitando que se guarden órdenes sin productos.
Al concluir este capítulo, los estudiantes dominarán la gestión avanzada de relaciones de datos en caliente y el uso de Ajax para alterar estructuras complejas de bases de datos, logrando una herramienta administrativa flexible y de nivel profesional para la farmacia. ¡En el próximo video cerraremos el ciclo del módulo con la función de eliminación!
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️