Detección de egresados (planes con extracurriculares)

Hola
Estamos haciendo pruebas de migración de G2 a G3.20.

La operación » EGRESADOS » ACTUALIZACIONES »DETECTAR EGRESADOS EN FORMA AUTOMÁTICA arroja 0 resultados en algunos planes que migraron.
Lo mismo sucede en la operación » EGRESADOS » ACTUALIZACIONES »SOLICITAR CERTIFICACIONES al querer egresar a un alumno en particular.
Envío captura de pantalla de la estructura de uno de los planes y del resultado de querer emitir el título a un alumno de dicho plan.

Hasta donde tuve tiempo de indagar esto sucede en los planes que en la migración en su estructura se creó algún módulo vacío.
En este caso que envío de ejemplo, el plan consta de:

  • 1 módulo para el plan básico (que cuenta con todas las materias estructuradas)
  • 1 módulo para las orientaciones
  • 1 módulo creado como Área Única que está asociada a las materias de libre elección (actividades extracurriculares)

Este último módulo es el que siempre está vacío, pero requiere obtener XX cantidad de créditos para cumplirlo.
Con lo cual en la detección de egresados, siempre ese es el punto que falla.

Agradeceré me puedan orientar cómo solucionarlo, o qué debo analizar para corregirlo.
Desde ya, muchas gracias.

Saludos
Iris


estrucutra_plan_1.png

estrucutra_plan_1.png

solicita_certificado.png

solicita_certificado.png

Hola Iris!

Por lo que comentás pareciera que los alumnos no tienen cumplido el módulo de Área Única.

Como se trata de un módulo vacío que se cumple obteniendo XX créditos, entendemos que la manera de registrar la aprobación del mismo es a través de aprobaciones por resolución (ya sea a través de una única resolución total o de una serie de aprobaciones parciales hasta alcanzar la cantidad de créditos exigida).
Lo están llevando de esta manera?

Saludos!

Hola Martín
Correcto, el módulo quedó creado vacío en la migración, ya que corresponde a actividades extracurriculares otorgadas por resolución.
El alumno hace varias actividades extracurriculares y tiene que llegar a un total de créditos / horas, para que se de por cumplimentada (con ciertas características particulares que vamos a tener que personalizar supongo).
Estaba tratando de seguir un poco el código para ver dónde hace el control y qué lógica usa, y me encuentro que en un momento hace esta consulta:

SELECT		sga_reconocimiento_act.reconocimiento_total,
							SUM(sga_reconocimiento_act.creditos) as creditos
				FROM		sga_reconocimiento_act,
							sga_reconocimiento
				WHERE		sga_reconocimiento_act.nro_tramite = sga_reconocimiento.nro_tramite AND
							sga_reconocimiento.alumno = '9778' AND
							sga_reconocimiento_act.elemento = '544' AND
							sga_reconocimiento.estado = 'C' AND
							sga_reconocimiento_act.reconocimiento_total = 'N'
				GROUP BY	sga_reconocimiento_act.elemento,
							sga_reconocimiento_act.reconocimiento_total
[DEBUG][guarani] SQL con perfil de datos: SELECT	sga_elementos.entidad_subtipo
				FROM	sga_elementos
				WHERE	sga_elementos.elemento = '544' AND 
/*-------- PERFIL DE DATOS --------*/
 (sga_elementos.elemento) IN
( SELECT toba_pdtasoc_42.elemento
 FROM vw_ug_elementos toba_pdtasoc_42
 WHERE  ( toba_pdtasoc_42.unidad_gestion IN ('2') ) )

Dicha consulta no retorna nada.
Para el caso puntual que estoy analizando, el plan requiere de 500 créditos, y el alumno tiene 575 (sin controlar las cuestiones particulares de la reglamentación propia de la facultad).
Y detecté que sga_reconocimiento.estado = ‘A’ , por eso no suma nada para el alumno.

Dónde se administran en G3 los reconocimientos de las actividades extracurriculares?
Cual puede ser el motivo por el cual en la migración quedaron en estado abierta?

Cualquier orientación que puedas brindarme para poder seguir el análisis, te lo agradecería mucho.
Saludos.

Iris

Y detecté que sga_reconocimiento.estado = 'A' , por eso no suma nada para el alumno.
Te referis a que "sga_reconocimiento.estado = 'A'" es una condicion en una query o es que quedaron registros de aprobaciones por resolucion con estado A (Abierto) ?
Cual puede ser el motivo por el cual en la migración quedaron en estado abierta?
Las aprobaciones por resolución se migran con el mismo estado que estaban las actas de actividades extracurriculares en Guarani 2. Tabla [b]mig.sga_resol_activ[/b] Campo: [b]estado[/b]

¿Podes verificar eso?

