-- ============================================================================
-- Jefe inmediato congelado en el acta de labor docente
--
-- El acta imprimía siempre el jefe inmediato de la planta ACTIVA de hoy
-- (ColaboradoresModel::getDirectorActualPlantaByCorreo, filtro Estado = 1).
-- Si Talento Humano actualizaba la planta o el docente cambiaba de jefe, un
-- acta ya firmada empezaba a imprimirse con un jefe distinto al que la firmó.
--
-- Desde este semestre el acta guarda su propio jefe inmediato:
--
--   * Al pulsar "Enviar a docente" el sistema copia sobre el acta el jefe de
--     la planta activa en ese momento (labor.JefeInmediato y compañía).
--   * Al imprimir, si el acta TIENE ese dato lo usa; si el campo está VACÍO
--     usa el jefe de la planta activa, exactamente como funcionaba antes.
--
-- Por eso las actas de semestres anteriores NO se tocan: siguen mostrando el
-- jefe de planta, tal como se venían imprimiendo.
-- ============================================================================

-- 1. Columnas nuevas en labor ------------------------------------------------
--    Todas nullable: las actas viejas se quedan en NULL a propósito, y así
--    sincronizarLabor puede seguir creando actas sin asignarlas.
ALTER TABLE `labor`
  ADD COLUMN `JefeInmediato` VARCHAR(255) DEFAULT NULL AFTER `Observaciones`,
  ADD COLUMN `JefeInmediatoCargo` VARCHAR(255) DEFAULT NULL AFTER `JefeInmediato`,
  ADD COLUMN `JefeInmediatoCorreo` VARCHAR(255) DEFAULT NULL AFTER `JefeInmediatoCargo`,
  ADD COLUMN `JefeInmediatoDocumento` VARCHAR(24) DEFAULT NULL AFTER `JefeInmediatoCorreo`,
  ADD COLUMN `JefeInmediatoFecha` DATETIME DEFAULT NULL AFTER `JefeInmediatoDocumento`;

-- 2. Vista de labor ----------------------------------------------------------
--    Las pantallas del acta leen la tabla, no la vista, así que este paso sólo
--    aplica si se quiere exponer el jefe inmediato en listados o reportes.
--
--    Ejemplo:
--    ALTER VIEW `vista_labor` AS SELECT l.*, ... FROM labor l ...;

-- 3. NO hay backfill de actas históricas --------------------------------------
--    Decisión explícita: las actas de semestres anteriores se dejan con el
--    campo en NULL para que sigan imprimiendo el jefe de la planta activa,
--    igual que antes de este cambio. Escribirles un jefe histórico cambiaría
--    actas ya impresas y archivadas.
--
--    Si en el futuro se quisiera congelar también las históricas, habría que
--    decidir de dónde sale ese jefe (planta activa hoy, o el contrato que
--    cruzaba el semestre) y hacerlo como un proceso aparte y revisado.

-- 4. Verificación ------------------------------------------------------------
--    Actas nuevas (de este semestre en adelante) que ya salieron al docente y
--    quedaron sin jefe congelado: indica que el docente no tenía registro en la
--    planta activa al momento de enviar el acta. Reemplace el periodo por el
--    que esté trabajando.
SELECT Periodo,
       EstadoLabor,
       COUNT(*) AS ActasSinJefeCongelado
  FROM labor
 WHERE Periodo = '2026-2'
   AND EstadoLabor >= 2
   AND (JefeInmediato IS NULL OR JefeInmediato = '')
 GROUP BY Periodo, EstadoLabor;

--    Y el detalle de lo que sí quedó congelado, para revisar antes de auditar:
SELECT Id, Periodo, Nombre AS Docente, JefeInmediato, JefeInmediatoCargo, JefeInmediatoFecha
  FROM labor
 WHERE Periodo = '2026-2'
   AND JefeInmediato IS NOT NULL
   AND JefeInmediato <> ''
 ORDER BY JefeInmediatoFecha DESC;
