23 Módulo de Clientes en Laravel CRUD Completo con CI/NIT y Búsqueda Múltiple 👥 Sistema de Farmacia
Duración: 14 minDescripción
👥 Lección 23: Módulo de Clientes en Laravel y Preparación de Datos de Venta
En esta lección, implementamos el módulo de Clientes, completando el conjunto de tablas independientes de nuestro sistema. Con este CRUD y la integración de búsquedas optimizadas por múltiples campos, el software queda listo para interactuar con el futuro módulo de facturación y ventas.
🗂️ 1. Estructura de la Tabla Clientes y Privacidad
El diseño de la base de datos se enfocó en capturar la información comercial estrictamente necesaria, evitando sobrecargar al usuario final.
- Campos Definidos: CI/NIT (campo único para la facturación), Nombre/Razón Social, Correo Electrónico (para el envío de facturas digitales) y Teléfono. [03:23]
- Criterio de Diseño: Se omitió el campo de dirección para agilizar el proceso de registro en caja y proteger la privacidad del cliente. [03:57]
🔍 2. Búsqueda Múltiple en el CRUD
Para garantizar que el cajero o administrador encuentre a un cliente en segundos, implementamos un buscador dinámico en el controlador:
- Filtros en Tiempo Real: El sistema procesa las consultas permitiendo buscar de forma simultánea por Nombre o por CI/NIT, optimizando la experiencia en puntos de venta con alta afluencia. [13:24]
⚙️ 3. El Rol de los Factories en el Ciclo de Desarrollo
Aprovechando las consultas de la comunidad, profundizamos en las buenas prácticas del sembrado de datos:
- ¿Por qué usamos datos falsos?: Los Factories y Seeders sirven para estresar el sistema y evaluar cómo reaccionan las vistas, paginaciones y buscadores cuando la base de datos ya contiene volumen (en este caso, poblada con 20 clientes iniciales). [02:09]
- Entorno Limpio: Al pasar a producción, simplemente se omite la ejecución de los Seeders para entregarle al cliente final un sistema completamente limpio. [02:49]
💬 4. Preguntas de la Comunidad: Trazabilidad vs. Lotes
Durante la lección aclaramos una duda crucial de diseño de software farmacéutico:
- ¿Dónde va la fecha de vencimiento?: En nuestra arquitectura, la fecha de caducidad no pertenece a la tabla estricta de Lotes, sino que se registra en la tabla Inventario. Esto se debe a que un mismo lote físico puede ingresar en diferentes fechas o distribuirse con sutiles variaciones en el stock de compras. [06:25]
🗺️ El Siguiente Gran Desafío: Tablas Relacionadas
Con los módulos de Proveedores, Lotes y Clientes finalizados, cerramos el desarrollo de estructuras "libres".
A partir del próximo capítulo, entraremos a la fase más estricta del sistema: Inventarios y Compras. Aquí empezaremos a conectar todo utilizando llaves foráneas (Foreign Keys), controlando el flujo de stock e ingresos de medicamentos de manera relacional. [13:48]