Error al migrar equivalencias - post contorles

Bien. Ya vi donde esta el problema. Voy a ajustar el script de migracion de las equivalencias de tipo homologación, que son las que en G3 se registran como aprobaciones por resolución.
Las que están dando problemas en este control son aquellas que fueron rectificadas y anuladas. De ahi la diferencia entre el script que migra y el script que controla.
Modifico ambos y te los vuelvo a enviar. Mientras tanto fíjate de levantar un backup previo a la migración de este modulo de equivalencias para volver a migrar todo el modulo completo.

De acuerdo!
Muchas gracias Alejandro por todo!!
Saludos.

Iris

Iris, te adjunto 3 archivos, 2 son de migracion y el 3ro es el de controles. Reemplazalos y volve a probar migrar este modulo.
Recorda levantar un backup previo a la migracion del modulo de Equivalencias.
Avisa como fue el resultado del pos-controles.


02_sga_equiv_tramite.sql (9.27 KB)

03_sga_equiv_otorgada.sql (5.46 KB)

fx_pos_ctrl_equivalencias.sql (7.46 KB)

De acuerdo Alejandro.
En la próx prueba de migración te aviso. Contá con eso.
Saludos.

Iris

Hola Alehandro
Volví a hacer una nueva migración, y persiste error con la migración de Trámites de Equivalencias de Homologaciones.
Ahora el postcontrol da lo siguiente:

[tr]
[td]Error: Cantidad de Trámites de Equivalencias de Homologaciones (sga_equiv_tramite) no coinciden…[/td][td]5,00[/td][td]47.824,00[/td]
[/tr][tr]
[td]Error: Cantidad de actividades homologadas no coinciden (sga_equiv_otorgada)…[/td][td]7,00[/td][td]47.832,00[/td]
[/tr]

Aclaro que estoy migrando sobre una base que ya cuenta con otras 3 responsables académicas.
Gracias!

Iris

Hola de nuevo
Corriendo los scripts originales, en dónde sólo tenía como error:

tabla: sga_reconocimiento resultado: Error: Cantidad de Trámites de Equivalencias de Homologaciones (sga_equiv_tramite) no coinciden... cant_g2: 1 cant_g3: 5

Ahora el postcontrol da lo siguiente:

tabla: sga_reconocimiento
Error: Cantidad de Trámites de Equivalencias de Homologaciones (sga_equiv_tramite) no coinciden…
cant_g2: 48.166,00
cant_g3: 47.824,00

tabla: sga_reconocimiento_act
Error: Cantidad de actividades homologadas no coinciden (sga_equiv_otorgada)…
cant_g2: 7,00
cant_g3: -1.340,00

Qué puede estar pasando?
(La diferencia es que estoy migrando sobre una base que tiene ya otras 3 responsables académicas. La vez anterior sólo tenía 2)
Gracias por la ayuda!
Saludos

Iris

Al comenzar el proceso de migracion la tabla mig._tablas_g3 se carga con datos de cantidad de filas que hay en cada tabla de la base de Guarani 3. En este caso de las 3 unidades academicas ya migradas.
Ajuste el pos control de equivalencias relacionadas con las homologaciones de actividades.
Actualizá estos archivos que adjunto en el mensaje y volve a realizar la migracion desde el comienzo.

\02_Modulos\01_TablasConversionPK\02_app_migracion.sql
\02_Modulos\60_Equivalencias\03_Pos_Controles\fx_pos_ctrl_equivalencias.sql


02_app_migracion.sql (12.3 KB)

fx_pos_ctrl_equivalencias.sql (7.86 KB)

Hola Alejandro
Probé hacer una nueva migración con los scripts enviados, pero da el error que te envío en adjunto.
Gracias.
Saludos

Iris


errror_cnv_pk_tablas_x_modulo.txt (21.6 KB)

Hola Alejandro

Modifiqué la línea 103, especificando una de las tablas como origen del campo nro_tramite, y pude continuar.

-- fx_pos_control_equivalencias - Homologaciones   
   SELECT count(distinct r.nro_tramite) INTO cant 
     FROM sga_reconocimiento as r 
     JOIN sga_reconocimiento_act as ra ON ra.nro_tramite = r.nro_tramite
    WHERE ra.homologada = 'S';

Saludos
Iris

Hola Alejandro
Ahí estoy con una nueva prueba de migración y ahora sólo emite este error los postcontroles:

sga_reconocimiento Error: Cantidad de Trámites de Equivalencias de Homologaciones (sga_equiv_tramite) no coinciden... 5,00 48.855,00