SELECT 	mig.sga_resol_activ.estado, *
  FROM mig._cnv_pk_reconocimiento as cnv_r
  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_alumnos_resol ON  mig.sga_alumnos_resol.unidad_academica  = mig.sga_resol_activ.unidad_academica AND  
                                 mig.sga_alumnos_resol.resol_actividades = mig.sga_resol_activ.resol_actividades AND 
                                 mig.sga_alumnos_resol.carrera = cnv_r.carrera AND
                                 mig.sga_alumnos_resol.legajo  = cnv_r.legajo  
  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
  JOIN sga_alumnos ON sga_alumnos.alumno = m_alu.alumno
  JOIN vw_personas as p ON p.persona = a.persona 
  WHERE cnv_r.origen = 'EXTRACURRICULAR'
  AND p.apellido_nombres LIKE '%Martinez%'
 

2

Hola Alejandro
Si, migraron en estado “A”.
Observo en G2 lo siguiente:


SELECT DISTINCT estado FROM sga_activ_extracur; --> El único valor que retorna es "A"
SELECT DISTINCT estado FROM sga_resol_activ; --> Retorna "A" y "C"

La consulta que me pasás, para el alumno del ejemplo, retorna siempre “A” el estado.
Saludos

Iris

Ok. Se migraron tal cual estaban esas actas de actividades extracurriculares en Guarani 2.
Si definen que deberian estar Cerradas, entonces cambia el estado de Abierta (A) por Cerrada (C) en las aprobaciones por resolucion.
Tabla: sga_reconocimiento
Campo: estado

Con esto empezarás a ver ese reconocimiento de las actividades extracurriculares.
Por lo que comentas entonces migraron las actividades extracurriculares como actividades (de tipo extracurricular) en Guarani 3.
Estas actividades son siempre las mismas o el alumno puede traer cualquier actividad que hizo fuera de lainstitución y sumarla como actividad extracurricular? Porque esto implicaría estar modificando el plan de estudios para que forme parte del plan esas actividades.

Hola Alejandro
Gracias, me va a convenir pasar a cerradas las que correspondan.

Las actividades son siempre dentro de un posible rango de actividades que son las EX001, EX002, etc y los alumnos pueden hacer un conjunto de estas actividades hasta cubrir los créditos/hs necesarios. Si un alumno trae una actividad de fuera de la institución, el coordinador la evalúa y la acredita de ser necesario en alguna de las dadas EX001 o EX002…
Lo que suele darse es el caso que por reglamento se definan nuevas actividades y se agreguen nuevas EX… o tambión puede ser que para una EX… existente se modifiquen los topes de créditos/hs que otorga.
Cómo sería la manera más adecuada de trabajarlo? porque no veo práctico lo de la modificación del plan… ya que se de con cierta frecuencia este tipo de modificaciones.

Por otro lado, los créditos / hs a contabilizar tienen un tope por actividad, no necesariamente cuentan todos los créditos que se le hayan asignado al alumno. Dónde correspondería personalizar? Cuál sería la función o clase que calcula estos valores?

Muchas gracias por las orientaciones!!
Saludos.

Iris

Las actividades son siempre dentro de un posible rango de actividades que son las EX001, EX002, etc y los alumnos pueden hacer un conjunto de estas actividades hasta cubrir los créditos/hs necesarios. Si un alumno trae una actividad de fuera de la institución, el coordinador la evalúa y la acredita de ser necesario en alguna de las dadas EX001 o EX002...
Bien, entonces esta correcto como realizaron la migración. Definiendo cada activdad extrcurricular de G2 como una actividad de tipo extracurricular en G3.
Lo que suele darse es el caso que por reglamento se definan nuevas actividades y se agreguen nuevas EX... o tambión puede ser que para una EX... existente se modifiquen los topes de créditos/hs que otorga. Cómo sería la manera más adecuada de trabajarlo? porque no veo práctico lo de la modificación del plan... ya que se de con cierta frecuencia este tipo de modificaciones.
Bien, aca se pone interesante el tema. Esta pendiente de analisis o quizas de implementación el tema de poder modificar una version de plan que esta activa para [u]agregar actividades de tipo extracurricula[/u]r (no asi las de tipo materia). Similar al o que puede suceder con el agregado de optativas a una generica. Es por ello que te habíamos indicado en la migración que las actividades extracurriculares se incluyeran en el plan de estudios dentro deun modulo de actividades extracurriculares, identificado de forma diferente a cualquier modulo que se desee crear en un plan para agrupar materias (por ejemplo por año de cursada, por obligatorias/optativas o por cualquier otro concepto que quieran agrupar las mismas). Estos módulos que contienen actividades extracurriculares son del subtipo 6 "Area de Actividades Extracurriculares". Esto se definió para que en un futuro permitamos agregar (quitar creo que no....) actividades extracurriculares a modulos de ese tipo estando la versión del plan en estado activo, similar a lo que ocurre con los planes de estudio de propuestas de tipo "Cursos".

Si te parece por favor crea una solicitud haciendo referencia a este foro planteando esta necesidad y vemos si se incluye en la planificación de los nuevos desarrollos.

Fijate si en estos planes que tenes actividades extracurriculares si hay modulos de subtipo 6 y si estos contienen esas actividades extracurriculares:

-- Módulos que contiene una versión plan de estudios
SELECT * FROM vw_modulos_plan WHERE plan_version = xxxxxx;

-- Consulta que recupera las componentes directas de un módulo. La vista tiene ese nombre porque en general se usa para buscar las optativas de una generica:
SELECT * FROM vw_optativas_plan WHERE elemento_generica = <ID ELEMENTO DEL MODULO>;

2

Por otro lado, los créditos / hs a contabilizar tienen un tope por actividad, no necesariamente cuentan todos los créditos que se le hayan asignado al alumno. Dónde correspondería personalizar? Cuál sería la función o clase que calcula estos valores?
En el plan de estudios hay 3 campos que permiten definir creditos que actualmente se usa uno solo y es la cantidad de creditos que otorga la actividad, pero se puede definir créditos minimos y créditos máximos. Este rango de créditos son los que deberian usarse para controlarlos créditos que se le reconocen a un alumno para esa actividad permitiendo reconocer una cantidad que este en ese rango que no necesariamente son los que se cargaron en el campo "Créditos" para esa actividad en el plan. Cuando se reconoce una actividad por resolución, deberia proponer por defecto los créditos de la actividad en el plan pero permitir modificarlo y poner una cantidad que este en el rango definido (creditos mínimo - créditos máximo) y que luego para el cumplimiento del plan de estudios o mejor dicho del titulo que se requiera evaluar sumen esos creditos otorgados al alumno y no los definidos por defecto en el plan.

Verifiqué y actualmente se estan informando los créditos definidos para la actividad en el plan de estudios.

Para entender si estoy en lo correcto:
Definen un rango de creditos posibles para una actividad extracurricular, ejemplo
Créditos Mínimo = 3
Créditos Máximo = 8
Créditos = 5 (créditos por defecto)

Entonces un alumno cuando cumple esa actividad pueden reconocerle entre 3 y 8 créditos; supongamos se le reconocen 4 créditos.
Por defecto al dar de alta el reconocimiento de la actividad debería presentar los 5 créditos (los reconocidos por defecto) con la opción de cambiarlo en ese rango de 3 a 8 y luego para su historia académica valen los créditos reconocidos (en este ejemplo son 4 créditos).

¿Es asi?

3

Hola Alejandro
Muchas gracias por todo el detalle.

Quedó el pedido vía GDS como solicitud #57421, referido a la implementación del tema de poder modificar una versión de plan que esta activa para agregar actividades de tipo extracurricular.

La versión que tengo migrada actualmente no incluye las actividades extracurriculares, ya que lo hice con el parámetro actividades_extracur = 2. Estoy por hacer una nueva prueba de migración con algunos ajustes que estuve realizando sumado a esta modificación de actividades_extracur = 1.

Esta consulta:

-- Módulos que contiene una versión plan de estudios SELECT * FROM vw_modulos_plan WHERE plan_version = xxxxxx;
Devuelve el registro correspondiente al módulo de "Area única" que es la que incluye las actividades extracurriculares en G2.

Con respecto a esta otra consulta:

-- Consulta que recupera las componentes directas de un módulo. La vista tiene ese nombre porque en general se usa para buscar las optativas de una generica: SELECT * FROM vw_optativas_plan WHERE elemento_generica = ;
como que debo considerar? "elemento_plan", "elemento_revision" o "elemento". De todas formas, en este momento seguro que está vacío por el parámetro actividades_extracur que usara.

Ahora, con respecto a que en el plan de estudios hay 3 campos que permiten definir créditos, me surgen algunas preguntas.

  1. Es posible definir diferente cantidad de créditos / horas según el plan en el que está la actividad extracurricular? Es decir, para una misa actividad extracurricular definir diferentes valores de acuerdo al plan al que pertenezca?
  2. La definición de créditos mínimos y máximos, está disponible desde el sistema de gestión?
  3. Hay posibilidad de discriminar o diferenciar entre créditos y horas? Es decir, especificar si es una cosa o la otra? (excluyente)
  4. Es posible que una misma actividad sea reconocida por varias resoluciones (es decir, tener varios reconocimientos con distintos valores), y luego tomar la suma de los créditos otorgados efectivamente por cada resolución, acotando al máximo que esté definido en la actividad?

