Si la propuesta que figura en la matriz no coincide con la propuesta donde aprobó la actividad, es una equivalencia mal otorgada.
Entiendo todo lo que me decís que al tener aprobada la 80003 es transparente para ambas propuestas y de hecho es nos dimos cuenta que sucede desde que nos encontramos con el problema y luego verificamos en el código. El asunto es que entendíamos que la solución que te comentaba antes, debía funcionar porque al ser una matriz entre versiones con un origen bien definido, lo iba a respetar.
El tema es que la actividad 80003 ser una actividad comun, no importa si se aprueba en la propuesta G1 o W, será considerada aprobada en las 2 propuestas.
Entonces sea que procese una matriz con origen la propuesta G1, plan 2015, version 1 o la propuesta W, plan 2015, version 1, la actividad 80003 va a reconocerse como aprobada.
3
Hola Ale, justamente este es el problema. Necesitamos que las matrices no contemplen a las actividades de origen como 'comunes' o equivalentes entre propuestas, ya que esa es la causa de estas matrices: cambiar los codigos por cada propuesta y dejar limpias las nuevas versiones porque los códigos viejos no son equivalentes.
Para esto, analizamos lo siguiente:
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), 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.
Con esto, pensamos que las matrices no contemplarian estas actividades como equivalentes (¿este es el funcionamiento de sga_elementos_no_comunes?), 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:
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. Y si es asi, ¿las matrices tambien deberian contemplar esta excepcion de actividades comunes?
Si este analisis no es correcto, te pido como podriamos configurar las matrices para que se ejecuten solamente cuando la materia origen fue aprobada en esa propuesta.
Muchas gracias.