Actualmente, ya identificamos todas las equivalencias que no deberian otorgarse (porque si el alumno aprobó 80003 en G1, entonces la matriz de 80003 para W es invalida),
Error, conceptualmente es una actividad comun, con lo cual es valida en las dos propuestas.
En el caso que Uds plantean de que es invalida, entonces lo que quisieron hacer es usar la misma actividad pero entre ciertas propuestas no reconocerla autompaticamente sino que el reconocimiento sea a traves de una equivalencia que se le otorgue al alumno.
y antes de volver a procesar todas las matrices, pensamos en invalidar estas actividades como equivalentes.
Es decir, para que el sistema no considere la actividad 80003 equivalente entre propuestas/planes, insertamos los registros correspondientes en la tabla sga_elementos_no_comunes. Asignando como plan origen, el plan donde fue aprobada esa materia. Y como plan_destino, todos los demas planes que estan otorgando equivalencias.
Correcto.
En realidad no es que otorga equivalencias, porque no hay ninguna registracion de equivalencias si a eso te referis. Sino que es un reconocimiento automático. Si lo ven en el reporte de HIstoria Académica estará marcada con un * que indica que fue aprobada en otra propuesta.
Con esto, pensamos que las matrices no contemplarian estas actividades como equivalentes (¿este es el funcionamiento de sga_elementos_no_comunes?)
Correcto
, y otorgarian equivalencias solo en el plan donde el usuario aprobó esa actividad. Pero la funcion de otorgar equivalencias las sigue considerando comunes entre distintas propuestas, y vuelve a otorgar la equivalencia en propuestas donde el alumno NO aprobó esa actividad.
Analizamos la funcion de f_equiv_otorgar_equivalencias, y parece no contemplar los registros de sga_elementos_no_comunes. Particularmente sucede en ‘f_equiv_evaluar_matriz’, cuando inserta en _Temp_HA segun todos los alumnos de la persona, pero luego no filtra por el alumno correspondiente a la matriz que esta evaluando:
Código:
select …FROM vw_hist_academica_basica as v,
sga_alumnos as a2
WHERE v.alumno2 = a2.alumno
AND v.persona = pPersona;
Ese where igualado por la persona, termina ignorando el filtro que tiene la vista de historia academica sobre la tabla de sga_elementos_no_comunes.
Te consulto si efectivamente la tabla sga_elementos_no_comunes evita la equivalencia automatica de una misma actividad.
Correcto. Esa es la finalidad de esta tabla.Registrar las relaciones entre planes donde existe la misma actividad pero no se la reconoce automáticamente, y para hacerlo debe otorgarse equivalencias o el alumno deberá rendirla nuevamente llegado el caso.
Y si es asi, ¿las matrices tambien deberian contemplar esta excepcion de actividades comunes?
Correcto. Al consultar la vista de historia academica ya está considerando la definicion de "actividad no comun" entre los planes de las propuestas del alumno.
La query
select ..FROM vw_hist_academica_basica as v,
sga_alumnos as a2
WHERE v.alumno2 = a2.alumno
AND v.persona = pPersona;
Fue realizada mucho antes de agregar este concepto de no reconocimiento automático de actividades comunes.
Con lo cual creo que se resuelve cambiando esta query por:
SELECT ..
FROM vw_hist_academica_basica as v
JOIN sga_alumnos as a2 ON a2.alumno = v.alumno2
JOIN sga_planes_versiones as pv2 ON pv2.plan_version = a2.plan_version
WHERE v.persona = pPersona
AND ((v.alumno = pAlumno OR -- Propuesta sobre la que se otorga equivalencia. Recupero todas las actividades
(v.alumno <> pAlumno AND -- Otras propuestas del alumno. Solo considero la propuesta origen de la matriz si viene el dato de propuesta y/o plan origen de la matriz (puede haber matrices sin origen..
a2.propuesta = COALESCE(pPropuestaOrigen, a2.propuesta) AND
pv2.plan = COALESCE(pPlanOrigen, pv2.plan)
)
)
Recuerdo que habia un motivo del porque ese join con sga_alumnos y elfiltro por persona, porque es recuperar todas las activdades que el alumo tiene cumplidas por todas sus propuestas.
Con lo cual la actividad 80003 la va a recuperar cuando la historia academica la consulte por el registro de sga_alumnos que corresponde con la propuesta G1, aunque la matriz de equvalencias que se este evaluando para otorgar equivalencias es de la propuesta W.
Esto mismo lo tienen que hacer sobre la query que inserta en _TempReg
SELECT .... FROM vw_regularidades_basica ....
4