Muchas gracias!!!
Iris

Se continua via gds 57421

Con respecto a esta otra consulta: Cita -- Consulta que recupera las componentes directas de un módulo. La vista tiene ese nombre porque en general se usa para buscar las optativas de una generica: SELECT * FROM vw_optativas_plan WHERE elemento_generica = ; como que debo considerar? "elemento_plan", "elemento_revision" o "elemento". De todas formas, en este momento seguro que está vacío por el parámetro actividades_extracur que usara.
Perdon, me equivoque porque esa vista solo recupera actividades genéricas y sus optativas. Con lo cual no vas a poder ver ese modulo y como esta compuesto. Pero podes tomar la query de esa vista sin el filtro de que solo recupere actividades genéricas, es decir:
SELECT 
    -- Datos del módulo
	ep_modulo.plan_version,
    COALESCE(ep_modulo.nombre, e_modulo.nombre),
    e_modulo.codigo,
    e_modulo.elemento,
    er_modulo.elemento_revision,
	
	-- Datos de las componentes del modulo
    e_componente.elemento,
    er_componente.elemento_revision,
    e_componente.codigo,
    COALESCE(ep_componente.nombre, e_componente.nombre),
    e_componente.nombre_abreviado,
    ep_componente.elemento_plan,
	es_componente.entidad_tipo,
    e_componente.entidad_subtipo ,
    es_componente.nombre,
    e_componente.estado,
    ep_componente.creditos,
	ep_componente.horas_totales,
    sga_elementos_comp.puntaje,
    sga_elementos_comp.orden
FROM 
    sga_elementos_plan as ep_modulo
    JOIN sga_elementos_revision as er_modulo ON er_modulo.elemento_revision = ep_modulo.elemento_revision
	JOIN sga_elementos as e_modulo ON e_modulo.elemento = er_modulo.elemento
    JOIN sga_elementos_comp ON sga_elementos_comp.elemento_padre = er_modulo.elemento_revision
    JOIN sga_elementos_revision as er_componente ON er_componente.elemento_revision = sga_elementos_comp.elemento_hijo
    JOIN sga_elementos as e_componente ON e_componente.elemento = er_componente.elemento
    JOIN sga_g3entidades_subtipos as es_componente ON es_componente.entidad_subtipo = e_componente.entidad_subtipo
	JOIN sga_elementos_plan as ep_componente ON (ep_componente.plan_version = ep_modulo.plan_version AND ep_componente.elemento_revision = er_componente.elemento_revision)
 WHERE 
    e_modulo.elemento = <ELEMENTO DEL MODULO>
-- er_modulo.elemento_revision = <ELEMENTO_REVISION DEL MODULO	
 ;
Ahora, con respecto a que en el plan de estudios hay 3 campos que permiten definir créditos, me surgen algunas preguntas. 1. Es posible definir diferente cantidad de créditos / horas según el plan en el que está la actividad extracurricular? Es decir, para una misa actividad extracurricular definir diferentes valores de acuerdo al plan al que pertenezca?
Si, porque estos datos aunque cuando creas la actividad los registras, luego cuando agregas la actividad al plan podes modificar esos datos y poner los que correspondan a esa version de plan de estudios.
2. La definición de créditos mínimos y máximos, está disponible desde el sistema de gestión?
Si disponible para cargar un valor (al menos para actividades de tipo "materia" no recuerdo si estan habilitados para "actividades extracurriculares", pero si no lo estan debieramos habilitar la carga). Estos datos de creditos minimos y maximos no se estan considerando en ningun lugar. Lo que te comente antes es que esos tal vez deban considerarse en la operación de reconocimiento de actividades por resolución, que cuando se reconozca una actividad, si tiene definidos creditos minimos y maximos permita cargar una cantidad de creditos en este rango y sean estos los que le valen al alumno y no los créditos definidos de en el plan de estudios.
3. Hay posibilidad de discriminar o diferenciar entre créditos y horas? Es decir, especificar si es una cosa o la otra? (excluyente)
Si, hay campos separados para registrar creditos (creditos minimos, creditos maximos, creditos) y horas (horas totales)
4. Es posible que una misma actividad sea reconocida por varias resoluciones (es decir, tener varios reconocimientos con distintos valores), y luego tomar la suma de los créditos otorgados efectivamente por cada resolución, acotando al máximo que esté definido en la actividad?
Creo que para actividades solo permitimos el reconocimiento total, no reconocimientos parciales como si lo hacemos con los módulos a los cuales les permitimos reconocer créditos en forma parcial. Por eso creo, que este tema de actividades extracurriculares, si son un conjunto definido de actividades que el alumno puede hacer y están catalogadas previamente entonces pueden implementarlo como actividades de tipo "extracurricular" (idem "materias"), pero sino creo que no deberían implementarlo como actividades, sino tener uno o mas módulos de actividades extracurriculares (vacío) que se cumple con n cantidad de créditos u horas de actividades extracurriculares y luego al alumno le van reconociendo créditos y horas a cada uno de esos módulos por actividades que vaya realizando Para esto, actualmente solo se pueden reconocer créditos a los módulos, no horas. No quiere decir que no se pueda implementar en un futuro.

3

Hola Alejandro
Aún me falta ver y analizar en detalle tu último post. Espero este finde poder hacerlo.
Realicé una nueva migración con el parámetro actividades_extracur = 1. Con eso se solucionó el tema de las resoluciones de equivalencia que no tenían ningún registro de actividad, es decir no dio error en la cantidad de registros de la tabla sga_alumnos_resol que no tenían su correspondiente entrada en la tabla sga_activ_alumno.
Se nota que el parámetro adecuado para nuestro caso era 1.
Ahora, el punto es que, a la hora de ver el plan de estudios, el módulo denominado “Área única” que es la que corresponde a las actividades extracurriculares, se ve vacío.
Adjunto capturas de pantalla, con los módulos colapsados, y con los módulos desplegados, para que se visualice la idea.
Es correcto que dicho módulo haya quedado vacío a pesar de haber migrado las actividades extracurriculares como elementos?
De ser así, cual puede ser el inconveniente? Caso contrario, por qué no logramos detectar egresados?
Cualquier orientación por dónde comenzar a mirar es más que bienvenida!!
Gracias!
Saludos

Iris


estructura_plan_cerrada.png

estructura_plan_cerrada.png

estructura_plan_abierta.png

estructura_plan_abierta.png

Realicé una nueva migración con el parámetro actividades_extracur = 1. Con eso se solucionó el tema de las resoluciones de equivalencia que no tenían ningún registro de actividad, es decir no dio error en la cantidad de registros de la tabla sga_alumnos_resol que no tenían su correspondiente entrada en la tabla sga_activ_alumno.
Recuerden que ir por esta opción, implica que cada vez que agreguen una actividad extracurricular nueva, deberan versionar el plan de estudios. Porque es como agregar cualquier otra actividad al plan. Esto hasta tanto permitamos que un plan de estudios pueda modificarse estando activo sin necesidad de versionar, cuando lo que se desea agregar son actividades extracurriculares en modulos de tipo "Actividad Extracurricular".
Con eso se solucionó el tema de las resoluciones de equivalencia que no tenían ningún registro de actividad
Al migrarlo con la opcion 2. Esto hace que no se creen "actividades" por cada actividad extracurricular, sino que estas queden registradas en cada alumno por la parte de "Aprobaciones por resolucion", y dentro de estas en la parte de documentación. Ya que en ese reconocimiento lo que queda registrado ademas son los n créditos que se le reconocen al modulo del pland e estudios que corresponde a actividades extracurriculares. Por ejemplo, el tramite de aprobación por resolucion quedaría como que se reconocen 53 créditos al modulo "Area Unica", que corresponden a: - Pasantia en la facultad de económicas (20 creditos) - Ayudantia en la materia A (15 creditos) - Curso Nivel de Idioma (18 creditos)
Se nota que el parámetro adecuado para nuestro caso era 1.
Evaluen cada opción de como van a querer llevar la administración de actividades extracurriculares. Porque si una actividad extracurricular es cualquier cosa que el alumno presente y le sea reconocido en su plan, entonces me parece que tratarlo como una actividad no se si es la forma mas viable por lo que eso implica (dar de alta la actividad, agregarlo al plan versionando el mismo, haciendo que el plan crezca indefinidamente...)
Ahora, el punto es que, a la hora de ver el plan de estudios, el módulo denominado "Área única" que es la que corresponde a las actividades extracurriculares, se ve vacío.
No debería estar vacio, sino contener las actividades extracurriculares (registradas en sga_elementos. Estan alli?) . En Guarani 2, existe un area extracurricular que se llama "Area unica" en ese plan y ese Area contiene las actividades extracurriculares?

En el archvo de migracion 07_sga_modulos_plan.sql, en la linea 1134 es donde se agregan las activides extracurriculares en el modulo de actividad extracurricular del plan (modulo que corresponde con el area de actividades extracurriculares de Guarani 2).

Si te fijas alli, se agregan las actividades extracurriculares al modulo, si se esta migrando las actividades como “elementos”
Se realiza la siguiente consulta, fijate si devuelve datos:

SELECT 
-- datos de la actividad extracurricular
act.elemento, act.codigo, act.nombre,   

