Migración - mig_Generales - error en escala de notas

Hola!

Estamos tratando de migrar G2 a G3 hacia la versión 3.18.

Al correr el job: 02_Modulos/10_Generales/02_Migracion/mig_Generales encuentro el siguiente error en el script 07_sga_escalas_notas.sql:

07_sga_escalas_notas - ERROR: insert or update on table "sga_escalas_notas_det" violates foreign key constraint "fk_sga_escalas_notas_det_sga_escalas_notas_resultado" 07_sga_escalas_notas - Detail: Key (resultado)=(L) is not present in table "sga_escalas_notas_resultado".

Envío en adjunto el error completo que emite el spoon.

Mirando un poco, observo que dentro de la tabla sga_det_escala tenemos el tipo “L”, lo cual está dentro de lo permitido dentro del modelo de G2, ya que dicha tabla define la siguiente restricción:

alter table ‘dba’.sga_det_escala add constraint check
((resultado IN (‘A’ ,‘R’ ,‘P’ ,‘U’ ,‘N’ ,‘L’ )))
constraint ‘dba’.ck_det_esc_resul;

Al consultar lo siguiente;

SELECT * FROM sga_det_escala
WHERE resultado NOT IN ('R', 'P', 'A');

obtengo:

[tr][td]escala_notas [/td][td] nota [/td][td] descripcion [/td][td] resultado [/td][td] valor_numerico [/td][td] concepto [/td][/tr]
[tr][td]6 [/td][td] [/td][td] Libre [/td][td] L [/td][td] [/td][td] Libre[/td][/tr]
[tr][td]4 [/td][td] [/td][td] Libre [/td][td] L [/td][td] [/td][td] Libre[/td][/tr]
[tr][td]3 [/td][td] [/td][td] Libre [/td][td] L [/td][td] [/td][td] Libre[/td][/tr]

Mientras que:

SELECT * FROM negocio.sga_escalas_notas_resultado;

Retorna sólo los siguientes valores:

  • “A”
  • “R”
  • “U”

Agradeceré me orienten cómo resolverlo.

Muchas gracias!!

Iris


log_spoon_mig_Generales.txt (13.7 KB)

Hola Iris, viendo el check original y los valores posibles, es:
ALTER TABLE sga_det_escala
ADD CONSTRAINT CHECK (RESULTADO IN (‘A’, ‘R’, ‘P’, ‘U’, ‘N’))
CONSTRAINT ck_det_esc_resul;
Donde:
A = Aprobado
R =Reprobado
P = Promocionado (A G3 pasa como resultado A (Aprobado que significa “Promocionado”) en el acta de promocion y acta de Cursada)
N = No Promocionado (usado en el acta de promocion, que en G3 se pasa como resultado R (Reprobado))

Con lo cual el valor L es un resultado que han agregado como una personalización.

¿Este valor lo usan en las cursadas, promociones?

Si es en el acta de cursadas, hay dos opciones por las cuales pueden cambiarlo:

  1. Pasarlo como nota “U” (Ausente)
  2. Pasarlo como nota “R” (Reprobado)
    Para cualquiera de los casos debiera ir acompañado de una “Condición de Regularidad” donde indique que es “Libre”. Pero dependiendo de la opcion 1 o 2, deberan crear esta nueva condicion de regularidad con el resultado que corresponda (U o R). Tabla sga_cond_regularidad.

En las actas de promocion, este resultado debiera pasarse como R (que significa No Promocionado).

Recuerden que el que indica la diferencia de un alumno que no aprobó una cursada es la condición de Regularidad.
Ya que todos tendran resultado R (Reprobado) pero con condiciones de regularidad diferente:

  • No aprobo parciales
  • No llegó al promedio
  • No cumplió con la asistencia
  • No presentó trabajo final
  • Se copió…
  • Abandonó
  • Nunca cursó

  • Es decir, pueden definir todas las condiciones de regularidad tanto para el resultado A (Aprobado) , R (Reprobado) y U (Ausente). Este ultimo generalmente lo usan para indicar que el alumno quedó libre, que quizas es ese resultado L que ustedes personalizaron.

Otra opcion, es que agreguen ese resultado en la tabla de resultados de notas en Guarani 3 (sga_escalas_notas_resultado) previo a la migración:

INSERT INTO sga_escalas_notas_resultado (resultado, descripcion) VALUES ('L', 'Libre');

Y cargar la tabla sga_instancias_resultado para indicar en que instancias ese resultado es válido y que descripción se mostrará al seleccionar ese resultado en la carga de notas en las actas.
Por ejemplo:


INSERT INTO sga_instancias_resultado (resultado, instancia, descripcion) VALUES ('L', 1, 'Libre');  -- Instancia 1 - Cursada
INSERT INTO sga_instancias_resultado (resultado, instancia, descripcion) VALUES ('L', 2, 'Libre');  -- Instancia 2 - Promocion

Pero una vez finalizada la migración deberían hacer un testeo del circuito de cursadas incluyendo las actas de cursadas y promociones (creacion, carga de notas y cierre de actas) para ver que este resultado pueda ser seleccionado y que no haya problemas. Verificar reporte de regularidades de la ficha de la persona.

4

Hola Alejandro.

