¿bug en cierre de actas y calculo de regularidad?

Buenas,

Consulta, tenemos una confusión respecto a la configuración del parámetro exa_cant_veces_rendir_examen_regular y el resultado del mismo. Necesitamos que un alumno pierda la regularidad en una actividad al rendirla y reprobarla 6 veces por exámen. El problema es que recíen le está venciendo la regularidad en la 7ma vez que la rinde. Revisando la funcion f_examenes_vencimiento_regularidad_alumno que se ejecuta en el cierre del acta vemos que en la linea 82:

IF	(_origen = 'R' OR _origen = 'P') AND _cant_examenes_desaprobados >= pCantVecesRendirExamenRegular THEN
			-- Se vence la regularidad con la fecha del examen.
			UPDATE	sga_actas_detalle
			SET		fecha_vigencia = _pFechaDetalle
			WHERE	id_acta = _id_acta AND
					alumno = _alumno;

			-- Si hubo actualización, se inserta el cambio de fecha fin de vigencia.
			IF FOUND THEN
				INSERT INTO sga_regularidades_venc (id_acta, alumno, fecha_vigencia_anterior, fecha_vigencia_nuevo, observaciones, id_acta_examen)
				VALUES (_id_acta, _alumno, _fecha_vigencia, _pFechaDetalle, _observaciones, pActaExamen);

_cant_examenes_desaprobados es 5 (los de su historia academica)
pCantVecesRendirExamenRegular es 6

es decir que al momento del cierre no estaría sumando el desaprobado actual de la propia acta que se cierra para vencerle la regularidad.

¿Es correcto o se nos está escapando algo? saludoss

Hola Emiliano,

Por lo que veo en el código de la función ‘cerrar_acta’ de la clase ‘cn_ent_cerrar_acta_examen’, la función ‘f_examenes_vencimiento_regularidad_alumno’ se invoca luego de cerrar el acta. Es decir, debería estar contando el desaprobado actual. Están en 3.20.1? Alguna personalización?

Saludos, Florencia.

Hola Florencia,

Estamos en la 3.20.1

Claro, se invoca luego de cerrar el acta actual pero ¿ese cierre no está transaccionado? Por lo que veo el cierre de transacción es posterior a la llamada de la función f_examenes_vencimiento_regularidad_alumno, imagino que eso hace que no se tenga en cuenta el reprobado del acta que se está cerrando.

Emiliano,

Si, está todo dentro de una transacción pero de todas maneras se contabiliza el acta cerrada en la misma.
Tendrán algo que ver las fechas o el origen de alguna reprobación? Qué resultado obtienen al ejecutar la siguiente consulta SQL?

SELECT	*
FROM	vw_hist_academica_basica
WHERE	elemento = <Identificador de la actividad> AND
		resultado = 'R' AND
		origen = 'E' AND
		instancia = 3 AND
		alumno = <Identificador del alumno>;

Saludos, Florencia.

Para el alumno en cuestion obtenemos 6 registros. Por lo tanto, de haber funcionado el parámetro ya deberia encontrarse vencida su regularidad, y esto no sucede. Hice la prueba de anotarlo en 7mo examen ficticio, donde lo reprobé. Recién ahi venció la regularidad. De ahi vino toda la duda.

Emiliano,

Podrían adjuntar el resultado de la consulta SQL? Quizás haya algo con las fechas o el origen…

Saludos, Florencia.

Sí, este el resultado.

https://docs.google.com/spreadsheets/d/1WpK0RIREjuWmBbMlBEPbC6spGnfbMxa7p4MyEEGLcBE/edit?usp=sharing

De todas maneras me parece que es como vos decis. Ahora me trae 6 registros pero al momento de cerrar una hipotetica 7ma acta con un reprobado, la consulta me deberia estar trayendo 7 reprobados. Aun estándo todo dentro de una transacción, el insert se hace y una consulta posterior deberia traerme dicho registro, aunque luego se aborte la misma. Por lo que estoy pensando que tal vez no haya ningun bug y puede que se haya manipulado algun registro de acta. El log del parámetro muestra que no se modificó desde 2021.

Emiliano,

Cuál es la fecha de regularidad?

SELECT		fecha
FROM		vw_regularidades_basica
WHERE		alumno = 28058 AND
			elemento = 23676 AND
			es_vigente = 1 AND
			resultado = 'A'
ORDER BY	fecha DESC
LIMIT		1;

Saludos, Florencia.

Florencia,

La fecha de regularidad es ‘2020-07-10’

De todas formas, acabamos de descubrir que no está logueando el estado del parámetro en auditoria, por lo que no tenemos forma de saber si al momento del cierre del acta, estaba activo o no.

SELECT * FROM negocio_auditoria.logs_par_param_sist_valores WHERE parametro = 'exa_vencer_regularidad'

El sistema aparentemente no tiene ningún problema. Perdon por hacerte perder el tiempo. Seguimos evaluando de nuestro lado y cualquier cosa vuelvo a escribir.

Saludos.