Error en autogestión - FALTA PARÄMETRO

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.


20230308_023101.jpg

20230308_023101.png

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:

  • Ingresar a Administrar personas
  • Modificar el DNI (agregarle un 0 al final)
  • Guardar
  • Volver a modificar el DNI (borrar el 0)
  • Guardar

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)

“Nos podrías enviar los logs al momento del error (carpeta instalacion/log).”

================================= ERRORES ==================================

clase: siu\errores\error_guarani
mensaje: : CATALOGO: inscripcion_cursada / lista_comisiones - FALTA PARAMETRO: inicial_apellido
traza: [TRAZA]

—[ 0 ]-----------------------------------------

  • function: siu\modelo\datos\catalogo::procesar_parametros
  • file: …/src/siu/modelo/datos/catalogo.php, linea 274

—[ 1 ]-----------------------------------------

  • function: siu\modelo\datos\catalogo::consultar
  • file: …/src/siu/modelo/datos/estrategias/inscripcion_cursada.php, linea 86

—[ 2 ]-----------------------------------------

  • function: siu\modelo\datos\estrategias\inscripcion_cursada->info__lista_comisiones
  • file: …/src/siu/modelo/transacciones/inscripcion_cursada.php, linea 65

—[ 3 ]-----------------------------------------

  • function: siu\modelo\transacciones\inscripcion_cursada->info__lista_comisiones
  • file: …/src/siu/operaciones/cursada/pagelet_info_materia.php, linea 292

—[ 4 ]-----------------------------------------

  • function: siu\operaciones\cursada\pagelet_info_materia->prepare_materia_seleccionada
  • file: …/src/siu/operaciones/cursada/pagelet_info_materia.php, linea 95

—[ 5 ]-----------------------------------------

  • function: siu\operaciones\cursada\pagelet_info_materia->prepare
  • file: …/vendor/siu/chulupi-framework/src/SIU/Chulupi/interfaz/pagelet.php, linea 379

—[ 6 ]-----------------------------------------

  • function: SIU\Chulupi\interfaz\pagelet->exec_prepare
  • file: …/vendor/siu/chulupi-framework/src/SIU/Chulupi/interfaz/pagelet.php, linea 201

—[ 7 ]-----------------------------------------

  • function: SIU\Chulupi\interfaz\pagelet->render_ajax
  • file: …/vendor/siu/chulupi-framework/src/SIU/Chulupi/interfaz/renderer.php, linea 126

—[ 8 ]-----------------------------------------

  • function: SIU\Chulupi\interfaz\renderer->procesar
  • file: …/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/AccesoWeb.php, linea 136

—[ 9 ]-----------------------------------------

  • function: SIU\Chulupi\nucleo\AccesoWeb::procesar_response
  • file: …/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/AccesoWeb.php, linea 27

—[ 10 ]-----------------------------------------

  • function: SIU\Chulupi\nucleo\AccesoWeb::procesar
  • file: …/src/siu/www/index.php, linea 15

########################################################################################################################

================================================================================
================================= WARNINGS =================================

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:

  1. 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).

  2. Inscribí a la persona en una propuesta de grado.

  3. 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