Entendido.
En esta primer versión de prueba voy a pasar el resultado de las cursadas a “U” (Ausente) y el resultado de las promociones a “R” (Reprobado), ya que en todos los casos la condición es “Libre” (según el campo cond_regularidad).
Testearemos a ver si eso nos sirve.

Gracias!!
Saludos.

Iris

Hola

Estoy probando nuevamente la migración, pero ahora a la versión 3.19.1.
Retomo este tema.

Quiero probar la opción de crear una nueva condición de regularidad. Es decir:


INSERT INTO mig.sga_cond_regular(cond_regularidad, descripcion, resultado) VALUES (100, 'Libre', 'U');

Cuáles serias los pasos, para que dicho agregado migre?

Ya actualicé las tuplas de la tablas que hacían referencia a la anterior condición a esta nueva creada, y restablecí la cond_regularidad = 1 a su valor por defecto.
Algún paso más?

Gracias!

Iris

Si agregas una nueva condición de regularidad (100) que corresponde al resultado [b]U /b en el acta, entonces debes ajustar el script de migracion que migra este campo.
¿Esta nueva condición de regularidad a que condición de regularidad de G2 corresponde?

Este dato se inserta en la tabla sga_eval_detalle_cursadasen el archivo \02_Modulos\55_Actas\02_Migracion\08_sga_eval_detalle_cursadas.sql

Y en la tabla sga_actas_detalleen el archivo \02_Modulos\55_Actas\02_Migracion\04_sga_actas_detalle.sql

Hola Alejandro

Como detallaba al inicio, tenemos agregado un resultado más de los pre-establecidos. Y modificada una de las condiciones que vienen por defecto (‘Libre’ → ‘L’).

En la tabla sga_det_escala tenemos el tipo “L”. Y dentro del modelo de G2, también modificada esta restricción:

alter table ‘dba’.sga_det_escala add constraint check
((resultado IN (‘A’ ,‘R’ ,‘P’ ,‘U’ ,‘N’ ,‘L’ )))
constraint ‘dba’.ck_det_esc_resul;

La “L” significa Libre y va sin nota. No es aprobado ni reprobado, pero le permite al alumno acceder luego al final Libre (no es un libre “puro”).

Estoy intentando que al migrar se respeten los resultados pre-establecidos, pero agregando una condición de regularidad que lleve dicho registro o concepto de “Libre especial”.

Por lo cual, en el esquema mig de PG, antes de correr el job: 02_Modulos/10_Generales/02_Migracion/mig_Generales, realicé los siguientes ajustes:


INSERT INTO mig.sga_cond_regular(cond_regularidad, descripcion, resultado) VALUES (100, 'Libre especial', 'U');

UPDATE mig.sga_det_escala SET resultado = 'U' WHERE resultado = 'L';

UPDATE mig.sga_cambios_curpen SET resultado = 'U', cond_regularidad = 100 WHERE resultado = 'L';
UPDATE mig.sga_det_acta_promo SET resultado = 'U', cond_regularidad = 100 WHERE resultado = 'L';
UPDATE mig.sga_det_acta_curs SET resultado = 'U', cond_regularidad = 100 WHERE resultado = 'L';

UPDATE mig.sga_hist_acta_curs SET n_resultado = 'U', n_cond_regularidad = 100 WHERE n_resultado = 'L';
UPDATE mig.sga_hist_acta_curs SET a_resultado = 'U', a_cond_regularidad = 100 WHERE a_resultado = 'L';

UPDATE mig.sga_cond_regular SET resultado = 'U' WHERE resultado = 'L';

Es decir, inserté una nueva condición de regularidad.
Actualicé el detalle de la escala de notas, para que ahora el resultado sea "U en vez de “L” (así se deja de usar de ahora en más y no es necesaria).
Hice los ajustes necesarios en las tuplas que usaban dicho resultado / condición para que ahora usen el nuevo criterio.
Por último, restablecí la condición 1 a su valor pre-establecido por defecto (que era la que teníamos modificada).

Con estos cambios, debería tocar algo de los siguientes scripts? (creo que no sería necesario, o me equivoco?)

  • \02_Modulos\55_Actas\02_Migracion\08_sga_eval_detalle_cursadas.sql
  • \02_Modulos\55_Actas\02_Migracion\04_sga_actas_detalle.sql

Muchas gracias por la ayuda!

Iris

Iris, creo que no debes hacer ningun cambio mas, ya que cambiaste el resultado L por U en las tablas de G2.
Igualmente podes migrar el módulo y ver si pasa o salta algun error.
Recorda que el migrador permite setear para que luego de migrado un modulo se realice un backup hasta ese momento, para que si en el proximo módulo a migrar da error, puedas levantar el backup y comenzar desde ahi y no todo desde el comienzo.

Hola Alejandro
Gracias.
Está bueno el dato. Cómo seteo para que luego de migrado un modulo se realice un backup hasta ese momento?
Saludos

Iris

Ahí encontré la manera.
Seteando la variable ${realizar_backup} en true dentro del spoon.

Si, fijate que esta documentado en Otras Variables:
https://documentacion.siu.edu.ar/wiki/SIU-Guarani/version3.19.0/migracion/kettle/configuracion#Otras_Variables

Bien!!!
Muchas gracias!