No se encuentra el parámetro de contexto

Hola
Estamos en la versión 3.20.0.
Desarrollamos una regla personalizada, que controla que al momento que el alumno se inscribe a una cursada o a un final tenga aprobado el cuatrimestre N-x.
Las instancias de mesas de examen ya pasaron y funcionó todo correctamente.
Ahora comenzamos con el período de inscripciones a cursadas, y falla emitiendo el siguiente mensaje: “No se encuentra el parámetro de contexto: elemento”.
Envío captura de pantalla de cómo tenemos definido el requisito. Y la salida de logs correspondiente (con algunos debug que fui agregando, para tratar de seguirlo).
Tenemos configurado el requisito por acción a nivel propuesta, tanto en la acción de Cursadas como de Exámenes.
Agradecería si pudieran orientarme como resolverlo.
Saludos
Iris


acciones.png

acciones.png

ptos_control.png

ptos_control.png

sistema.log.txt (52.3 KB)

Hola Iris,

Por lo que veo en los logs en php/nucleo/cursadas/inscripciones/cn_man_inscripcion_cursadas.php función validar_puntos_de_control dentro de $params llega el elemento vacío.


[DEBUG][guarani] Iris parametros_contexto regla_nucleo: {Array
(
    [alumno] => 61223
    [persona] => 54060
    [propuesta] => 115
    [plan_version] => 312
    [elemento] => 
    [elemento_inscripcion] => 9959
    [requisito] => 1077
    [fecha] => 2023-03-06
)
}

Es posible que la variable $this->s__actividad este vacía o null.

Veo en tu nodo de colab que no están las personalizaciones subidas, ¿puede ser que dicha personalización la tengas como cambios locales?

saludos.
2

Hola Leonel
Vuelvo enviar los logs con nuevos debug incluidos. Línea 469 y 5682.
El id del elemento (materia) a la cual se debe validar que el alumno tenga las condiciones para poder inscribirse a la cursada es 9959 (que es el campo elemento_inscripcion).
El nodo de colab es “unicen”. Estoy trabajando en la Revisión 68698.
Las personalizaciones no las tenemos subidas.
La regla que nos trae inconvenientes es la 1011, creada por nosotros. Y como mencionaba, en la instancia de inscripción a exámenes funcionó correctamente. El problema es ahora con las inscripciones a cursadas.
Me da la sensación que para la acción de exámenes viaja “elemento” mientras para las cursadas viaja “elemento_inscripcion”, es posible?
Muchas gracias!!
Saludos
Iris


sistema.log.txt (287 KB)

Hola Iris,

Te voy a pedir si podes subir las personalizaciones al colab así podemos ver el cambio.

En los logs veo lo siguiente:


[DEBUG][guarani] Iris parametros_contexto /usr/local/app/php/nucleo/_lib/reglas/regla_nucleo.php : 115 {Array
(
    [alumno] => 61223
    [persona] => 54060
    [propuesta] => 115
    [plan_version] => 312
    [elemento] => 
    [elemento_inscripcion] => 9959
    [requisito] => 1077
    [fecha] => 2023-03-07
)
}
[ERROR][guarani] No se encuentra el parámetro de contexto: elemento.
[ERROR][toba] guarani_error: No se encuentra el parámetro de contexto: elemento. 
[TRAZA]
	
	regla_nucleo->set_parametros_contexto 
Archivo: /usr/local/app/php/nucleo/_lib/reglas/regla_nucleo.php, lInea 119 
	
	regla_correlativas_de_cursada->validar 
Archivo: /usr/local/app/php/nucleo/_lib/reglas/regla_nucleo.php, lInea 351 
	
	regla_nucleo->validar_regla 
Archivo: /usr/local/app/php/nucleo/_lib/controles/guarani_control_nucleo.php, lInea 231 
	
	guarani_control_nucleo->validar 
Archivo: /usr/local/app/php/nucleo/_lib/controles/guarani_punto_de_control_nucleo.php, lInea 196 
	
	guarani_punto_de_control_nucleo->controlar 
Archivo: /usr/local/app/php/nucleo/_lib/controles/validador_puntos_de_control_nucleo.php, lInea 178 
	
	validador_puntos_de_control_nucleo->controlar 
Archivo: /usr/local/app/php/nucleo/cursadas/inscripciones/cn_man_inscripcion_cursadas.php, lInea 736 
	
	cn_man_inscripcion_cursadas->validar_puntos_de_control 
Archivo: /usr/local/app/php/nucleo/cursadas/inscripciones/cn_man_inscripcion_cursadas.php, lInea 702 
	
	cn_man_inscripcion_cursadas->validar_instancias 
Archivo: /usr/local/app/php/nucleo/cursadas/inscripciones/cn_man_inscripcion_cursadas.php, lInea 763 
	
	cn_man_inscripcion_cursadas->guardar 
Archivo: /usr/local/app/php/operaciones/cursadas/inscripciones/ci_nav_inscripcion_cursada.php, lInea 767 
	
	ci_nav_inscripcion_cursada->evt__confirmar 
Archivo: /usr/local/app/vendor/siu-toba/framework/php/nucleo/componentes/interface/toba_ci.php, lInea 282 
	
	toba_ci->disparar_evento_propio 
Archivo: /usr/local/app/vendor/siu-toba/framework/php/nucleo/componentes/interface/toba_ci.php, lInea 197 
	
	toba_ci->disparar_eventos 
Archivo: /usr/local/app/php/extension_toba/componentes/interface/guarani_ci.php, lInea 28 
	
	guarani_ci->disparar_eventos 
Archivo: /usr/local/app/vendor/siu-toba/framework/php/nucleo/toba_solicitud_web.php, lInea 135 
	
	toba_solicitud_web->procesar_eventos 
