Hoy quiero compartir una mejora importante implementada en uno de mis módulos de mantenimiento interno: la asignación dinámica de productos internos a empleados, completamente integrada con CodeIgniter 4, DataTables Server-Side y una arquitectura escalable basada en controladores limpios y métodos reutilizables.
Este cambio simplifica el control operativo dentro del sistema y habilita una administración más clara y eficiente entre productos y personal. Aquí te cuento cómo quedó y por qué la solución es tan efectiva.
🎯 ¿Cuál era el objetivo?
Empresas que manejan productos internos suelen tener un problema común:
¿Qué empleados tienen asignado qué producto?
Antes la gestión se hacía de forma manual, lo cual era lento, propenso a errores y nada práctico.
La meta era:
- ✔ Mostrar todos los empleados
- ✔ Señalar si tienen o no asignado un producto (ON/OFF)
- ✔ Permitir activar o desactivar la asignación con un clic
- ✔ Mantener todo sincronizado con DataTables server-side
- ✔ Evitar duplicados y mantener la base limpia
🧩 La solución implementada
1. Nueva tabla pivote: productsEmployes
Registra las asignaciones entre productos y empleados.
id | idProduct | idEmploye | created_at | updated_at | deleted_at
Una tabla limpia, auditada y optimizada para relaciones N:N.

2. Endpoint server-side para DataTables
El método ctrDatatableProductsEmployes() hace lo siguiente:
- 🔹 Recibe el idProduct
- 🔹 Obtiene automáticamente el idEmpresa del producto
- 🔹 Lista empleados que pertenecen a esa empresa
- 🔹 Calcula si cada empleado tiene asignado el producto (ON/OFF)
- 🔹 Soporta búsqueda, orden y paginación
- 🔹 Devuelve JSON compatible con DataTables

💡 Resultado: un DataTable rápido, preciso y escalable.
3. Endpoint para alternar asignación ON/OFF
Con el método toggleEmployeProduct() se controla la asignación:
- ✔ Si la asignación no existe → se inserta
- ✔ Si ya existe → se elimina
- ✔ Respuesta JSON simple y rápida
Todo esto sin recargar página, con una UX fluida y sin duplicados.

4. Interfaz visual con botones ON/OFF
En la vista se implementaron botones:
- 🟢 ON en verde
- 🔴 OFF en rojo
Cada clic es enviado por AJAX y la tabla se actualiza automáticamente.
🔥 ¿Qué beneficios aporta?
- ✔ Velocidad operativa: Asignaciones con un solo clic.
- ✔ Cero duplicados: El sistema valida antes de insertar o eliminar.
- ✔ Escalable: Lista para ampliarse sin cambiar la base.
- ✔ UX intuitiva: Interfaz clara y visual.
- ✔ Integración CI4: Arquitectura limpia y mantenible.
🌟 Conclusión
Este módulo transforma la manera de gestionar productos internos en las empresas. Lo más importante: queda construido sobre una arquitectura clara, modular y fácil de extender, ideal para cualquier sistema administrativo o ERP desarrollado en PHP/CodeIgniter.
Si deseas ver el código completo, la arquitectura o adaptarlo a tu proyecto, puedo ayudarte a integrarlo o extenderlo.
Deja un comentario