45 Módulo de Ventas en Laravel Estructura Profesional con Carrito, Historial y Trazabilidad 🛒📊
Duración: 19 min¡Contenido Exclusivo!
Adquiere este curso para tener acceso inmediato a esta y a **todas las lecciones Premium**.
Inscribirse Ahora por $10.00 Acceso instantáneo de por vida y código fuente incluido.Descripción
🚀 Lección 45: Módulo de Ventas en Laravel: Estructura Profesional con Carrito, Historial y Trazabilidad
En este capítulo inauguramos formalmente el Módulo de Ventas, la piedra angular de nuestro sistema de farmacia. Diseñamos y creamos mediante la terminal la arquitectura de base de datos para soportar el flujo comercial, alcanzando un total de 37 tablas interconectadas y altamente escalables.
🎯 El Objetivo Central
Crear los modelos, controladores y archivos de migración necesarios para estructurar el ecosistema de ventas, implementando una lógica de persistencia histórica (desnormalización) para proteger los reportes contables del negocio.
🗄️ Arquitectura y Diseño de las 4 Nuevas Tablas
Escribimos y configuramos los campos clave en las migraciones de Laravel para dar vida a la lógica de negocio:
- 🛒 ventas_tmp (Carrito Temporal): Funciona como la base del carrito de compras. Vincula el usuario_id del cajero con el inventario_id de los medicamentos y almacena la cantidad solicitada sin alterar el stock real hasta que se consolide el pago.
- 💰 ventas (Cabecera de Venta): Almacena el registro maestro de la transacción consolidada, amarrando el sucursal_id, cliente_id, usuario_id, la fecha_venta, el total_venta, el estado de la transacción y el tipo_pago (efectivo, tarjeta, transferencia o mixto).
- 📦 venta_detalles (Detalle de Venta): Guarda el desglose de los productos despachados en cada operación, asociando el venta_id, inventario_id, la cantidad vendida y el precio_venta_unidad facturado.
- 📜 venta_historiales (Historial Inmutable - Campo JSON): La joya técnica del módulo. Esta tabla desnormaliza los datos copiando el nombre del cliente, el nombre de la sucursal, los totales y un campo detalles en formato JSON. De esta forma, si un producto o sucursal cambia de nombre en el futuro, la venta del pasado permanece intacta y fidedigna para auditorías.
💻 Consolidación y Migración del Ecosistema
Ejecutamos en la terminal una limpieza y siembra controlada de datos para validar la consistencia de las llaves foráneas:
- Usamos el comando php artisan migrate:fresh --seed para regenerar los esquemas desde cero y precargar los usuarios administradores junto con las configuraciones base de las sucursales.
Al finalizar esta lección, los estudiantes comprenderán cómo diseñar bases de datos robustas capaces de mitigar el impacto de modificaciones posteriores en catálogos vivos. ¡En el próximo capítulo daremos el salto al frontend configurando las rutas y la interfaz del panel de ventas!
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! ❤️