-- Parche 076
-- Sincroniza el padron del registro auxiliar con las matriculas activas.
-- Cubre sesiones existentes de todos los bimestres y corrige notas transversales
-- que aun conservan el aula anterior despues de un cambio de seccion.
-- Es idempotente: puede ejecutarse nuevamente sin duplicar registros.

INSERT IGNORE INTO eval_auxiliar_sesion_estudiante (
  id_auxiliar_sesion,
  id_matricula
)
SELECT
  s.id_auxiliar_sesion,
  m.id_matricula
FROM matricula m
INNER JOIN eval_auxiliar_sesion s
  ON s.id_anio_lectivo = m.id_anio_lectivo
 AND s.id_aula = m.id_aula
INNER JOIN periodo_academico pa
  ON pa.id_periodo_academico = s.id_periodo_academico
 AND pa.id_anio_lectivo = m.id_anio_lectivo
WHERE m.id_estado_matricula = 1
  AND UPPER(pa.descripcion) LIKE '%BIMESTRE%';

INSERT IGNORE INTO nota_transversal_docente (
  id_anio_lectivo,
  id_periodo_academico,
  id_aula,
  id_docente,
  id_area_fuente,
  id_matricula,
  id_area_transversal,
  id_competencia_transversal,
  nota_literal,
  conclusion_descriptiva,
  observacion,
  creado_en,
  actualizado_en
)
SELECT
  nt.id_anio_lectivo,
  nt.id_periodo_academico,
  m.id_aula,
  nt.id_docente,
  nt.id_area_fuente,
  nt.id_matricula,
  nt.id_area_transversal,
  nt.id_competencia_transversal,
  nt.nota_literal,
  nt.conclusion_descriptiva,
  nt.observacion,
  nt.creado_en,
  nt.actualizado_en
FROM nota_transversal_docente nt
INNER JOIN matricula m
  ON m.id_matricula = nt.id_matricula
 AND m.id_anio_lectivo = nt.id_anio_lectivo
WHERE m.id_estado_matricula = 1
  AND nt.id_aula <> m.id_aula;

DELETE nt
FROM nota_transversal_docente nt
INNER JOIN matricula m
  ON m.id_matricula = nt.id_matricula
 AND m.id_anio_lectivo = nt.id_anio_lectivo
INNER JOIN nota_transversal_docente vigente
  ON vigente.id_periodo_academico = nt.id_periodo_academico
 AND vigente.id_aula = m.id_aula
 AND vigente.id_docente = nt.id_docente
 AND vigente.id_area_fuente = nt.id_area_fuente
 AND vigente.id_matricula = nt.id_matricula
 AND vigente.id_competencia_transversal = nt.id_competencia_transversal
WHERE m.id_estado_matricula = 1
  AND nt.id_aula <> m.id_aula
  AND vigente.id_nota_transversal <> nt.id_nota_transversal;
