Error poscontrol actas cursadas

Hola:

Estamos migrando actas de regulares (cursadas) a Guaraní 3.17.1

En el poscontrol del módulo actas tenemos un error en la cantidad de actas de cursadas migradas a Guaraní:

sga_actas_detalle	Error: Cantidad de alumnos en actas de cursada no coninciden...	9.240,00	865.330,00

Efectivamente en ext.mig_actas_cursada_promoción tenemos 9240 registros todos con origen ‘R’ (regularidad) repartidos en 483 actas diferentes.

Al parecer el poscontrol tiene un error. Falta filtrar por alumno (o quizás número de acta). Porque en la consulta, cada registro de [b]ext.mig_acta_cursada_promocion /b se cruza con sga_actas_detalle y da un número enorme de registros de alumnos en actas de regulares en Guaraní (865.330).

-- Actas de Cursadas en G3   
	SELECT count(*) INTO cnt_actas_det_g3 
     FROM ext.mig_acta_cursada_promocion as mig,
           vw_comisiones as com,
		   sga_actas,
		   sga_actas_detalle
     WHERE mig.origen = 'R'
	   AND mig.comision_nombre        = com.comision_nombre
       AND mig.anio_academico         = com.anio_academico
       AND mig.periodo_lectivo_nombre = com.periodo_lectivo_nombre
       AND mig.actividad_codigo       = com.elemento_codigo
	   
	   AND sga_actas.comision  = com.comision		
	   AND sga_actas.origen    = 'R' 
	   AND sga_actas.tipo_acta = 'N' 
	   AND sga_actas.estado    = 'C'
	   AND sga_actas_detalle.id_acta = sga_actas.id_acta;

También vimos que este poscontrol se cambió en 3.16.0 (Antes en 3.15.1 no nos daba este error en la migración de actas de cursada).

Nos confirmarían si es un bug?

Gracias!

Federico

¿Puede ser que por cada comisión hayan generado mas de un acta de cursada?

Por favor, ejecuta estas consultas y enviá el resultado que devuelve cada una:

Consulta 1:

	SELECT count(*)   FROM ext.mig_acta_cursada_promocion as mig

Consulta 2:

	SELECT count(*)
     FROM ext.mig_acta_cursada_promocion as mig,
           vw_comisiones as com
     WHERE mig.origen = 'R'
	   AND mig.comision_nombre        = com.comision_nombre
       AND mig.anio_academico         = com.anio_academico
       AND mig.periodo_lectivo_nombre = com.periodo_lectivo_nombre
       AND mig.actividad_codigo       = com.elemento_codigo;

Consulta 3:

	SELECT count(*)
     FROM ext.mig_acta_cursada_promocion as mig,
           vw_comisiones as com,
		   sga_actas
     WHERE mig.origen = 'R'
	   AND mig.comision_nombre        = com.comision_nombre
       AND mig.anio_academico         = com.anio_academico
       AND mig.periodo_lectivo_nombre = com.periodo_lectivo_nombre
       AND mig.actividad_codigo       = com.elemento_codigo
	   
	   AND sga_actas.comision  = com.comision		
	   AND sga_actas.origen    = 'R'
	   AND sga_actas.tipo_acta = 'N'
	   AND sga_actas.estado    = 'C';


¿Puede ser que por cada comisión hayan generado mas de un acta de cursada?

No. Cada comisión tiene solo un acta.

Por favor, ejecuta estas consultas y enviá el resultado que devuelve cada una:

Las tres consultas devuelven 9240 registros.

La cantidad de registros difiere cuando se agrega al inner join la tabla sga_actas_detalle.

Saludos

Federico

¿9240 son la cantidad de actas de cursadas migradas o cantidad de alumnos de actas de cursadas migradas?

Porque ese control o que hace esta comparando la cantidad de alumnos de actas de cursadas, por eso en la consulta que hace de G3 se cuenta los alumnos que estan en sga_actas_detalle para esas actas de cursadas migradas.

9240 es el total de registros en la tabla ext.mig_acta_cursada_promocion

