23 Módulo de Clientes en Laravel CRUD Completo con CI/NIT y Búsqueda Múltiple 👥 Sistema de Farmacia

Duración: 14 min
Módulo: Módulo Lotes y Clientes Lección 2 de 2

Descripció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]