Error al rectificar un acta de examen

Hola, les comento que un usuario reporto el siguiente error: el certificado lincoln muestra una materia aprobada en una carrera a la cual no pertenece, es decir por ejemplo el alumno Juan Perez esta inscripto en tres carreras (A, B y C) y aprobo una materia en la carrera A, cuando se asento la nota luego se rectifico el acta, en ese momento se generaron dos registros en la tabla sga_examenes_equiv para la carrera B y C pero la materia no pertenece a los planes de esas carreras…
Mi pregunta es que stored utiliza el sistema para realizar esta accion? asi lo reviso y resuelvo el inconveniente.
Desde ya Muchas Gracias. Saludos

Si el parámetro examen_vale_en_todas_las_carreras esta definido en SI (valor = S), entonces en el cierre de acta de examen se llama al proceso sp_u_examen_equiv.
Este proceso es el que inserta en la tabla de examenes equivalentes en otras carreras del alumno. No debería insertar si la materia no existe en el plan de estudios de las otras carreras donde esta el alumno.
Solo la registra como equivalente en la otra carrera si el alumno no la tiene aprobada a esa materia en la otra carrera, ya sea por un examen, promoción o equivalencia.

Lo raro es que solo ocurre cuando el origen del examen proviene de un acta rectificada, si el acta es normal no se produce el error.

Lorena, es raro ya que tanto en el cierre de un acta de examen normal como en el cierre de un acta rectificativa de examen se llama al mismo proceso (sp_u_examen_equiv) para registrar el examen equivalente en las otras carreras del alumno, pero solo en aquellas carreras donde la materia del examen existe en el plan del alumno (plan del alumno en el que se encuentra en la fecha del examen)
Lo verificaremos igualmente y cualquier cosa te avisamos.

Buenisimo! Muchas Gracias… Hay una parte del código que hace referencia a las actas rectificativas…quizás ahí puede estar el problema

SELECT count(*) INTO v_cantidad
FROM vw_materias_plan
WHERE unidad_academica = v_ua_new
AND carrera = v_carrera_new
AND plan = v_plan_new
AND version = v_version_new
AND materia = v_materia;

		IF v_cantidad >= 1 THEN
		BEGIN
		   ON EXCEPTION IN (-268)
			-- Si el registro existe, continua
			-- Violacion de Clave Primaria. Registro duplicado	
		   END EXCEPTION WITH RESUME;
		   
		   LET v_cnt_aprobadas = 1;
		 IF p_tipo_acta <> 'R' THEN
		      -- Si es un acta normal, verifico si la tiene aprobada en la otra carrera	
		      SELECT COUNT(*) INTO v_cnt_aprobadas
		      FROM vw_hist_academica
		      WHERE unidad_academica  = v_ua_new
		      AND carrera = v_carrera_new
		      AND legajo = v_legajo_new
		      AND materia = v_materia
		      AND resultado = 'A';
		   END IF;

		   -- Si no la tiene aprobada o si es un acta rectificativa la que otorga el examen..
		   IF v_cnt_aprobadas = 0 OR p_tipo_acta = 'R' THEN
				-- Si existe la materia en la Carrera, crea el registro en SGA_PROMO_EQUIV
				INSERT INTO sga_examenes_equiv (unidad_academica, tipo_acta, acta, carrera, legajo,
				plan, version, carrera_original, legajo_original, fecha, origen, estado)
				VALUES (v_ua_new, p_tipo_acta, p_acta_examen, v_carrera_new, v_legajo_new, 
				v_plan_new, v_version_new, p_carrera, p_legajo, p_fecha,'S','A');

Pero si miras el FOREACH, recupera solo las carreras en las que se encuentra el alumno y carga estos dsatos en las variables v_ua_new,v_carrera_new, v_legajo_new y luego busca si la materia existe en esa carrera, plan y version… Si existe, luego mira si ya la tiene aprobada… y luego ahi si no la tiene hace el insert en la tabla.

De todas maneras inserta el registro en sga_examenes_equiv aunque la materia no exista en la carrera y tambien esta en vw_hist_academica y como el certificado lincoln saca la informacion de ambas tablas por eso muestra mal los datos…

