En la operación Administrar Personas, solapa Moodle vas a poder vincular las personas una a una. Este método es bastante tedioso si son muchas las personas que tenes que vincular.
Para la versión 3.18.0 ya tenemos desarrollado un comando para vincular con Moodle de forma masiva. Si necesitas que te adelantemos dicha funcionalidad, crea un GDS y te lo enviamos.
Sí, efectivamente parece que con esto se resolvió.
Nos quedan un par de dudas cruciales con este asunto:
En la vinculación de la comisión Guaraní con la comisión existente en Moodle, ¿cómo funciona la opción de “Matricular alumnos de la comisión”? La ayuda del sistema indica que los matricula “automáticamente”, ¿pero en què momento?
Una vez vinculada manualmente la comisión con el curso virtual, ¿qué sucede si utilizamos la operación “Generar Cursos Virtuales Masivamente”?
En la operación “Generar Cursos Virtuales Masivamente” hemos tenido inconvenientes con algunos alumnos que presentan errores (por duplicación de correo electrónico, por ejemplo). ¿Esto detiene la generación y matriculación completamente o sólo evita la matriculación/actualización de los alumnos que presentaron errores?
Por favor, esta información resulta esencial para que podamos avanzar con las inscripciones, cuanta más data nos puedan brindar al respecto, mejor!
En la vinculación de la comisión Guaraní con la comisión existente en Moodle, ¿cómo funciona la opción de "Matricular alumnos de la comisión"? La ayuda del sistema indica que los matricula "automáticamente", ¿pero en qué momento?
Lo que hace es tomar los alumnos de la comisión de Guaraní, si los mismos ya fueron creados en Moodle solamente los matricula en el curso de Moodle. Si no existen en Moodle, entonces los crea y luego los matricula, al crearlos también los vincula en Guaraní (tabla int_pv_usuarios).
Una vez vinculada manualmente la comisión con el curso virtual, ¿qué sucede si utilizamos la operación "Generar Cursos Virtuales Masivamente"?
No debería hacer nada, porque ya esta vinculado (tablas int_pv_cursos y int_pv_cursos_comisiones).
En la operación "Generar Cursos Virtuales Masivamente" hemos tenido inconvenientes con algunos alumnos que presentan errores (por duplicación de correo electrónico, por ejemplo). ¿Esto detiene la generación y matriculación completamente o sólo evita la matriculación/actualización de los alumnos que presentaron errores?
Detiene el proceso, porque cuando se crean o matriculan los alumnos se hace en lote para reducir el numero de peticiones a la API REST de Moodle, si en ese lote hay algún dato incorrecto o email duplicado falla todo el lote. Igualmente se pueden ver los logs, y saber que persona tiene duplicado el email, o algún otro dato invalido.
Ahora nos saltó el error que adjuntamos cuando realizamos la vinculación de comisión con curso virtual.
¿Qué puede estar pasando? En un rato subiremos los logs correspondientes.
Dale, pasanos los logs:
Logs de Guaraní (instalacion/i__desarrollo/p__guarani/logs/sistema.log).
Logs de Apache (/var/log/apache2/error.log).
El log de la aplicación indica lo siguiente al momento del error:
[DEBUG][guarani] SQL con perfil de datos: SELECT count(mdp_personas.persona) as cant^M
FROM mdp_personas^M
WHERE trim(regexp_replace(translate(mdp_personas.usuario,'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿ','AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuy'), '[ ]{2,}', ' ','g')) ILIKE '17881715'^M
AND mdp_personas.persona <> '3' ^M
[DEBUG][guarani] SQL con perfil de datos: SELECT mdp_personas.persona,
mdp_personas.apellido,
mdp_personas.nombres
FROM mdp_personas
WHERE mdp_personas.usuario = '17881715'
^M
[WARNING][guarani] componente(37000061): guarani_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'usuario_administrador_autogestion' no forma parte de la DEFINICION.^M
[DEBUG][guarani] SQL con perfil de datos: SELECT acc_tipos_usuarios.tipo_usuario,^M
acc_tipos_usuarios.nombre^M
FROM acc_tipos_usuarios^M
WHERE acc_tipos_usuarios.tipo_usuario NOT IN ('Alumno', 'Docente', 'Cursos')^M
AND acc_tipos_usuarios.tipo_usuario = 'Administrador3w'^M
ORDER BY acc_tipos_usuarios.nombre^M
^M
[ERROR][guarani] SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near ")"
LINE 12: ) -- toba_log: 55308
^^M
[DEBUG][toba] ************ ABORTAR transaccion (guarani3@guaraniubadbtest.rec.uba.ar) ****************^M
[DEBUG][guarani] Ocurrió un error al vincular curso en Moodle:^M
[ERROR][guarani] Ha ocurrido un error grabando en la base de datos.^M
[DEBUG][toba] Mensaje a usuario: Falló la vinculación del curso^M
[INFO][toba] componente(89000021): [ evento ] El METODO [ evt__vincular_bis ] no existe - 'vincular_bis' no fue atrapado^M
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio...^M
[DEBUG][toba] componente(37000298): Pantalla de servicio: ''^M
Hola Federico, antes que nada gracias por los logs!!!
El error por lo que veo se da dentro de la función evt__form_vincular__modificacion de la clase php/operaciones/cursadas/comisiones/ci_edi_educacion_virtual.php. El problema es que no puedo detectar que se esta “rompiendo”, probé las queries y funcionan bien (no tienen errores de sintaxis):
SELECT count(mdp_personas.persona) as cant
FROM mdp_personas
WHERE trim(regexp_replace(translate(mdp_personas.usuario,'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿ','AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuy'), '[ ]{2,}', ' ','g')) ILIKE '17881715'
AND mdp_personas.persona <> '3';
SELECT mdp_personas.persona,
mdp_personas.apellido,
mdp_personas.nombres
FROM mdp_personas
WHERE mdp_personas.usuario = '17881715';
SELECT acc_tipos_usuarios.tipo_usuario,
acc_tipos_usuarios.nombre
FROM acc_tipos_usuarios
WHERE acc_tipos_usuarios.tipo_usuario NOT IN ('Alumno', 'Docente', 'Cursos')
AND acc_tipos_usuarios.tipo_usuario = 'Administrador3w'
ORDER BY acc_tipos_usuarios.nombre;
Me podrías enviar el log completo para ver si encuentro mas información.
Hola Federico, antes que nada gracias por los logs!!!
Esta ocurriendo lo siguiente:
En la operación Administración de Comisiones solapa Moodle, estas queriendo vincular una comisión con un curso de Moodle. Pero por lo que veo en los logs, no esta llegando el valor que eligieron en el combo Curso, traza:
Primero se llama a la función evt__form_vincular__modificacion del CI php/operaciones/cursadas/comisiones/ci_edi_educacion_virtual.php. Por lo que veo, no esta llegando el valor de $datos[‘curso’].
Luego se llama a la función insertar_curso_pv de la clase php/nucleo/plataformas_virtuales/act_plataformas_virtuales_nucleo.php, pero no le llega el valor en $id_curso_externo, por eso da error la query:
INSERT INTO int_pv_cursos
(
plataforma,
nombre,
id_curso_externo
)
VALUES
(
1,
'No aplica',
)
[ERROR][guarani] SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near ")"
Pregunta, que valor eligieron en el combo Curso? tiene valores?
Desde ya, asignamos el curso que corresponde de Moodle, vinculado a través del docente cargado en ambos sistemas. Adjuntamos la captura con la data.
El error surge al clickear “Vincular”.
Hay un bug por lo que veo, te digo como solucionarlo:
En la función evt__form_vincular__modificacion de la clase php/operaciones/cursadas/comisiones/ci_edi_educacion_virtual.php, cuando invoca a la función insertar_curso_pv debería quedar así:
Función vincular_curso_virtual de la clase src/siu/modelo/transacciones/cursos_virtuales.php, donde se invoca la función insertar_curso_pv debería quedar así:
Molestamos ahora con lo siguiente: logramos realizar la vinculación y comenzamos la matriculación en los cursos virtuales a través del módulo Moodle de “Administrar Comisión”.
Cuando actualizamos la matrícula nos salta un error de que falló el proceso debido a un error, indicando que probablemente se deba a e-mails repetidos de alumnos.
¿Existe un log en el que figuren los casos específicos de duplicación que están afectando al proceso? ¿O se toma en cuenta toda la base de personas de Guaraní?
Si, en los logs de Guaraní (instalacion/i__desarrollo/p__guarani/logs/sistema.log) se guarda información de debug sobre lo que se le esta enviando al WS de Moodle. En los mismos busca la frase “Usuarios a crear en Moodle”, y debajo de esa frase esta el array de usuarios que se les envió a Moodle.
Para ver lo que responde Moodle, se puede buscar la frase “Response”.
Tenemos la siguiente situación. Avanzamos con la limpieza de mails duplicados en Guaraní (verificamos la tabla mdp_personas_contactos y no queda ningún duplicado en esa tabla), no obstante al intentar la sincronización de alumnos con el curso virtual (desde “Administrar Comisiones”), el sistema devuelve que la matriculación en Moodle falló debido probablemente a duplicación en la asignación de mails (adjuntamos la pantalla).
Adjuntamos el log completo al momento de surgir el error que te comentábamos. Dentro del log nos llama particularmente la atención el siguiente mensaje:
-o-o-o-o-o-
Fecha: 21-03-2020 03:20:56
Operacion: Administrar Comisiones
Usuario: toba
….
[DEBUG][toba] Mensaje a usuario: Falló la actualización de alumnos en Moodle. <b>Posibles Causas:</b> Alumnos con el mismo email asignado.
[INFO][toba] componente(37000315): [ registrar_evento ] El METODO [ evt__editor_educacion_virtual__actualizar_alumnos ] no existe - 'actualizar_alumnos' no fue atrapado
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio...
Por favor, apenas tengan novedades, avísennos!
Muchas gracias!
Saludos,
Federico
EDIT: Se eliminan los llogs adjuntos por contener información sensible.
¿Qué sucede si tenemos en la base de Personas algún usuario sin mail asignado?
¿Y si justo estas personas sin mail asignado pertenecen al grupo de alumnos inscriptos a la comisión que queremos matricular en los cursos virtuales?
Si hay personas sin email definido, entonces no matricula a ningún alumno de esa comisión en Moodle, y muestra en pantalla el siguiente mensaje:
El/Los alumnos/s Juan Perez, Jose Sito no tiene/n email asignado, por lo tanto no puede/n ser matriculados en Moodle.
Hola Federico, antes que nada gracias por los logs!!!
En los mismos, debajo de donde dice “Usuarios a crear en Moodle:” vas a ver toda la estructura que se la esta enviando a Moodle. El inconveniente es que son mas de 294, y en los logs aparece cortado dicho array.
Viendo el error devuelto por Moodle, el mismo no nos brinda mucha información:
[DEBUG][guarani] Response:
[DEBUG][guarani] array (
'exception' => 'invalid_parameter_exception',
'errorcode' => 'invalidparameter',
'message' => 'Detectado valor de parámetro no válido',
)
También viendo los usuarios que se envían a Moodle, no vi ninguno con datos inválidos (revisando a ojo), habría que ver el resto que no se muestra en los logs si tienen datos inválidos.
Igualmente probemos con lo siguiente, en la función actualizar_alumnos_moodle de la clase php/operaciones/cursadas/comisiones/ci_edi_educacion_virtual.php linea 154 reemplaza esto: