Problema al totalizar los módulos de Actividades Extracurriculares

Al evaluar el cumplimiento de una certificacion (titulo) siempre se hace en base a la version actual del plan en que se encuentra el alumno.
Pueden ver las actividades de la version actual con la consulta:

SELECT * FROM vw_actividades_plan WHERE plan_version = ....

Pueden ver los modulos de la version actual con la consulta:

SELECT * FROM vw_modulos_plan WHERE plan_version = ....

O ambos con:

SELECT * FROM vw_elementos_plan WHERE plan_version = ....
El alumno ha realizado actividades en los dos modulos pero al momento de egresar toma solo los módulos del plan actual
El alumno realiza actividades, luego se la considera para el modulo que se este evaluando en cada momento. En este caso se lo evalua para el módulo segun la version de plan actual.
por eso pensamos que el elemento debería ser el mismo
Si. Es mas si el plan lo crean desde Guarani 3, y luego crean una nueva version, por cada modulo se crea una nueva revision de cada modulo, es decir un nuevo registro en la tabla [b]sga_elementos_revision[/b], la cual luego se registra en la nueva version del plan (sga_elementos_plan)

Pero Uds aca estan hablando de planes diferentes, no de versiones de un mismo plan, por lo cual se crearon modulos diferentes.
Una opcion, como sucede con equivalencias entre planes cuando cambian las actividades, es volver a reconocer en el nuevo plan en que se encuentra el alumno los creditos a ese modulo (el modulo del 2do plan), como lo hicieron en el plan anterior con el otro modulo.

e hicimos una prueba cambiando el elemento=4631 por 4630 en las tablas sga_elementos_revision y sga_reconocimiento_act y lo verificamos para un alumno con la siguiente consulta de la funcion get_modulos_reconocidos_por_resolucion_alumno($alumno) de co_alumnos.php
Si quisieran utilizar el mismo modulo del 1er plan en el 2do plan pero con una revision diferente deberian:

Supongamos que tienen:
Plan 1 - Modulo 1 (4630) - Revision 1 (dato inventado 2543)
Plan 2 - Modulo 2 (4631) - Revision 1 (dato inventado 3025)

1- Crear un nuevo registro en sga_elementos_revision (en base al actual)
Para elemento 4630 crear una nueva revision. Supongamos se genera la revision 3059.

INSERT INTO sga_elementos_revision (elemento, regla, parametros, origen_creditos)
   SELECT 4630, regla, parametros, origen_creditos
        FROM sga_elementos_revision 
    WHERE elemento_revision = 3025

2- Crear los registros en sga_elementos_comp (con las mismas actividades que estan actualmente en el 2do plan). Se supone que estas actividades son las mismas que las del 1er plan, o es un modulo vacio?

INSERT INTO sga_elementos_comp (elemento_padre, elemento_hijo, puntaje, orden)
   SELECT 3059, elemento_hijo, puntaje, orden 
      FROM sga_elementos_comp 
   WHERE elemento_padre = 3025;

3- Cambiar en la version del 2do plan el dato “elemento_revision” del modulo, por el nuevo creado en el punto 1.

UPDATE sga_elementos_plan
     SET elemento_revision = 3059
   WHERE plan_version = .....      
        AND elemento_revision = 3025;

  1. Cambiar en la tabla sga_elementos_comp que corresponde al modulo raiz (si es que aqui estaba el modulo de actividades extracurriculares) de la version del plan la revisión del modulo extracurricular:
UPDATE sga_elementos_comp
       SET elemento_hijo = 3059
   WHERE elemento_padre = <elemento_revision del modulo raiz>
       AND elemento_hijo = 3025;

Pueden buscar los modulos de la vesrion del plan con:

SELECT * FROM vw_modulos_plan WHERE plan_version = ......
  1. Cambiar el dato entidad que corresponde al modulo que cambiaste en el cumplimiento del titulo en el Plan 2:
UPDATE sga_condiciones_requisitos 
      SET entidad = (SELECT entidad FROM sga_elementos WHERE elemento = 4630) -- Entidad del modulo original del Plan 1 que ahora se asignó al plan 2
 WHERE  requisito_condicion IN 
    (SELECT requisito_condicion
          FROM vw_condiciones
      WHERE condicion_tipo = '3'  -- Cumplimiento de Titulos
            AND plan_version =  <Version del Plan 2>
            AND condicion_entidad = (SELECT entidad FROM sga_certificados WHERE certificado = ....... )  -- id de certificado correspondiente al titulo 
            AND entidad = (SELECT entidad FROM sga_eleemntos WHERE elemento = 4631) -- Modulo de actividades extracurriculares que estaba en el Plan 2
   ;


Con esto el alumno seguirá teniendo reconocido creditos para el modulo 4630, porque asi lo tiene registrado en la tabla sga_reconocimiento_act y no necesitan volver a reconocerle los creditos en el 2do modulo (4631) porque ya no existe en el 2do plan.

No tenemos casos de que un modulo este en diferentes planes. Si en diferentes versiones de un plan, en cada version con su correspondiente revision.
Pueden probar esto en una base de test y verificar si funciona y no surge otro problema.

También estuvimos analizando en cambiarles a los módulos de actividades extracurriculares subtipo = 1 por 6
Esto lo podrian hacer, ya que el subtipo 6 se usa para "Areas de Actividades Extracurriculares", con la particuaridad que este tipo de modulo solo puede contener otros modulos de subtipo 6 o actividades de subtipo 51 (Actividades Extracurriculares) Aunque esto podrian ajustarlo cambiando la definicion en la tabla [b]sga_elementos_relacion[/b], que indica para cada tipo de modulo que elementos (modulos o submodulos) puede contener. En principio no deberian modificar esta tabla, o de desear hacerlo que nos consulten para ver si es posible o si trae alguna complicación que el sistema no este preparado para esa combinación.

5