Hola, me podés decir en que versión están así hago unas pruebas ?

Gracias
Javier

Hola, estoy en la version 2.06.5…Por favor comentame como te fue

Hola, probé en 265 y no encuentro problema.

Una persona es alumno de 3 carreras (1, 2 y 3), las carreras 1 y 2 comparten la materia X.
La materia X no pertenece ni perteneció a ningún plan de la carrera 3.

El alumno reprueba por examen la materia X para la carrera 1.
En este momento se graba en sga_examenes_equiv un registro equivalente para la carrera 2

Se rectifica el acta y se aprueba al alumno.
En este momento se graba un segundo registro equivalente en sga_examenes_equiv para la carrera 2

Nunca se genera un registro para la carrera 3 a la cual la materia no pertenece

En la vista vw_hist_academica se muestran los dos registros para las dos carreras que si tienen la materia X

Adjunto capturas de los detalles de las tablas

Javier


capturas.txt (1.44 KB)

Te pido un favor, me podrias adjuntar el codigo del sp_examen_equiv? porque entonces de acuerdo a las pruebas debe ser que el que yo tengo esta modificado…Gracias!

Entiendo que es este sp_u_examen_equiv.sql

Te lo adjunto
Recrealo y comentame

Javier


sp_u_examen_equiv.sql (5.54 KB)

Javier, efectivamente no se generan los registros en sga_examenes_equiv, sin embargo si se crean en vw_hist_academica, como exámenes equivalentes y como el certificado lincoln consulta en la vista para generar la información devuelve datos erróneos. No se que operación dispara ese evento…

La vista es una consulta, no una tabla, te paso el sql de la vista de la versión 265, recreala y fijate.

Javier


vw_hist_academica.sql (20.1 KB)

Estimado, el inconveniente continúa. Por favor me podrías indicar que otro/s stored esta/n involucrado/s en la rectificación de un acta de examen para revisarlos y detectar donde esta el problema. Desde ya Muchas Gracias!

Lorena, podes adjuntar la siguiente salida para ese alumno e indicar que datos son los que no deberian estar recuperandose?


SELECT
            v.carrera,
            c.nombre as carrera_nombre,
            materia,
            m.nombre as materia_nombre,
            v.fecha,
            v.resultado,
            v.nota,
            v.forma_aprobacion,
            v.tipo_acta,
            v.acta,
            v.acta_examen_orig,
            v.acta_promocion,
            v.acta_promo_orig,
            v.equivalencia,
            v.nro_resolucion,
            v.plan,
            v.version

FROM vw_hist_academica as v, 
          sga_carreras as c,
          sga_materias as m
WHERE v.unidad_acaemica = ..
AND v.carrera = ...
AND v.legajo = .....
AND c.unidad_acaemica = v.unidad_acaemica
AND c.carrera = v.carrera
AND m.unidad_acaemica = v.unidad_acaemica
AND m.carrera = v.materia
ORDER BY m.nombre, v.carrera;

Alejandro, en la consulta cuando haces referencia a c.nombre que tabla seria c? idem com m.nombre, que tabla seria m? porque faltan definir en el FROM. Gracias!

Rta Alejandro:
sga_carreras as c
sga_materias as m

Perdon por el olvido!

Lorena:

El certificado Lincoln es una vieja personalización de la UNSAM, de un analítico muy particular, no tendrás alguna otra personalización que esté jorobando?

Saludos

Gustavo

En realidad estuve probando todo desde cero y con los stored originales que me envio Javier todavia se siguen generando los registros en la tabla sga_examenes_equiv para materias que no se encuentran en carreras a las cuales esta inscripto el alumno. Revise tambien el stored sp_cerrar_rectific pero tampoco solucione el problema, que otro stored podria mirar? Gracias

La personalización en cuestión no la tengo…

Pero en mi experiencia los duplicados pueden originarse cuando hay datos en tablas que no debería haber (por ejemplo una equivalencia mal migrada de un sistema anterior que resulta redundante para Guarani) o bien en la personalización que emite el reporte usando la mencionada vista falló una junta o faltó agregar una condición más.