Pero se solucionó lo de la tabla sga_reconocimiento_act. Las cantidades corresponden.
La migración es sobre una base de G3 que ya cuenta con otras responsables académicas.
Alguna idea de por qué puede persistir el error en la tabla sga_reconocimiento? O detectar cuales son los casos?
Gracias!!

Iris

5 contra 48855?
Volviste a hacer una nueva migracion?

¿Que devuelven estas consultas?

SELECT count(*) 
      FROM mig.sga_equiv_otorgada as a
      JOIN mig.sga_equiv_operac as b ON a.operacion_equiv = b.operacion_equiv
     WHERE b.origen = 'H';

SELECT filas FROM mig._tablas_g3 where tabla = 'sga_reconocimiento_act_homologada';

SELECT count(*) FROM sga_reconocimiento_act WHERE homologada = 'S' ;

SELECT count(*) FROM sga_reconocimiento as r 
JOIN sga_reconocimiento_act as ra ON ra.nro_tramite = r.nro_tramite 
WHERE ra.homologada = 'S' ;

Hola Alejandro

Te respondo:

SELECT count(*)
      FROM mig.sga_equiv_otorgada as a
      JOIN mig.sga_equiv_operac as b ON a.operacion_equiv = b.operacion_equiv
     WHERE b.origen = 'H';

7 registros

SELECT filas FROM mig._tablas_g3 where tabla = 'sga_reconocimiento_act_homologada';

0 registros

SELECT count(*) FROM sga_reconocimiento_act WHERE homologada = 'S' ;

7 registros

SELECT count(*) FROM sga_reconocimiento as r
JOIN sga_reconocimiento_act as ra ON ra.nro_tramite = r.nro_tramite
WHERE ra.homologada = 'S' ;

7 registros

Alguna inconsistencia en el postcontrol puede ser?
Gracias por la ayuda

Iris

Que extraño, porque la 3er query es la que esta en el pos-control.
Adjunto este archivo en este mensaje, fijate de reemplazar el archivo y ejecutar la funcion a ver si dan los mismos valores.
Saludos


fx_pos_ctrl_equivalencias.sql (7.86 KB)

Hola Alejandro
Corrí el script que me enviaste y sigue dando el mismo error.
El archivo es idéntico al que tenía.
La inconsistencia salta en sga_reconocimiento (y no en sga_reconocimiento_act)

Observando un poco, creo que en la línea 72, en la parte del else, debieran ser las siguientes cantidades: cnt_homologaciones_g2 + cnt_extracurriculares_g2, cnt_homologaciones_g3
(Tiene: cnt_homologaciones_g2, cnt_homologaciones_g3)
Pero aún corrigiendo eso persiste una diferencia:

[tr]
[td]Tabla[/td][td]Resultado[/td][td]cant_g2[/td][td]cant_g3[/td]
[/tr][tr]
[td]sga_reconocimiento.[/td][td]Error: Cantidad de Trámites de Equivalencias de Homologaciones (sga_equiv_tramite) no coinciden…[/td][td]48.166,00[/td][td]48.855,00[/td]
[/tr]

Estos son los valores que obtengo con el script de control:

-- HOMOLOGACIONES:  Cuento tramites de equivalencias relacionados con Homologaciones
  SELECT count(DISTINCT eo.operacion_equiv || '-' || e.carrera || '-' ||  e.legajo || '-' ||  e.plan || '-' || e.version) 
    --INTO cnt_homologaciones_g2 = 5
	  FROM mig._cnv_pk_reconocimiento as m_r
      JOIN mig.sga_equiv_operac as eo ON eo.operacion_equiv = m_r.operacion_equiv_g2
	  JOIN mig.sga_equiv_otorgada as e ON e.operacion_equiv = eo.operacion_equiv
	 WHERE eo.operacion_equiv IN (SELECT operacion_equiv FROM mig.sga_equiv_otorgada)
	   AND eo.origen = 'H' 
	   AND m_r.origen = 'EQUIVALENCIA'; 

5 registros

-- Tramites de Resoluciones de actividades extracurriculares
	SELECT count(1) 
	--INTO cnt_extracurriculares_g2 = 48161
	  FROM mig._cnv_pk_reconocimiento as m_r
      JOIN mig.sga_resol_activ as rs ON rs.unidad_academica = m_r.unidad_academica AND rs.resol_actividades = m_r.resol_actividades
	 WHERE m_r.origen = 'EXTRACURRICULAR'; 