Archivo: /usr/local/app/vendor/siu-toba/framework/php/nucleo/toba_solicitud_web.php, lInea 55 
	
	toba_solicitud_web->procesar 
Archivo: /usr/local/app/vendor/siu-toba/framework/php/nucleo/toba_nucleo.php, lInea 96 
	
	toba_nucleo->acceso_web 
Archivo: /usr/local/app/www/aplicacion.php, lInea 33

La regla a ejecutar es php/nucleo/_lib/reglas/regla_correlativas_de_cursada.php.

saludos.
2

Hola Leonel
Si, justamente es lo mismo que observaba, y no me doy cuenta qué puede ser lo que está sucediendo.
El archivo php/nucleo/_lib/reglas/regla_correlativas_de_cursada.php es idéntico al que tengo.
Ahí pedí al sector correspondiente a ver si pueden subir las personalizaciones al colab.
Un detalle, que no se si afecte es que la materia es una optativa. La misma está dentro de una genérica perteneciente al plan de estudios del alumno.
Saludos
Iris

Hola Leonel
No tenemos subidas las personalizaciones al colab, ni creada una rama de 4 dígitos para ello.
Hay alguna documentación que nos guíe como hacerlo?
Muchas gracias!
Saludos
Iris

Hola Iris,

Tenes en ¿Cómo personalizo el sistema? donde dice Crear un requisito de tipo proceso, en el paso 2.3 Prueba de la regla te explica que desde el Toba Editor se puede probar la regla desde la operación Prueba >> Reglas.

Te comparto también una presentación dónde pueden ver unos gráficos que les van a servir para orientarse mejor sobre el funcionamiento de Colab

saludos.
2

Hola Leonel

El requisito de tipo proceso lo desarrollé guiándome justamente en esa documentación. Ya lo tenía testeado con la prueba de reglas del toba editor. Igual lo volví a probar, y pasando como elemento la actividad 9959 y este alumno, funcionó correctamente.
Creo que el problema viene con las actividades optativas. Hablando con el sector administrativo, me confirmaron que todos los casos relevados corresponden a optativas. Que la inscripción a cursadas de materias normales funciona correctamente. Y por lo visto, en el caso de ser optativas, el id del elemento viaja en el campo elemento_inscripcion (y no en el campo “elemento” como lo hace para las inscripciones a exámenes y a cursadas de materias normales).

Estaba viendo y siguiendo un poco el archivo que mencionabas: php/nucleo/_lib/reglas/regla_correlativas_de_cursada.php. Observo las líneas 100 y 101, y para este caso $requisito[‘elemento’] es null.

'elemento' => $requisito['elemento'], 'elemento_inscripcion' => $elemento,

Con respecto a colab, gracias por la presentación, entiendo la idea. Podrías orientarme cómo crear la rama de 4 versiones en el repositorio remoto y subir las personalizaciones allí? Estoy mucho más familiarizada con git.

Muchas gracias!!
Saludos
Iris

Hola Iris,

Este requisito personalizado está configurado por acción y además como correlativa de alguna actividad en el plan?

Saludos, Florencia.

Hola Florencia
Si, podés creer que en las optativas que se dieron de alta para este cuatrimestre tienen ese requisito como correlativa?
Hay alguna manera que el requisito pueda funcionar de ambas maneras?
Muchas gracias por toda la ayuda!
Saludos
Iris

Hola Iris, agrego a lo de Flor:

Con respecto a colab, gracias por la presentación, entiendo la idea. Podrías orientarme cómo crear la rama de 4 versiones en el repositorio remoto y subir las personalizaciones allí? Estoy mucho más familiarizada con git.

Basate en este diagrama de flujo, los cuadrados azules con clickeables.

Ver Creación de una nueva versión propia del SIU-Guaraní Gestión

No se como personalizaste la regla php/nucleo/_lib/reglas/regla_correlativas_de_cursada.php, pero para ver los parámetros que necesita podes revisar las siguientes queries:


SELECT regla FROM sga_reglas WHERE php_clase = 'regla_correlativas_de_cursada'; -- Devuelve 307

SELECT	   	sga_reglas.regla,
		                    sga_reglas_param_contexto.parametro,
	                       	par_puntos_control_parametros.tipo_de_dato,
	                       	par_puntos_control_parametros.descripcion
                  FROM     	sga_reglas,
							sga_reglas_param_contexto,
							par_puntos_control_parametros
                  WHERE     sga_reglas.regla = 307
                  AND     	sga_reglas_param_contexto.regla = sga_reglas.regla
				  AND		par_puntos_control_parametros.parametro = sga_reglas_param_contexto.parametro;

Devuelve 5 parámetros si te fijas, entre ellos esta elemento.

En la linea 101 vas a ver a elemento_inscripcion le pone el mismo valor que a elemento.

saludos.
4

Hola Iris,

Para que el requisito funcione para configurarlo por acción y como correlativa deberías agregar este método en la clase PHP de su regla asociada:

	function set_parametros_contexto($parametros_contexto=array())
	{
		if (!isset($parametros_contexto['elemento'])) {
			$parametros_contexto['elemento'] = $parametros_contexto['elemento_inscripcion'];
		}
		parent::set_parametros_contexto($parametros_contexto);
	}

Saludos, Florencia.
4

Muchas gracias Leonel por la documentación para subir personalizaciones a colab. Ya lo envié al sector que concentra el sistema en nuestra universidad.

Muchas gracias Florencia por la función!! Agregando dicho ajuste funcionó correctamente! Funciona de ambas maneras la regla ahora. Muy útil.

Gracias por todo. Saludos
Iris