-- datos del area de actividad extracurricular
e_area.elemento, e_area.codigo, e_area.nombre, 

aa.subarea, aa.actividad, ae.nombre, aa.puntaje_minimo, aa.puntaje_maximo, cnv_ae.elemento, er.elemento_revision

FROM mig.sga_activ_por_area as aa
 JOIN mig.sga_activ_extracur as ae ON (ae.unidad_academica = aa.unidad_academica AND   ae.actividad = aa.actividad)
 JOIN mig._cnv_pk_elementos as cnv_ae ON (cnv_ae.unidad_academica = ae.unidad_academica AND 
				                                            cnv_ae.codigo  			= ae.actividad AND
								    cnv_ae.tipo    			= 'ACTIVIDAD_EXT')
JOIN sga_elementos_revision as er ON er.elemento = cnv_ae.elemento 	
JOIN sga_elementos_comp as ec ON (
                                                              -- ec.elemento_padre = cursor_area.elemento_revision AND  -- Area extracurricualr 
			                                     ec.elemento_hijo  = er.elemento_revision)				-- Actividad extracurricular
JOIN sga_elementos as actividad ON actividad.elemento = er.elemento

JOIN sga_elementos_revision as er_area ON er_area.elemento_revision = ec.elemento_padre
JOIN sga_elementos_revision as e_area ON e_area.elemento = er_area.elemento 	

-- WHERE aa.unidad_academica = cursor_area.unidad_academica
--    AND aa.area             = cursor_area.area
ORDER BY e_area.nombre, aa.subarea, ae.nombre, aa.actividad

2

Hola Alejandro
Como estructura de uno de los planes, tenemos la imagen que te paso en adjunto.
Esta consulta:

SELECT * FROM sga_elementos se WHERE elemento = 859;

devuelve lo siguiente:

[tr]
[td]elemento [/td][td] nombre[/td][td] nombre_abreviado[/td][td] codigo[/td][td] entidad_subtipo[/td][td] entidad[/td][td] compartible[/td][td] estado[/td][td] disponible_para[/td]
[/tr][tr]
[td]859[/td][td] Area única[/td][td] Area única[/td][td] 1[/td][td] 6[/td][td] 115.619[/td][td] N[/td][td] A[/td][td] T[/td]
[/tr]

Es decir que como debería tomar el elemento 859??

Si es así, esta consulta que indicás no devuelve nada, está vacía.

SELECT
    -- Datos del módulo
	ep_modulo.plan_version,
    COALESCE(ep_modulo.nombre, e_modulo.nombre),
    e_modulo.codigo,
    e_modulo.elemento,
    er_modulo.elemento_revision,
	
	-- Datos de las componentes del modulo
    e_componente.elemento,
    er_componente.elemento_revision,
    e_componente.codigo,
    COALESCE(ep_componente.nombre, e_componente.nombre),
    e_componente.nombre_abreviado,
    ep_componente.elemento_plan,
	es_componente.entidad_tipo,
    e_componente.entidad_subtipo ,
    es_componente.nombre,
    e_componente.estado,
    ep_componente.creditos,
	ep_componente.horas_totales,
    sga_elementos_comp.puntaje,
    sga_elementos_comp.orden
FROM
    sga_elementos_plan as ep_modulo
    JOIN sga_elementos_revision as er_modulo ON er_modulo.elemento_revision = ep_modulo.elemento_revision
	JOIN sga_elementos as e_modulo ON e_modulo.elemento = er_modulo.elemento
    JOIN sga_elementos_comp ON sga_elementos_comp.elemento_padre = er_modulo.elemento_revision
    JOIN sga_elementos_revision as er_componente ON er_componente.elemento_revision = sga_elementos_comp.elemento_hijo
    JOIN sga_elementos as e_componente ON e_componente.elemento = er_componente.elemento
    JOIN sga_g3entidades_subtipos as es_componente ON es_componente.entidad_subtipo = e_componente.entidad_subtipo
	JOIN sga_elementos_plan as ep_componente ON (ep_componente.plan_version = ep_modulo.plan_version AND ep_componente.elemento_revision = er_componente.elemento_revision)
 WHERE
    e_modulo.elemento = <ELEMENTO DEL MODULO>
-- er_modulo.elemento_revision = <ELEMENTO_REVISION DEL MODULO	
 ;

Acá es donde deberían estar asociadas las actividades extracurriculares, correcto?

En nuestro caso, como te comentaba, las actividades extracurriculares son siempre dentro de un posible rango prestablecido (que suele tener sus modificaciones, con lo cual aguardamos la posibilidad de poder tratarlas como las genéricas, teniendo la posibilidad de modificar una existente o agregar alguna nueva).

Cómo debo proceder para que queden asociadas al módulo las actividades? O qué proceso fue el que falló en la migración por el cual no quedaron asociadas?

