Clientes
Empresas cliente como cohortes cli_*, sus módulos, sus usuarios, los códigos de registro, el autorregistro y la expiración del acceso.
La capacitación externa se organiza por empresas cliente. La lógica está en classes/clients.php; la pantalla es clients.php (barra superior "Clientes") y el autorregistro, clientsignup.php.
Modelo
| Elemento | Implementación |
|---|---|
| Empresa | Cohorte de sistema con idnumber cli_ + 10 caracteres (clients::PREFIX). El nombre debe ser único entre las empresas. |
| Datos de la empresa | Tabla local_deltamodules_client (una fila por cohorte): razón social, RUC, nombre comercial, sector, dirección, ciudad, teléfono, correo, contacto y su cargo, teléfono y correo, inicio, acceso hasta (fin), activa y notas. Los campos editables y sus etiquetas están en clients::FIELDS. |
| Usuarios | Miembros de la cohorte de la empresa y, además, de la cohorte general "Clientes" (clientes), para que Personal Deltamontero los muestre como tipo Cliente. |
| Módulos | Matrícula por cohorte (rol student, nombre de instancia "Cliente") en cada curso asignado. Se puede asignar cualquier curso menos PTS. |
| Códigos de registro | Tabla local_deltamodules_clientcode: código CL-XXXXX, vencimiento (0 = no vence, al final del día), usos máximos (0 = sin límite), usos, anulado y nota. |
API de clients
| Método | Qué hace |
|---|---|
all(), get($id) | Empresas con conteos (usuarios, módulos, códigos vigentes), datos y si está activa. get valida que la cohorte sea cli_*. |
create($name, $note), update(...) | Crear o renombrar una empresa. |
data($cohortid), save_data($cohortid, $in) | Leer (creando la fila vacía si falta) y guardar los datos. |
is_active($cohortid) | Activa y dentro de su fecha de acceso. |
set_active($cohortid, $on) | Desactivar suspende a todos sus usuarios y cierra sus sesiones; activar los reactiva (y borra una fecha de acceso ya vencida). El avance se conserva. |
set_user_active($cohortid, $userid, $on) | Suspender o reactivar a una persona de la empresa. |
expire() | Desactiva las empresas cuya fecha fin pasó. La ejecuta la tarea diaria client_expiry. |
delete($id) | Elimina la empresa completa: suspende al instante a sus usuarios (en tandas de 500) y encola la tarea ad hoc delete_client_users para borrarlos en segundo plano; quien también pertenece a otra empresa solo sale de esta. Borra instancias de matrícula, códigos, datos y la cohorte. |
courses(), assigned($cohortid), set_modules($cohortid, $courseids) | Cursos asignables, asignados, y dejar asignados exactamente los indicados. |
members, company_of, add_user, remove_user | Usuarios de la empresa y empresas de un usuario. |
progress($cohortid) | Porcentaje de avance de cada usuario en cada módulo de la empresa (core_completion\progress). |
codes, code_state, generate_code, revoke_code, valid_code | Códigos: estados activo, vencido, usado, anulado. Un código solo es válido si está activo y la empresa también. |
message($company, $k) | Texto listo para enviar con el enlace y el código. |
register($code, $d) | Crea la cuenta (usuario = correo en minúsculas, cédula en idnumber, contraseña elegida), la agrega a la empresa, suma un uso al código, sincroniza matrículas y envía el correo clientwelcome. |
Autorregistro: clientsignup.php
Página pública (enlazada desde la portada y la pantalla de ingreso). Paso 1: el código de la empresa. Paso 2: nombres, apellidos, cédula, correo y contraseña; se crea la cuenta y entra directo. Después entra siempre con su correo (el sitio permite iniciar sesión con el correo, authloginviaemail = 1). Límite anti-abuso: 10 envíos fallidos por equipo cada 30 minutos. Al entrar, Moodle le pide aceptar el aviso de datos personales como a todos.
Pantalla clients.php
Capacidad local/deltamodules:manageclients (por perfil, solo el Jefe de Talento Humano; y el super administrador). Pestañas en el orden de trabajo: 1 Datos → 2 Módulos → 3 Código de registro → 4 Usuarios y avance. Sin pestaña elegida abre el primer paso que falta. Desde Códigos se puede enviar el código por correo (mailer::client_code, tipo clientcode).
Tareas
| Tarea | Tipo | Cuándo | Qué hace |
|---|---|---|---|
local_deltamodules\task\client_expiry | Programada | Todos los días a la 01:30 | clients::expire() |
local_deltamodules\task\delete_client_users | Ad hoc | Al eliminar una empresa | Borra con delete_user() las cuentas indicadas, salvo super administradores y quien, mientras tanto, pertenezca a otra empresa cli_* o tenga una cohorte cargo_*. |
Equipos
Equipos de seguimiento (líder e integrantes) con el rol "Líder de equipo" asignado en contexto de usuario, la página team.php y la tarjeta del Área personal.
Correo de la Academia
Cola de envío con límites para Office 365 (mailer), tipos de correo, enlaces de un solo uso para crear contraseña, tarea send_mail y página de administración.