Buenos días:
Estamos con la versión 3.21 y en proceso de inscripciones a materia. En numerosos casos, los estudiantes nos informan de este problema (se adjunta captura). ¿Podrán asistirnos con la solución? Saludos y muchas gracias.
Buenos días:
Estamos con la versión 3.21 y en proceso de inscripciones a materia. En numerosos casos, los estudiantes nos informan de este problema (se adjunta captura). ¿Podrán asistirnos con la solución? Saludos y muchas gracias.
Hola Pablo,
Nos podrías enviar el log al momento del error, en la carpeta instalacion/log si buscas el mensaje de error de la captura seguro lo encontras.
Veo en su nodo de colab que no tienen personalizaciones.
¿tendrás personalizaciones que no estén subidas a colab?
La función lista_comisiones de src/siu/modelo/datos/db/inscripcion_cursada.php de llama desde la función info__lista_comisiones de src/siu/modelo/datos/estrategias/inscripcion_cursada.php, el parámetro que falta pasar es inicial_apellido el cual se carga desde datos_basicos de src/siu/modelo/datos/db/persona.php, inicial_apellido es básicamente la primer letra del apellido de la persona:
upper(substring(p.apellido,1,1)) as inicial_apellido,
Revisa de no tener personalizada ninguna de esas funciones.
saludos.
2
Leonel:
Muchas gracias por tu respuesta. No tenemos personalizaciones en el 3W y la función esa no fue tocada para nada.
Al tiempo que iban cayendo los casos encontramos la siguiente solución:
Luego de esto le pedíamos a la persona que pruebe, y nos informaban que entonces podían inscribirse correctamente.
Llegamos a la conclusión que hay un problema con los datos en las personas, datos que no fueron tocados para nada ni antes ni después de la migración.
Esperamos que esta respuesta ayude en la búsqueda de la solución.
Saludos y gracias
Hola Pablo,
¿puede ser que dichos alumnos tengan espacios a la izquierda del apellido?
Podes revisarlo con la siguiente query:
SELECT persona, apellido, nombres FROM mdp_personas WHERE LEFT(apellido, 1) = ' ';
En caso de serlo proba reemplazar en la función datos_basicos de src/siu/modelo/datos/db/persona.php lo siguiente:
Reemplaza esto:
upper(substring(p.apellido,1,1)) as inicial_apellido,
por esto:
UPPER(LEFT(TRIM(p.apellido), 1)) AS inicial_apellido,
Contame si con eso se soluciona.
saludos.
2
Leonel:
Gracias. Vamos a chequear esto y te mantenemos al tanto.
Saludos
Hola, en nuestro caso este problema se producía cuando la persona tiene un documento principal tipo 1 (temporario para argentina o general para otros países), la razón del falló es que éste tipo de documento no esta presente en la tabla mdp_tipo_documento_pais y esto produce que la consulte no retorne registros.
Solución 1: Cambiar el tipo de documento a DNI o CUIL del documento principal de la persona.
Solución 2: Insertar el (tipo,país) en la tabla mdp_tipo_documento_pais.
Solución 3: personalizar el metodo “function datos_basicos($parametros)” de la clase “…/modelo/datos/db/persona.php” y modificar la consulta en la linea
JOIN mdp_tipo_documento_pais ON (td.tipo_documento = mdp_tipo_documento_pais.tipo_documento AND doc.pais_documento = mdp_tipo_documento_pais.pais )
y reemplazar por:
LEFT JOIN mdp_tipo_documento_pais ON (td.tipo_documento = mdp_tipo_documento_pais.tipo_documento AND doc.pais_documento = mdp_tipo_documento_pais.pais )
German, gracias por la respuesta.
Podes verificar si tenes otros casos como el que planteaste, que debas agregar el tipo de documento para el pais que falta:
select distinct pd.pais_documento, pd.tipo_documento
from mdp_personas as p
join mdp_personas_documentos as pd ON pd.documento = p.documento_principal
except
select pais, tipo_documento from mdp_tipo_documento_pais
Hola German, agrego a lo de Ale:
En error CATALOGO: inscripcion_cursada / lista_comisiones - FALTA PARAMETRO: inicial_apellido al querer inscribirte a una materia lo da porque no se cargaron los datos básicos de la persona (función datos_basicos de src/siu/modelo/datos/db/persona.php). Seguramente se rompa en otros lugares.
¿puede ser que arriba a la derecha no se muestra el nombre y apellido de la persona?
En problema es que seguramente la persona tiene asignado un DNT (Doc. Nac. de Identidad Temporario), pero el mismo no esta asociado al país de dicha persona.
¿que te devuelven las siguientes queries?
SELECT * FROM mdp_personas_documentos WHERE persona = <PERSONA>;
SELECT * FROM mdp_tipo_documento_pais WHERE pais = 54;
El país 54 es Argentina
El tipo DNT (Doc. Nac. de Identidad Temporario) se quito para Argentina en las ultimas versiones, ¿ustedes en que versión están?
Nos podrías enviar los logs al momento del error (carpeta instalacion/log).
saludos.
2
Hola, estamos en la versión 3.21.0
“¿puede ser que arriba a la derecha no se muestra el nombre y apellido de la persona?”
No, el nombre sale de forma normal. Hasta ahora solo afecta la operación de “inscripción a materias”
“¿Qué te devuelven las siguientes queries?”
La persona es de Brasil (Alumno de intercambio) y el país de la persona coincide con el del documento (General - Brasil).
Para Argentina (54) solo hay dos tipos de documentos definidos 0 - DNI y 3 - CUIL/CUIT (ver BD/Datos/_nucleo/Datos/mdp_tipo_documento_pais.dca).
Nota: no agregamos ningún país nuevo a la tabla, personalizamos la clase persona.php y agregamos el “LEFT JOIN” a la consulta en lugar del “JOIN” (o su equivalente INNER JOIN en postgresql)
clase: siu\errores\error_guarani
mensaje: : CATALOGO: inscripcion_cursada / lista_comisiones - FALTA PARAMETRO: inicial_apellido
traza: [TRAZA]
—[ 0 ]-----------------------------------------
—[ 1 ]-----------------------------------------
—[ 2 ]-----------------------------------------
—[ 3 ]-----------------------------------------
—[ 4 ]-----------------------------------------
—[ 5 ]-----------------------------------------
—[ 6 ]-----------------------------------------
—[ 7 ]-----------------------------------------
—[ 8 ]-----------------------------------------
—[ 9 ]-----------------------------------------
—[ 10 ]-----------------------------------------
########################################################################################################################
NOTICE
Archivo: …/src/siu/modelo/entidades/persona.php
Linea: 150
Undefined index: inicial_apellido
Saludos.
Hola German,
Quise reproducir el caso pero me funciona bien, te cuento lo que hice:
Cree una persona con el País de Origen: Brasil y el documento con el País: Brasil, Tipo: Registro General y Número: 32852963 (el numero igual mucho no interesa).
Inscribí a la persona en una propuesta de grado.
Lo inscribí a cursada y no me da error alguno.
Para mi es un problema de datos:
¿que te devuelve la siguiente query?
SELECT * FROM mdp_tipo_documento_pais WHERE pais = 55; -- Brasil
Deberías tener el Registro General para Brasil, ver aquí.
Desde la versión 3.21.0 se hace un ajuste, ver aquí.
¿lo habrán eliminado a mano? podes ejecutar la siguiente query si tenes auditoria activo:
SELECT *
FROM negocio_auditoria.logs_mdp_tipo_documento_pais
WHERE pais = 55
AND tipo_documento = 0
ORDER BY auditoria_fecha;
¿se ejecuto el diferencial BD/Diferenciales/3.21.0/001650.sql?
SELECT * FROM app_versiones_base WHERE ultimo_script_corrido ILIKE '%001650.sql%';
No, el nombre sale de forma normal. Hasta ahora solo afecta la operación de "inscripción a materias"Claro, eso porque agregaste el [b]LEFT JOIN[/b] en la función [b]datos_basicos[/b] de [b]src/siu/modelo/datos/db/persona.php[/b], sino se rompería.
Nota: no agregamos ningún país nuevo a la tabla, personalizamos la clase persona.php y agregamos el "LEFT JOIN" a la consulta en lugar del "JOIN" (o su equivalente INNER JOIN en postgresql)Si, pero anda a la operación [b]Tramites >> Boleto Estudiantil[/b], vas a ver que [b]Tipo de documento[/b] y [b]Número de documento[/b] están vacíos, el [b]LEFT JOIN[/b] trae datos de la personas pero no esta encontrando datos del documento.
saludos.
4
Hola.
“Quise reproducir el caso pero me funciona bien, te cuento lo que hice:”
Si, si lo creas en esta versión, el documento es tipo 0, el problema es cuando es un tipo 1. Evidentemente se trata de casos que quedaron de alguna versión anterior.
“SELECT * FROM mdp_tipo_documento_pais WHERE pais = 55;”
pais|tipo_documento| default_alta_persona| activo| exp_regular_validacion| exp_regular_mensaje| descripcion| desc_abreviada
55|90|“N”|“S”||||
55|21|“N”|“S”||||
55|0|“S”|“S”|||“Registro General”|“RG”
No hay tipo 1
“…, el LEFT JOIN trae datos de la personas pero no esta encontrando datos del documento.”
En la consulta en cuestión, los datos de la tabla mdp_tipo_documento_pais se utilizan solo en dos campos:
COALESCE(mdp_tipo_documento_pais.descripcion, td.descripcion) as tipo_documento_desc ,
COALESCE(mdp_tipo_documento_pais.desc_abreviada, td.desc_abreviada) as tipo_documento_desc_abreviada,
si el valor no esta presente en la tabla mdp_tipo_documento_pais lo obtiene de mdp_tipo_documento, siempre que la consulta devuelva un fila
Fe de erratas: El nombre del usuario no se muestra cuando se produce el error.
Saludos.
Hola German, te respondo:
Si, si lo creas en esta versión, el documento es tipo 0, el problema es cuando es un tipo 1. Evidentemente se trata de casos que quedaron de alguna versión anterior.
Si la persona es de Brasil NO puede tener el tipo de documento 1 que es Doc. Nac. de Identidad Temporario (DNT).
SELECT * FROM mdp_tipo_documento WHERE tipo_documento = 1;
"SELECT * FROM mdp_tipo_documento_pais WHERE pais = 55;" pais|tipo_documento| default_alta_persona| activo| exp_regular_validacion| exp_regular_mensaje| descripcion| desc_abreviada 55|90|"N"|"S"|||| 55|21|"N"|"S"|||| 55|0|"S"|"S"|||"Registro General"|"RG" No hay tipo 1
¿que tipo de documento tiene esa persona de Brasil?
En caso de tener Registro General (tipo de documento 0) debería funcionar bien.
NOTA: Ojo que el alumno necesita cerrar y luego volver a iniciar sesión en Autogestión para que vuelva a cargar bien los datos básicos.
Fe de erratas: El nombre del usuario no se muestra cuando se produce el error.¿que te devuelve la siguiente query?
SELECT p.persona,
td.tipo_documento,
COALESCE(mdp_tipo_documento_pais.descripcion, td.descripcion) as tipo_documento_desc ,
COALESCE(mdp_tipo_documento_pais.desc_abreviada, td.desc_abreviada) as tipo_documento_desc_abreviada,
doc.nro_documento,
p.apellido,
p.nombres,
COALESCE (p.nombres_elegido, p.nombres) AS nombre_mostrar,
COALESCE (p.apellido_elegido, p.apellido) AS apellido_mostrar,
UPPER(LEFT(TRIM(p.apellido), 1)) AS inicial_apellido,
p.fecha_nacimiento,
to_char(p.fecha_nacimiento, 'DD/MM/YYYY') AS fecha_nacimiento_visual,
p.id_imagen as id_imagen,
CASE
WHEN p.tipo_usuario_inicial IS NOT NULL AND p.tipo_usuario_inicial <> 'Gestion' THEN p.tipo_usuario_inicial
ELSE (SELECT t.tipo_usuario
FROM mdp_personas_tipo_usuario as t, acc_tipos_usuarios as tp
WHERE t.persona = p.persona
AND tp.tipo_usuario = t.tipo_usuario
AND tp.tipo_usuario <> 'Gestion'
ORDER BY tp.orden_acceso_default
LIMIT 1
)
END as perfil_inicial,
p.usuario as identificacion,
p.arai_identificador_sso as arai_identificador_sso,
p.arai_uuid as arai_uuid,
d.legajo as legajo_docente,
d.docente as docente,
CASE
WHEN p.tipo_usuario_inicial IS NULL THEN acc_tipos_usuarios.orden_acceso_default
ELSE
(CASE
WHEN p.tipo_usuario_inicial = mdp_personas_tipo_usuario.tipo_usuario THEN 0
ELSE acc_tipos_usuarios.orden_acceso_default
END)
END as orden -- Orden de acceso del tipo de usuario..
FROM mdp_personas as p
JOIN mdp_personas_tipo_usuario ON mdp_personas_tipo_usuario.persona = p.persona
JOIN acc_tipos_usuarios ON acc_tipos_usuarios.tipo_usuario = mdp_personas_tipo_usuario.tipo_usuario
JOIN mdp_personas_documentos as doc ON (doc.persona = p.persona AND doc.documento = p.documento_principal)
JOIN mdp_tipo_documento as td ON td.tipo_documento = doc.tipo_documento
JOIN mdp_tipo_documento_pais ON (td.tipo_documento = mdp_tipo_documento_pais.tipo_documento AND doc.pais_documento = mdp_tipo_documento_pais.pais )
LEFT JOIN sga_docentes as d ON (d.persona = p.persona AND d.estado = 'A')
WHERE p.persona = <PERSONA>
AND mdp_personas_tipo_usuario.tipo_usuario <> 'Gestion'
ORDER BY orden
LIMIT 1;
Recorda reemplazar por el ID de la persona con la cual tenes problemas.
saludos.
2