Esta otra consulta que indicás, da error en nombre “act” y en nombres de columnas:

SELECT
-- datos de la actividad extracurricular
act.elemento, act.codigo, act.nombre,   

-- datos del area de actividad extracurricular
e_area.elemento, e_area.codigo, e_area.nombre,

aa.subarea, aa.actividad, ae.nombre, aa.puntaje_minimo, aa.puntaje_maximo, cnv_ae.elemento, er.elemento_revision

FROM mig.sga_activ_por_area as aa
 JOIN mig.sga_activ_extracur as ae ON (ae.unidad_academica = aa.unidad_academica AND   ae.actividad = aa.actividad)
 JOIN mig._cnv_pk_elementos as cnv_ae ON (cnv_ae.unidad_academica = ae.unidad_academica AND
				                                            cnv_ae.codigo  			= ae.actividad AND
								    cnv_ae.tipo    			= 'ACTIVIDAD_EXT')
JOIN sga_elementos_revision as er ON er.elemento = cnv_ae.elemento 	
JOIN sga_elementos_comp as ec ON (
                                                              -- ec.elemento_padre = cursor_area.elemento_revision AND  -- Area extracurricualr
			                                     ec.elemento_hijo  = er.elemento_revision)				-- Actividad extracurricular
JOIN sga_elementos as actividad ON actividad.elemento = er.elemento

JOIN sga_elementos_revision as er_area ON er_area.elemento_revision = ec.elemento_padre
JOIN sga_elementos_revision as e_area ON e_area.elemento = er_area.elemento 	

-- WHERE aa.unidad_academica = cursor_area.unidad_academica
--    AND aa.area             = cursor_area.area
ORDER BY e_area.nombre, aa.subarea, ae.nombre, aa.actividad

Pero si hago SELECT * y descarto el ORDER BY, no devuelve nada.

Por otro lado, esta vez, al migrar con el parámetro actividades_extracur = 1 quedaron las actividades todas cargadas en:

SELECT * FROM sga_elementos WHERE entidad_subtipo = 51

Gracias por la orientación que pudieras darme. Necesitamos poder reconocer los créditos/horas de los alumnos que tienen reconocidos por las actividades extracurriculares.
Saludos

Iris


estructura_plan_cerrada.png

estructura_plan_cerrada.png

Hola de nuevo

Estaba tratando de seguir el archvo de migracion 07_sga_modulos_plan.sql, en la linea 1134 donde se agregan las actividades extracurriculares en el modulo de actividad extracurricular del plan.
Por el IF entra ya que _migrar_actividades_extracurriculares = ‘1’.

Pero cuando se trata de establecer el cursor6, observo que:

SELECT aa.subarea, aa.actividad, ae.nombre, aa.puntaje_minimo, aa.puntaje_maximo, cnv_ae.elemento, er.elemento_revision
                           FROM mig.sga_activ_por_area as aa
						   JOIN mig.sga_activ_extracur as ae ON (ae.unidad_academica = aa.unidad_academica AND 
						                                         ae.actividad = aa.actividad)
						   JOIN mig._cnv_pk_elementos as cnv_ae ON (cnv_ae.unidad_academica = ae.unidad_academica AND 
						                                            cnv_ae.codigo  			= ae.actividad AND
																    cnv_ae.tipo    			= 'ACTIVIDAD_EXT')
						   JOIN sga_elementos_revision as er ON er.elemento = cnv_ae.elemento 	
						   JOIN sga_elementos_comp as ec ON (ec.elemento_padre = cursor_area.elemento_revision AND  -- Area extracurricualr 
						                                     ec.elemento_hijo  = er.elemento_revision)				-- Actividad extracurricular
						  WHERE aa.unidad_academica = cursor_area.unidad_academica
						    AND aa.area             = cursor_area.area
                       ORDER BY aa.subarea, ae.nombre, aa.actividad

Si dicha consulta la ajusto para un cursor_area específico (y que existe) no devuelve ningún registro.

Tratando de desglosar la consulta, lo que excluye todo posible valor es el JOIN sga_elementos_comp.
Es decir, esta consulta retorna todas las actividades extracurriculares:

SELECT aa.subarea, aa.actividad, ae.nombre, aa.puntaje_minimo, aa.puntaje_maximo, cnv_ae.elemento, er.elemento_revision
                           FROM mig.sga_activ_por_area as aa
						   JOIN mig.sga_activ_extracur as ae ON (ae.unidad_academica = aa.unidad_academica AND 
						                                         ae.actividad = aa.actividad)
						   JOIN mig._cnv_pk_elementos as cnv_ae ON (cnv_ae.unidad_academica = ae.unidad_academica AND 
						                                            cnv_ae.codigo  			= ae.actividad AND
																    cnv_ae.tipo    			= 'ACTIVIDAD_EXT')
						   JOIN sga_elementos_revision as er ON er.elemento = cnv_ae.elemento 	

