-- ============================================================================
-- Subcategorías de Docencia Directa (código 500) y cálculo automático de las
-- horas de Preparación, Evaluación y Seguimiento (PES: 501 / 502 / 503).
--
-- El director carga las horas de docencia directa discriminadas por
-- subcategoría y el sistema genera las líneas de PES que le corresponden.
-- ============================================================================

-- 1. Columnas nuevas en proyectos_docentes -----------------------------------
--    SubcategoriaDocencia: subcategoría de código 500 que originó la línea.
--    HorasDigitadas      : total que digitó el director para la subcategoría.
--                          En pregrado presencial ese total se reparte entre
--                          docencia directa y PES (12 -> 8 de 500 + 4 de 501),
--                          por eso no coincide con HorasSemana y se guarda aparte.
--    GeneradoAutomatico  : 1 cuando la línea de PES la generó el sistema.
ALTER TABLE `proyectos_docentes`
  ADD COLUMN `SubcategoriaDocencia` VARCHAR(60) DEFAULT NULL AFTER `IdProyecto`,
  ADD COLUMN `HorasDigitadas` INT(11) NOT NULL DEFAULT 0 AFTER `SubcategoriaDocencia`,
  ADD COLUMN `GeneradoAutomatico` TINYINT(1) NOT NULL DEFAULT 0 AFTER `HorasDigitadas`;

CREATE INDEX `idx_proyectos_docentes_subcategoria`
  ON `proyectos_docentes` (`Docente`, `Periodo`, `SubcategoriaDocencia`);

-- 2. Vista de proyectos docentes ---------------------------------------------
--    La vista vista_proyectos_docentes debe exponer las dos columnas nuevas.
--    Si la vista se creó con una lista explícita de columnas, agréguelas.
--    (Las pantallas de labor leen la subcategoría directamente de la tabla,
--    así que este paso es opcional y sólo aplica a reportes sobre la vista.)
--
--    Ejemplo:
--    ALTER VIEW `vista_proyectos_docentes` AS
--      SELECT pd.*, p.IdTipoLabor AS ProyectoIdTipoLabor
--      FROM proyectos_docentes pd
--      LEFT JOIN proyectos p ON p.Id = pd.IdProyecto;

-- 3. Modo automático en la configuración de porcentajes ----------------------
--    La labor "Automático" en porcentajes_labor.Porcentaje activa el cálculo
--    automático del periodo. Ejemplo para el periodo 2026-1:
--
--    UPDATE `porcentajes_labor`
--       SET `Porcentaje` = '[{"porcentaje":"100","nombre":"Automático"}]'
--     WHERE `Semestre` = '2026-1';

-- 4. Reglas aplicadas por el sistema (referencia, no requiere SQL) -----------
--    El director digita un TOTAL por subcategoría y el sistema lo separa:
--
--    a) SE REPARTE (el PES sale del total digitado, no suma horas nuevas)
--       Pregrado Presencial, relación 75% - 25%:
--         digitando 12 -> 8 horas de código 500 + 4 horas de código 501 (total 12)
--
--    b) SE ADICIONA (el PES son horas nuevas sobre el total digitado)
--       Pregrado Virtual           -> sin PES (ya está en el modelo instruccional)
--       Especialización Presencial -> PES 502 = digitadas * 0,5
--       Especialización Virtual    -> PES 502 = digitadas * 0,5
--       Maestría Presencial        -> PES 503 = digitadas * 1
--       Maestría Virtual           -> PES 503 = digitadas * 1
--         digitando 12 en maestría -> 12 horas de código 500 + 12 de código 503 (total 24)
--
--    Requisito: deben existir proyectos activos para los códigos 501, 502 y 503
--    en la tabla `proyectos` (relacionados por IdTipoLabor con tipos_labor_docente).
SELECT t.Codigo, COUNT(p.Id) AS ProyectosConfigurados
  FROM tipos_labor_docente t
  LEFT JOIN proyectos p ON p.IdTipoLabor = t.Id AND p.Estado = 1
 WHERE t.Codigo IN ('500','501','502','503')
 GROUP BY t.Codigo;
