Gestión de Clientes

Administración completa del módulo de clientes. Los clientes se obtienen de la tabla client complementada con información de la tabla user.

Ver Lista de Clientes

La lista de clientes muestra todos los usuarios registrados como clientes en el sistema con información relevante:

  • ID del cliente

  • Email (desde tabla user)

  • Nombre para mostrar (display_name desde tabla user)

  • Tipo de cliente

  • Estado de verificación de email

  • ID de usuario (OAuth2 local IdP)

Crear Cliente

Para crear un nuevo cliente:

  1. Accede a la sección "Clientes"

  2. Haz clic en "Nuevo Cliente"

  3. Completa el formulario con los datos requeridos:

    • Identificador IdP (local_id): opcional si proporcionas email

    • Email: Dirección de correo electrónico del usuario (opcional si proporcionas User ID)

    • Tipo de Cliente: Selecciona el tipo de cliente

  4. Guarda los cambios

Usuarios existentes en el IdP

El sistema maneja automáticamente usuarios que ya existen en OAuth2 local:

  • Si proporcionas un email: verifica si el usuario existe en el IdP

  • Si existe: busca user_id en PostgreSQL por local_id

  • Si no existe en BD: crea o vincula el registro user

  • Si no existe en IdP: crea usuario en OAuth2 local con el email indicado

Nota: puedes indicar email o local_id del IdP; no uses terminología de proveedores externos.

Editar Cliente

Los datos de los clientes pueden ser actualizados desde el panel de administración:

  1. Selecciona el cliente a editar

  2. Haz clic en "Editar"

  3. Modifica el tipo de cliente (el user_id no se puede modificar)

  4. Guarda los cambios

Eliminar Cliente

Los clientes pueden ser eliminados siguiendo las políticas de retención de datos:

  1. Selecciona el cliente

  2. Haz clic en "Eliminar"

  3. Confirma la eliminación

La eliminación borra la fila del usuario en la tabla user (rol client).

No se elimina la cuenta en OAuth2 local IdP si existe allí; solo el registro en PostgreSQL.

Cuándo no se puede eliminar (409)

El sistema rechaza la eliminación si el cliente tiene dependencias bloqueantes:

  • Reservas asociadas como cliente (reservation.client_id)

  • Reservas donde figura como operador (reservation.operator_id)

  • Sesiones de caja como cajero (till.cashier_id)

  • Inscripciones con pagos registrados

En esos casos el panel muestra un toast con el motivo concreto (mensaje del API con viñetas cuando hay varios bloqueos). Debes resolver las dependencias antes de volver a intentar.

Búsqueda y Filtros

Utiliza las herramientas de búsqueda para encontrar clientes:

  • Por email (búsqueda en tabla user)

  • Por nombre para mostrar (display_name)

  • Por tipo de cliente

Paginación

La lista de clientes incluye paginación con 50 registros por página. Puedes navegar entre páginas usando los controles de paginación en la parte inferior de la lista.

Gestión de Tipos de Cliente

Los tipos de cliente definen categorías especiales:

  • Cliente Regular: Cliente estándar sin beneficios especiales

  • Cliente VIP: Cliente con beneficios y prioridades especiales

  • Cliente Corporativo: Cliente empresarial con tarifas especiales

  • Cliente Promocional: Cliente con descuentos o promociones activas

Asignar Tipo de Cliente

Para asignar o cambiar el tipo de cliente:

  1. Selecciona el cliente

  2. Haz clic en "Editar"

  3. Selecciona el nuevo tipo de cliente

  4. Guarda los cambios

El tipo de cliente puede afectar las tarifas aplicadas y los beneficios disponibles.

Verificación de Datos

Verificar Información del Cliente

Es importante mantener la información de clientes actualizada:

  • Email verificado: Indica si el cliente ha confirmado su email

  • Datos completos: Verifica que toda la información esté completa

  • Contacto actualizado: Confirma que los datos de contacto sean correctos

Actualizar Información desde User

La información básica del cliente (nombre, email) proviene de la tabla user. Si necesitas actualizar esta información:

  1. El cliente debe actualizar su perfil desde la aplicación

  2. O un super usuario puede actualizar la información en la tabla user

  3. Los cambios se reflejarán automáticamente en la vista de clientes

Mejores Prácticas

  • Mantén datos actualizados: Revisa regularmente la información de clientes

  • Verifica tipos de cliente: Asegúrate de que los tipos estén correctamente asignados

  • Documenta cambios: Toma notas sobre cambios importantes en la información de clientes

  • Respeta privacidad: Maneja la información de clientes con confidencialidad

  • Coordina con operadores: Comunica cambios relevantes al equipo operativo

Solución de Problemas

Cliente No Aparece en la Lista

Si un cliente no aparece:

  • Verifica que el cliente esté registrado en OAuth2 local IdP

  • Confirma que exista un registro en la tabla user

  • Verifica los filtros aplicados

  • Contacta al super usuario si el problema persiste

Error al Crear Cliente

Si hay error al crear un cliente:

  • Código 400 (Bad Request): Solicitud mal formada

  • Verifica que el user_id sea un número válido (si se proporciona)

  • Verifica que el formato del email sea correcto

  • Asegúrate de proporcionar user_id o email (al menos uno es requerido)

  • Verifica que el usuario exista en la base de datos si proporcionas user_id

  • Código 409 (Conflict): Conflicto de recursos

  • "El email ya está en uso" - El email ya está registrado en OAuth2 local IdP

  • "El teléfono ya está en uso" - El teléfono ya está registrado en el sistema

  • "El usuario ya es cliente" - El usuario ya tiene un registro de cliente activo

  • "El usuario no puede convertirse en cliente" - El usuario tiene roles que impiden ser cliente

  • Otros errores:

  • Verifica que el local_id del IdP sea correcto (si se proporciona)

  • Confirma que el usuario exista en OAuth2 local IdP (si se proporciona email)

  • Asegúrate de que no haya un cliente duplicado

  • Revisa que todos los campos requeridos estén completos

Códigos de Estado HTTP

El sistema utiliza códigos de estado HTTP estándar para indicar el resultado de las operaciones:

  • 200 OK: Operación exitosa

  • 400 Bad Request: Solicitud mal formada (datos inválidos, formato incorrecto)

  • 409 Conflict: Conflicto de recursos (email/teléfono en uso, usuario ya es cliente)

  • 404 Not Found: Recurso no encontrado

  • 500 Internal Server Error: Error interno del servidor

Los códigos 409 se utilizan específicamente para conflictos de recursos, mientras que 400 se usa para solicitudes mal formadas.