Pero al agregarle el JOIN sga_elementos_comp es donde no encuentra registros.

Gracias por la ayuda!!
Iris

Puede ser que el problema estuvo en un archivo anterior de migracion, por favor fijate si alguna de estas dos consultas devuelve datos:

– enditdad_subtipo = 1

SELECT	
	ser.elemento_revision as ser_elemento,  -- AREA EXTRACURRICULAR (padre)
	ser1.elemento_revision as ser1_elemento, -- ACTIVIDAD EXTRACURRICULAR (hijo)
	ele1.nombre
FROM 	
	mig.sga_activ_por_area,
	mig._cnv_pk_elementos  as mcpe,  -- AREA EXTRACURRICULAR
	sga_elementos_revision as ser,
	sga_elementos as ele,
	mig._cnv_pk_elementos  as mcpe1, -- Actividades extracurriculares
	sga_elementos_revision as ser1,
	sga_elementos as ele1
WHERE   
	mcpe.unidad_academica = mig.sga_activ_por_area.unidad_academica AND
	mcpe.codigo           = cast(mig.sga_activ_por_area.area as varchar) AND
	mcpe.tipo             = 'AREA_EXT' AND
	mcpe.migrar           = 1 AND
	
	ser.elemento        = mcpe.elemento  AND
	ele.elemento        = ser.elemento AND
	ele.entidad_subtipo = 1 AND -- AREA EXTRACURRICULAR es un MODULO

	mcpe1.unidad_academica = mig.sga_activ_por_area.unidad_academica AND
	mcpe1.codigo           = cast(mig.sga_activ_por_area.actividad as varchar) AND
	mcpe1.tipo             = 'ACTIVIDAD_EXT' AND
	
	ser1.elemento        = mcpe1.elemento AND 
	ele1.elemento        = ser1.elemento AND
	ele1.entidad_subtipo = 51  -- Actividad Extracurricular
	
ORDER BY mcpe.elemento, ele1.nombre;

– enditdad_subtipo = 6

SELECT	
	ser.elemento_revision as ser_elemento,  -- AREA EXTRACURRICULAR (padre)
	ser1.elemento_revision as ser1_elemento, -- ACTIVIDAD EXTRACURRICULAR (hijo)
	ele1.nombre
FROM 	
	mig.sga_activ_por_area,
	mig._cnv_pk_elementos  as mcpe,  -- AREA EXTRACURRICULAR
	sga_elementos_revision as ser,
	sga_elementos as ele,
	mig._cnv_pk_elementos  as mcpe1, -- Actividades extracurriculares
	sga_elementos_revision as ser1,
	sga_elementos as ele1
WHERE   
	mcpe.unidad_academica = mig.sga_activ_por_area.unidad_academica AND
	mcpe.codigo           = cast(mig.sga_activ_por_area.area as varchar) AND
	mcpe.tipo             = 'AREA_EXT' AND
	mcpe.migrar           = 1 AND
	
	ser.elemento        = mcpe.elemento  AND
	ele.elemento        = ser.elemento AND
	ele.entidad_subtipo = 6 AND              -- AREA EXTRACURRICULAR es un MODULO

	mcpe1.unidad_academica = mig.sga_activ_por_area.unidad_academica AND
	mcpe1.codigo           = cast(mig.sga_activ_por_area.actividad as varchar) AND
	mcpe1.tipo             = 'ACTIVIDAD_EXT' AND
	
	ser1.elemento        = mcpe1.elemento AND 
	ele1.elemento        = ser1.elemento AND
	ele1.entidad_subtipo = 51  -- Actividad Extracurricular
	
ORDER BY mcpe.elemento, ele1.nombre;

2

Hola Alejandro
La primer consulta no devuelve nada.
La segunda consulta devuelve 1995 registros (son 35 actividades extracurriculares en total).
Saludos

Iris

Perfecto, ese era el problema. El modulo no se estaba completando por el subtipo que le asigné (entidad_subtipo = 6 → Modulo de Actividades Extracurriculares). Asignamos este subtipo de modulo para que a futuro los planes con estos modulos en su composición puedan ser modificados, es decir poder agregar actividades extracurriculares (idem genericas) sin necesidad de versionar el plan de estudios.

Te envio nuevamente el archivo de migración 06_sga_elementos.sql


06_sga_elementos.sql (17 KB)

Gracias Alejandro.
Es decir que debería hacer una nueva prueba de migración.
Cuando la tenga te cuento como queda.
Saludos.

Iris