48161 registros

-- Guarani 3   
	SELECT count(*) 
	--INTO cnt_homologaciones_g3 = 48855
	FROM sga_reconocimiento;

48855 registros

	SELECT filas 
	--INTO cant_inicial = 0
	FROM mig._tablas_g3 where tabla = 'sga_reconocimiento_homologada';

0 registros

A que se puede deber la diferencia de 689 registros?
Gracias!
Saludos

Iris

¿Que valores retornan estas consultas?

-- G2
SELECT count(DISTINCT m_r.nro_tramite) 
FROM mig._cnv_pk_reconocimiento as m_r
JOIN mig.sga_equiv_operac as eo ON eo.operacion_equiv = m_r.operacion_equiv_g2
JOIN mig.sga_equiv_otorgada as e ON e.operacion_equiv = eo.operacion_equiv
WHERE eo.operacion_equiv IN (SELECT operacion_equiv FROM mig.sga_equiv_otorgada)
     AND eo.origen = 'H' 
     AND m_r.origen = 'EQUIVALENCIA'; 

SELECT COUNT(DISTINCT m_r.nro_tramite) 
  FROM mig._cnv_pk_reconocimiento as m_r
     JOIN mig.sga_resol_activ as rs ON rs.unidad_academica = m_r.unidad_academica AND rs.resol_actividades = m_r.resol_actividades
 WHERE m_r.origen = 'EXTRACURRICULAR'; 

-- Guarani 3   
SELECT count(DISTINCT r.nro_tramite) INTO cnt_homologaciones_g3 
  FROM sga_reconocimiento as r
  JOIN sga_reconocimiento_act as ra ON ra.nro_tramite = r.nro_tramite 
 WHERE ra.homologada = 'S';

Hola Alejandro

Respondo

-- G2
SELECT count(DISTINCT m_r.nro_tramite)
FROM mig._cnv_pk_reconocimiento as m_r
JOIN mig.sga_equiv_operac as eo ON eo.operacion_equiv = m_r.operacion_equiv_g2
JOIN mig.sga_equiv_otorgada as e ON e.operacion_equiv = eo.operacion_equiv
WHERE eo.operacion_equiv IN (SELECT operacion_equiv FROM mig.sga_equiv_otorgada)
     AND eo.origen = 'H'
     AND m_r.origen = 'EQUIVALENCIA'; 

5 registros

SELECT COUNT(DISTINCT m_r.nro_tramite)
  FROM mig._cnv_pk_reconocimiento as m_r
     JOIN mig.sga_resol_activ as rs ON rs.unidad_academica = m_r.unidad_academica AND rs.resol_actividades = m_r.resol_actividades
 WHERE m_r.origen = 'EXTRACURRICULAR';

48161 registros

-- Guarani 3   
SELECT count(DISTINCT r.nro_tramite)-- INTO cnt_homologaciones_g3
  FROM sga_reconocimiento as r
  JOIN sga_reconocimiento_act as ra ON ra.nro_tramite = r.nro_tramite
 WHERE ra.homologada = 'S'; 

5 registros

Saludos,

Iris

Envio el archivo de pos-controles. Actualiza la funcion en la base, ejecutalo y enviá el resultado.
Saludos.


fx_pos_ctrl_equivalencias.sql (11.8 KB)

Hola Alejandro
Ahora da otros errores…
Va en adjunto.
Iris


resultado_post_controles_eqiv.png

resultado_post_controles_eqiv.png

Los dos primeros que dan error estaba mal el control, pero si miras dan iguales los nros de G2 y G3.

El que da diferente es el de las actividades extracurriculares.
¿Estan migrando las actividades extracurriculares como actividades dentro del plan de estudios, no?
Por lo que veo que se esta completando la tabla sga_reconocimiento_act


¿Que resultados dan estas consultas?

1) 
SELECT count(*)
   FROM mig.sga_resol_activ 
    JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                                mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
    JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                                 mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha;

2)
SELECT count(*)
   FROM mig.sga_resol_activ 
    JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                                mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
    JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                                 mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha
    JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND  
                                   mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND  
                                   mig.sga_alumnos_resol.carrera           = mig.sga_activ_alumno.carrera AND  
    	                           mig.sga_alumnos_resol.legajo            = mig.sga_activ_alumno.legajo    