Son todos registros de actas de regulares (No estamos migrando ningún acta de promoción). En total son 483 actas de regulares que hacen un total de 9240 registros (acta_detalle o alumnos)

Lo que veo es que cada registro en ext.mig_acta_cursada_promocion coincide con cada uno de los alumnos que comparten el acta (Por eso se multiplica la cantidad de registros).

Pego un ejemplo de la misma consulta del precontrol pero trayendo los datos de las dos tablas (ext.mig_acta_cursada_promocion y sga_actas_detalle)

SELECT

mig.nro_acta AS mig_acta,
sga_actas.nro_acta AS g3_acta,
mig.comision_nombre AS mig_comision,
com.comision_nombre AS g3_comision,
sga_actas_detalle.alumno AS alumno,
mig.nro_documento AS nro_documento


     FROM ext.mig_acta_cursada_promocion as mig,
          negocio.vw_comisiones as com,
	  negocio.sga_actas,
	  negocio.sga_actas_detalle
     WHERE mig.origen = 'R'
       AND mig.comision_nombre        = com.comision_nombre
       AND mig.anio_academico         = com.anio_academico
       AND mig.periodo_lectivo_nombre = com.periodo_lectivo_nombre
       AND mig.actividad_codigo       = com.elemento_codigo
	   
	   AND sga_actas.comision  = com.comision		
	   AND sga_actas.origen    = 'R' 
	   AND sga_actas.tipo_acta = 'N' 
	   AND sga_actas.estado    = 'C'
	   AND sga_actas_detalle.id_acta = sga_actas.id_acta;
Salida

"mig_acta";"g3_acta";"mig_comision";"g3_comision";"alumno";"nro_documento"
"451";"451";"Unica";"Unica";2340;"39604498"
"451";"451";"Unica";"Unica";14944;"39604498"
"451";"451";"Unica";"Unica";18880;"39604498"
"451";"451";"Unica";"Unica";19001;"39604498"
"451";"451";"Unica";"Unica";19216;"39604498"
...

Se ve que un mismo número de documento coincide con varios alumnos de la misma acta

Saludos

Alguna novedad sobre el tema?

Gracias!

Federico, ahora vi donde estaba el problema cuando mencionaste lo del alumno.
Lo que sucede que la tabla de migracion ext.mig_acta_cursada_promocion contiene no solo la cabecera del acta (sga_actas) sino tambien los alumnos del acta (sga_actas_detalle) con lo cual faltaba el joinde cada alumno del acta con la tabla de alumnos/personas de Guarani 3.

Corre esta consulta, creo que asi debería ser el control sobre los datos en la base de Guarani 3:


SELECT count(*) 
     FROM ext.mig_acta_cursada_promocion as mig
     JOIN vw_comisiones as com ON (
	    mig.comision_nombre        = com.comision_nombre AND 
        mig.anio_academico         = com.anio_academico AND 
        mig.periodo_lectivo_nombre = com.periodo_lectivo_nombre AND 
        mig.actividad_codigo       = com.elemento_codigo)
	 JOIN sga_actas ON sga_actas.comision  = com.comision		
	 JOIN sga_actas_detalle ON sga_actas_detalle.id_acta = sga_actas.id_acta
	 JOIN sga_alumnos ON sga_alumnos.alumno = sga_actas_detalle.alumno 
	 JOIN mdp_personas ON mdp_personas.persona = sga_alumnos.persona
        JOIN mdp_personas_documentos as pd ON pd.documento = mdp_personas.documento_principal

     WHERE mig.origen = 'R'
	   AND sga_actas.origen    = 'R' 
	   AND sga_actas.tipo_acta = 'N' 
	   AND sga_actas.estado    = 'C'
	   AND pd.tipo_documento = mig.tipo_documento
	   AND pd.nro_documento  = mig.nro_documento;	

Hola

Esta consulta sí dio 9240, el total de registros de ext.mig_acta_cursada_promocion.

Entonces migramos bien :smiley:

Gracias Alejandro!

Ya ajustamos esos controles.
Te envio el archivo. Lo incluiremos en la próxima version.


fx_posctrl_actas.sql (10.9 KB)