3) 
SELECT count(*)
   FROM mig.sga_resol_activ 
    JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                                mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
    JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                                 mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha
    JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND  
                                   mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND  
                                   mig.sga_alumnos_resol.carrera           = mig.sga_activ_alumno.carrera AND  
    	                           mig.sga_alumnos_resol.legajo            = mig.sga_activ_alumno.legajo    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   

4) 
SELECT count(*)
   FROM mig.sga_resol_activ 
    JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                                mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
    JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                                 mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha
    JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND  
                                   mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND  
                                   mig.sga_alumnos_resol.carrera           = mig.sga_activ_alumno.carrera AND  
    	                           mig.sga_alumnos_resol.legajo            = mig.sga_activ_alumno.legajo    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   
    JOIN mig._cnv_pk_alumnos as m_alu ON m_alu.unidad_academica  = mig.sga_alumnos_resol.unidad_academica AND 
                                         m_alu.carrera			  = mig.sga_alumnos_resol.carrera AND 
                                         m_alu.legajo			  = mig.sga_alumnos_resol.legajo;

5)
SELECT count(*)
   FROM mig.sga_resol_activ 
    JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                                mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
    JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                                 mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha
    JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND  
                                   mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND  
                                   mig.sga_alumnos_resol.carrera           = mig.sga_activ_alumno.carrera AND  
    	                           mig.sga_alumnos_resol.legajo            = mig.sga_activ_alumno.legajo    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   
    JOIN mig._cnv_pk_alumnos as m_alu ON m_alu.unidad_academica  = mig.sga_alumnos_resol.unidad_academica AND 
                                         m_alu.carrera			  = mig.sga_alumnos_resol.carrera AND 
                                         m_alu.legajo			  = mig.sga_alumnos_resol.legajo;

6)
SELECT count(*)
   FROM mig._cnv_pk_reconocimiento as cnv_r
    JOIN sga_reconocimiento as r ON r.nro_tramite = cnv_r.nro_tramite
    JOIN mig.sga_resol_activ ON mig.sga_resol_activ.unidad_academica  = cnv_r.unidad_academica  AND 
                                mig.sga_resol_activ.resol_actividades = cnv_r.resol_actividades
    JOIN mig.sga_activ_resol ON mig.sga_activ_resol.unidad_academica = mig.sga_resol_activ.unidad_academica  AND 
                                mig.sga_activ_resol.resol_actividades = mig.sga_resol_activ.resol_actividades
    JOIN mig.sga_activ_alumno ON mig.sga_activ_alumno.unidad_academica  = mig.sga_activ_resol.unidad_academica AND  
                                 mig.sga_activ_alumno.resol_actividades = mig.sga_activ_resol.resol_actividades AND
                                 mig.sga_activ_alumno.area              = mig.sga_activ_resol.area AND 
                                 mig.sga_activ_alumno.actividad         = mig.sga_activ_resol.actividad AND
                                 mig.sga_activ_alumno.fecha             = mig.sga_activ_resol.fecha
    JOIN mig.sga_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_activ_alumno.unidad_academica AND  
                                   mig.sga_alumnos_resol.resol_actividades = mig.sga_activ_alumno.resol_actividades AND  
                                   mig.sga_alumnos_resol.carrera           = mig.sga_activ_alumno.carrera AND  
    	                           mig.sga_alumnos_resol.legajo            = mig.sga_activ_alumno.legajo    
    JOIN mig._cnv_pk_elementos as m_act ON m_act.unidad_academica = mig.sga_activ_resol.unidad_academica  AND 
                                           m_act.codigo           = mig.sga_activ_resol.actividad  AND 
    									   m_act.tipo             = 'ACTIVIDAD_EXT'
    JOIN sga_elementos as ele ON ele.elemento = m_act.elemento									   
    JOIN mig._cnv_pk_alumnos as m_alu ON m_alu.unidad_academica  = mig.sga_alumnos_resol.unidad_academica AND 
                                         m_alu.carrera			  = mig.sga_alumnos_resol.carrera AND 
                                         m_alu.legajo			  = mig.sga_alumnos_resol.legajo
    WHERE cnv_r.origen = 'EXTRACURRICULAR'
	  AND m_alu.alumno = r.alumno


Hola Alejandro
Tenés razón, los controles sobre las tablas sga_equiv_internas y sga_equiv_externas son consistentes.
Las actividades extracurriculares las estamos migrando con el parámetro actividades_extracur = 1, es decir como elementos.

Las 6 consultas retornan siempre la misma cantidad de registros: 47825 (no es el valor obtenido ni en cant_g2 ni en cant_g3, sino uno intermedio).

Iris