-- Parche adaptado a COMANO: conclusiones descriptivas hasta 250 caracteres.
-- Basado en C:\Users\Alvert\Downloads\cneb_ebr_update_conclusiones_250.sql.

SET NAMES utf8mb4;

DROP PROCEDURE IF EXISTS sp_sugerir_conclusiones_manual_250;
DROP PROCEDURE IF EXISTS sp_sugerir_conclusiones_por_evaluacion_250;
DROP PROCEDURE IF EXISTS sp_cneb_sugerir_conclusion_nota;
DROP VIEW IF EXISTS vw_opciones_conclusion_250;
DROP VIEW IF EXISTS vw_evaluaciones_conclusion_obligatoria;
DROP TABLE IF EXISTS cneb_opcion_conclusion_descriptiva;
DROP FUNCTION IF EXISTS fn_limitar_texto_250;

DELIMITER $$
CREATE FUNCTION fn_limitar_texto_250(p_texto TEXT)
RETURNS VARCHAR(250)
DETERMINISTIC
BEGIN
  DECLARE v_texto TEXT;
  DECLARE v_corte VARCHAR(250);

  SET v_texto = TRIM(REPLACE(REPLACE(REPLACE(IFNULL(p_texto, ''), CHAR(13), ' '), CHAR(10), ' '), '  ', ' '));

  WHILE LOCATE('  ', v_texto) > 0 DO
    SET v_texto = REPLACE(v_texto, '  ', ' ');
  END WHILE;

  IF CHAR_LENGTH(v_texto) <= 250 THEN
    RETURN v_texto;
  END IF;

  SET v_corte = LEFT(v_texto, 250);

  IF LOCATE(' ', REVERSE(v_corte)) > 0 THEN
    SET v_corte = LEFT(v_corte, 250 - LOCATE(' ', REVERSE(v_corte)));
  END IF;

  RETURN TRIM(v_corte);
END$$
DELIMITER ;

ALTER TABLE cneb_competencia
  ADD COLUMN IF NOT EXISTS nombre_corto_conclusion VARCHAR(120) NULL AFTER nombre;

UPDATE cneb_competencia
SET nombre_corto_conclusion = CASE codigo_script
  WHEN 'C01_IDENTIDAD' THEN 'construccion de su identidad'
  WHEN 'C02_MOTRICIDAD' THEN 'motricidad autonoma'
  WHEN 'C03_VIDA_SALUDABLE' THEN 'vida saludable'
  WHEN 'C04_SOCIOMOTRIZ' THEN 'interaccion sociomotriz'
  WHEN 'C04_INTERACTUA_SOCIOMOTRIZ' THEN 'interaccion sociomotriz'
  WHEN 'C05_APRECIA_ARTE' THEN 'apreciacion artistica'
  WHEN 'C06_CREA_ARTE' THEN 'creacion artistica'
  WHEN 'C07_ORAL_LM' THEN 'comunicacion oral'
  WHEN 'C08_LEE_LM' THEN 'lectura'
  WHEN 'C09_ESCRIBE_LM' THEN 'escritura'
  WHEN 'C10_ORAL_CASTELLANO_SL' THEN 'comunicacion oral en castellano como segunda lengua'
  WHEN 'C11_LEE_CASTELLANO_SL' THEN 'lectura en castellano como segunda lengua'
  WHEN 'C12_ESCRIBE_CASTELLANO_SL' THEN 'escritura en castellano como segunda lengua'
  WHEN 'C13_ORAL_INGLES' THEN 'comunicacion oral en ingles'
  WHEN 'C14_LEE_INGLES' THEN 'lectura en ingles'
  WHEN 'C15_ESCRIBE_INGLES' THEN 'escritura en ingles'
  WHEN 'C16_CONVIVE_DEMOCRATICAMENTE' THEN 'convivencia y participacion democratica'
  WHEN 'C17_INTERPRETACIONES_HISTORICAS' THEN 'interpretaciones historicas'
  WHEN 'C18_GESTIONA_ESPACIO_AMBIENTE' THEN 'gestion del espacio y ambiente'
  WHEN 'C19_GESTIONA_RECURSOS_ECONOMICOS' THEN 'gestion de recursos economicos'
  WHEN 'C20_INDAGA' THEN 'indagacion cientifica'
  WHEN 'C21_EXPLICA_MUNDO_FISICO' THEN 'explicacion del mundo fisico'
  WHEN 'C22_SOLUCIONES_TECNOLOGICAS' THEN 'soluciones tecnologicas'
  WHEN 'C23_CANTIDAD' THEN 'problemas de cantidad'
  WHEN 'C24_REGULARIDAD_EQUIVALENCIA_CAMBIO' THEN 'regularidad, equivalencia y cambio'
  WHEN 'C25_FORMA_MOVIMIENTO_LOCALIZACION' THEN 'forma, movimiento y localizacion'
  WHEN 'C26_DATOS_INCERTIDUMBRE' THEN 'datos e incertidumbre'
  WHEN 'C27_EMPRENDIMIENTO' THEN 'emprendimiento'
  WHEN 'C28_TIC' THEN 'entornos virtuales generados por las TIC'
  WHEN 'C29_APRENDIZAJE_AUTONOMO' THEN 'aprendizaje autonomo'
  WHEN 'C30_IDENTIDAD_RELIGIOSA' THEN 'identidad religiosa'
  WHEN 'C31_ENCUENTRO_DIOS' THEN 'encuentro personal y comunitario con Dios'
  ELSE LEFT(nombre, 120)
END;

CREATE TABLE cneb_opcion_conclusion_descriptiva (
  id_opcion INT UNSIGNED NOT NULL AUTO_INCREMENT,
  id_cneb_nivel INT UNSIGNED NOT NULL,
  logro_codigo VARCHAR(5) NOT NULL,
  numero_opcion TINYINT UNSIGNED NOT NULL,
  enfoque ENUM('AVANCE','DIFICULTAD','ACOMPANAMIENTO','REFUERZO') NOT NULL DEFAULT 'ACOMPANAMIENTO',
  texto_plantilla VARCHAR(250) NOT NULL,
  activo TINYINT(1) NOT NULL DEFAULT 1,
  PRIMARY KEY (id_opcion),
  UNIQUE KEY uq_cneb_opcion_nivel_logro (id_cneb_nivel, logro_codigo, numero_opcion),
  KEY idx_cneb_opcion_logro (logro_codigo),
  CONSTRAINT fk_cneb_opcion_nivel FOREIGN KEY (id_cneb_nivel) REFERENCES cneb_nivel(id_cneb_nivel),
  CONSTRAINT fk_cneb_opcion_logro FOREIGN KEY (logro_codigo) REFERENCES cneb_logro_calificacion(codigo),
  CONSTRAINT chk_cneb_opcion_numero CHECK (numero_opcion BETWEEN 1 AND 3),
  CONSTRAINT chk_cneb_opcion_texto_250 CHECK (CHAR_LENGTH(texto_plantilla) <= 250)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'B', 1, 'AVANCE',
'Muestra avances en {{COMPETENCIA}}, pero aun requiere acompanamiento para consolidar el desempeno esperado del ciclo.'
FROM cneb_nivel n WHERE n.codigo = 'INI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'B', 2, 'ACOMPANAMIENTO',
'Esta en proceso en {{COMPETENCIA}}; necesita mas oportunidades de exploracion, practica guiada y apoyo afectivo.'
FROM cneb_nivel n WHERE n.codigo = 'INI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'B', 3, 'REFUERZO',
'Progresa gradualmente en {{COMPETENCIA}}. Requiere actividades concretas y retroalimentacion sencilla para afianzar sus logros.'
FROM cneb_nivel n WHERE n.codigo = 'INI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 1, 'DIFICULTAD',
'Presenta dificultades iniciales en {{COMPETENCIA}}. Requiere apoyo permanente, actividades vivenciales y seguimiento cercano.'
FROM cneb_nivel n WHERE n.codigo = 'INI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 2, 'ACOMPANAMIENTO',
'Necesita mayor acompanamiento para iniciar avances en {{COMPETENCIA}}, respetando su ritmo y brindando mediacion constante.'
FROM cneb_nivel n WHERE n.codigo = 'INI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 3, 'REFUERZO',
'Aun no evidencia los desempenos esperados en {{COMPETENCIA}}; requiere experiencias concretas, apoyo familiar y refuerzo continuo.'
FROM cneb_nivel n WHERE n.codigo = 'INI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'B', 1, 'AVANCE',
'Esta en proceso en {{COMPETENCIA}}; comprende parcialmente lo esperado y necesita practica guiada para consolidar sus aprendizajes.'
FROM cneb_nivel n WHERE n.codigo = 'PRI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'B', 2, 'ACOMPANAMIENTO',
'Muestra avances en {{COMPETENCIA}}, pero requiere reforzar procedimientos, explicar sus ideas y aplicar estrategias con mayor seguridad.'
FROM cneb_nivel n WHERE n.codigo = 'PRI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'B', 3, 'REFUERZO',
'Progresa en {{COMPETENCIA}}; con retroalimentacion y ejercicios graduados podra alcanzar el nivel esperado del ciclo.'
FROM cneb_nivel n WHERE n.codigo = 'PRI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 1, 'DIFICULTAD',
'Presenta dificultades en {{COMPETENCIA}}; requiere refuerzo personalizado, uso de material concreto y acompanamiento continuo.'
FROM cneb_nivel n WHERE n.codigo = 'PRI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 2, 'ACOMPANAMIENTO',
'Necesita apoyo constante para iniciar avances en {{COMPETENCIA}}, comprender la tarea y aplicar estrategias basicas.'
FROM cneb_nivel n WHERE n.codigo = 'PRI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 3, 'REFUERZO',
'Aun muestra progreso limitado en {{COMPETENCIA}}; requiere actividades diferenciadas, seguimiento y participacion de la familia.'
FROM cneb_nivel n WHERE n.codigo = 'PRI';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 1, 'DIFICULTAD',
'Presenta dificultades en {{COMPETENCIA}}; requiere reforzar saberes previos, desarrollar evidencias y recibir retroalimentacion continua.'
FROM cneb_nivel n WHERE n.codigo = 'SEC';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 2, 'ACOMPANAMIENTO',
'Aun no alcanza el estandar esperado en {{COMPETENCIA}}. Necesita acompanamiento, practica sostenida y compromiso en las actividades.'
FROM cneb_nivel n WHERE n.codigo = 'SEC';

INSERT INTO cneb_opcion_conclusion_descriptiva
(id_cneb_nivel, logro_codigo, numero_opcion, enfoque, texto_plantilla)
SELECT n.id_cneb_nivel, 'C', 3, 'REFUERZO',
'Muestra progreso inicial en {{COMPETENCIA}}; debe fortalecer estrategias, explicar sus procesos y cumplir evidencias de aprendizaje.'
FROM cneb_nivel n WHERE n.codigo = 'SEC';

ALTER TABLE cneb_conclusion_generada
  ADD COLUMN IF NOT EXISTS opcion_numero TINYINT UNSIGNED NULL AFTER id_nota,
  MODIFY conclusion_sugerida VARCHAR(250) NOT NULL,
  MODIFY conclusion_final VARCHAR(250) NULL;

ALTER TABLE nota_estudiante
  MODIFY conclusion_descriptiva VARCHAR(250) NULL;

ALTER TABLE nota_transversal_docente
  MODIFY conclusion_descriptiva VARCHAR(250) NULL;

ALTER TABLE siagie_importacion_detalle
  MODIFY conclusion_descriptiva VARCHAR(250) NULL;

UPDATE cneb_conclusion_generada
SET conclusion_sugerida = fn_limitar_texto_250(conclusion_sugerida),
    conclusion_final = CASE
      WHEN conclusion_final IS NULL THEN NULL
      ELSE fn_limitar_texto_250(conclusion_final)
    END;

UPDATE nota_estudiante
SET conclusion_descriptiva = CASE
    WHEN CHAR_LENGTH(fn_limitar_texto_250(conclusion_descriptiva)) = 0 THEN NULL
    ELSE fn_limitar_texto_250(conclusion_descriptiva)
  END
WHERE conclusion_descriptiva IS NOT NULL;

UPDATE nota_transversal_docente
SET conclusion_descriptiva = CASE
    WHEN CHAR_LENGTH(fn_limitar_texto_250(conclusion_descriptiva)) = 0 THEN NULL
    ELSE fn_limitar_texto_250(conclusion_descriptiva)
  END
WHERE conclusion_descriptiva IS NOT NULL;

UPDATE siagie_importacion_detalle
SET conclusion_descriptiva = CASE
    WHEN CHAR_LENGTH(fn_limitar_texto_250(conclusion_descriptiva)) = 0 THEN NULL
    ELSE fn_limitar_texto_250(conclusion_descriptiva)
  END
WHERE conclusion_descriptiva IS NOT NULL;

CREATE OR REPLACE VIEW vw_opciones_conclusion_250 AS
SELECT
  n.codigo AS nivel_codigo,
  n.nombre AS nivel,
  l.codigo AS calificacion,
  o.numero_opcion,
  o.enfoque,
  c.codigo AS competencia_codigo,
  c.codigo_script,
  c.nombre AS competencia,
  c.nombre_corto_conclusion,
  fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(c.nombre_corto_conclusion, c.nombre)))) AS conclusion_sugerida,
  CHAR_LENGTH(fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(c.nombre_corto_conclusion, c.nombre))))) AS caracteres,
  CASE
    WHEN CHAR_LENGTH(fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(c.nombre_corto_conclusion, c.nombre))))) <= 250 THEN 'SI'
    ELSE 'NO'
  END AS cumple_250
FROM cneb_opcion_conclusion_descriptiva o
INNER JOIN cneb_nivel n ON n.id_cneb_nivel = o.id_cneb_nivel
INNER JOIN cneb_logro_calificacion l ON l.codigo = o.logro_codigo
CROSS JOIN cneb_competencia c
WHERE o.activo = 1;

CREATE OR REPLACE VIEW vw_evaluaciones_conclusion_obligatoria AS
SELECT
  ne.id_nota AS id_evaluacion,
  ne.id_nota,
  m.id_matricula,
  COALESCE(NULLIF(p.nombre_completo, ''), TRIM(CONCAT_WS(' ', p.apellido_paterno, p.apellido_materno, p.nombres))) AS estudiante,
  m.id_anio_lectivo AS anio,
  g.descripcion AS grado,
  s.descripcion AS seccion,
  pa.descripcion AS periodo,
  cn.codigo AS nivel_codigo,
  cn.nombre AS nivel,
  ci.codigo AS ciclo_codigo,
  ar.nombre AS area,
  c.descripcion AS competencia,
  ne.nota_literal AS calificacion,
  l.nombre AS logro,
  rc.requiere_conclusion,
  ne.conclusion_descriptiva,
  ne.observacion,
  fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(cc.nombre_corto_conclusion, cc.nombre, c.descripcion)))) AS conclusion_sugerida
FROM nota_estudiante ne
INNER JOIN matricula m ON m.id_matricula = ne.id_matricula
INNER JOIN aula au ON au.id_aula = m.id_aula
INNER JOIN grado g ON g.id_grado = au.id_grado
INNER JOIN seccion s ON s.id_seccion = au.id_seccion
INNER JOIN estudiante e ON e.id_estudiante = m.id_estudiante
INNER JOIN persona p ON p.id_persona = e.id_persona
INNER JOIN periodo_academico pa ON pa.id_periodo_academico = ne.id_periodo_academico
INNER JOIN area_curricular ar ON ar.id_area = ne.id_area
LEFT JOIN competencia c ON c.id_competencia = ne.id_competencia
LEFT JOIN cneb_competencia cc ON cc.id_cneb_competencia = c.id_cneb_competencia
LEFT JOIN cneb_nivel cn ON cn.codigo = au.id_nivel
LEFT JOIN cneb_ciclo ci ON ci.codigo = CASE
  WHEN au.id_nivel = 'INI' THEN 'II'
  WHEN au.id_nivel = 'PRI' AND au.id_grado IN (1,2) THEN 'III'
  WHEN au.id_nivel = 'PRI' AND au.id_grado IN (3,4) THEN 'IV'
  WHEN au.id_nivel = 'PRI' AND au.id_grado IN (5,6) THEN 'V'
  WHEN au.id_nivel = 'SEC' AND au.id_grado IN (7,8) THEN 'VI'
  WHEN au.id_nivel = 'SEC' AND au.id_grado IN (9,10,11) THEN 'VII'
  ELSE NULL
END
LEFT JOIN cneb_logro_calificacion l ON l.codigo = ne.nota_literal
LEFT JOIN cneb_regla_conclusion rc ON rc.id_cneb_nivel = cn.id_cneb_nivel AND rc.logro_codigo = ne.nota_literal AND rc.activo = 1
LEFT JOIN cneb_opcion_conclusion_descriptiva o
  ON o.id_cneb_nivel = cn.id_cneb_nivel
 AND o.logro_codigo = ne.nota_literal
 AND o.numero_opcion = 1
 AND o.activo = 1
WHERE COALESCE(rc.requiere_conclusion, 0) = 1;

DELIMITER $$
CREATE PROCEDURE sp_sugerir_conclusiones_manual_250(
  IN p_nivel_codigo VARCHAR(20),
  IN p_ciclo_codigo VARCHAR(10),
  IN p_competencia_codigo VARCHAR(100),
  IN p_calificacion_codigo VARCHAR(5)
)
BEGIN
  SELECT
    n.nombre AS nivel,
    ci.codigo AS ciclo,
    co.nombre AS competencia,
    l.codigo AS calificacion,
    o.numero_opcion,
    o.enfoque,
    fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(co.nombre_corto_conclusion, co.nombre)))) AS conclusion_sugerida,
    CHAR_LENGTH(fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(co.nombre_corto_conclusion, co.nombre))))) AS caracteres,
    'SI' AS cumple_250
  FROM cneb_nivel n
  INNER JOIN cneb_ciclo ci ON ci.codigo = p_ciclo_codigo
  INNER JOIN cneb_competencia co ON co.codigo = p_competencia_codigo OR co.codigo_script = p_competencia_codigo
  INNER JOIN cneb_logro_calificacion l ON l.codigo = p_calificacion_codigo
  INNER JOIN cneb_regla_conclusion rc ON rc.id_cneb_nivel = n.id_cneb_nivel AND rc.logro_codigo = l.codigo AND rc.activo = 1
  INNER JOIN cneb_opcion_conclusion_descriptiva o
    ON o.id_cneb_nivel = n.id_cneb_nivel
   AND o.logro_codigo = l.codigo
   AND o.activo = 1
  WHERE n.codigo = CASE UPPER(p_nivel_codigo)
    WHEN 'INICIAL' THEN 'INI'
    WHEN 'PRIMARIA' THEN 'PRI'
    WHEN 'SECUNDARIA' THEN 'SEC'
    ELSE UPPER(p_nivel_codigo)
  END
    AND rc.requiere_conclusion = 1
  ORDER BY o.numero_opcion
  LIMIT 3;
END$$

CREATE PROCEDURE sp_sugerir_conclusiones_por_evaluacion_250(IN p_id_evaluacion BIGINT UNSIGNED)
BEGIN
  SELECT
    ne.id_nota AS id_evaluacion,
    COALESCE(NULLIF(p.nombre_completo, ''), TRIM(CONCAT_WS(' ', p.apellido_paterno, p.apellido_materno, p.nombres))) AS estudiante,
    cn.nombre AS nivel,
    ci.codigo AS ciclo,
    g.descripcion AS grado,
    s.nombre_corto AS seccion,
    ar.nombre AS area,
    c.descripcion AS competencia,
    ne.nota_literal AS calificacion,
    o.numero_opcion,
    o.enfoque,
    fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(cc.nombre_corto_conclusion, cc.nombre, c.descripcion)))) AS conclusion_sugerida,
    CHAR_LENGTH(fn_limitar_texto_250(REPLACE(o.texto_plantilla, '{{COMPETENCIA}}', LOWER(COALESCE(cc.nombre_corto_conclusion, cc.nombre, c.descripcion))))) AS caracteres,
    'SI' AS cumple_250
  FROM nota_estudiante ne
  INNER JOIN matricula m ON m.id_matricula = ne.id_matricula
  INNER JOIN aula au ON au.id_aula = m.id_aula
  INNER JOIN grado g ON g.id_grado = au.id_grado
  INNER JOIN seccion s ON s.id_seccion = au.id_seccion
  INNER JOIN estudiante e ON e.id_estudiante = m.id_estudiante
  INNER JOIN persona p ON p.id_persona = e.id_persona
  INNER JOIN area_curricular ar ON ar.id_area = ne.id_area
  LEFT JOIN competencia c ON c.id_competencia = ne.id_competencia
  LEFT JOIN cneb_competencia cc ON cc.id_cneb_competencia = c.id_cneb_competencia
  LEFT JOIN cneb_nivel cn ON cn.codigo = au.id_nivel
  LEFT JOIN cneb_ciclo ci ON ci.codigo = CASE
    WHEN au.id_nivel = 'INI' THEN 'II'
    WHEN au.id_nivel = 'PRI' AND au.id_grado IN (1,2) THEN 'III'
    WHEN au.id_nivel = 'PRI' AND au.id_grado IN (3,4) THEN 'IV'
    WHEN au.id_nivel = 'PRI' AND au.id_grado IN (5,6) THEN 'V'
    WHEN au.id_nivel = 'SEC' AND au.id_grado IN (7,8) THEN 'VI'
    WHEN au.id_nivel = 'SEC' AND au.id_grado IN (9,10,11) THEN 'VII'
    ELSE NULL
  END
  INNER JOIN cneb_regla_conclusion rc ON rc.id_cneb_nivel = cn.id_cneb_nivel AND rc.logro_codigo = ne.nota_literal AND rc.activo = 1
  INNER JOIN cneb_opcion_conclusion_descriptiva o
    ON o.id_cneb_nivel = cn.id_cneb_nivel
   AND o.logro_codigo = ne.nota_literal
   AND o.activo = 1
  WHERE ne.id_nota = p_id_evaluacion
    AND rc.requiere_conclusion = 1
  ORDER BY o.numero_opcion
  LIMIT 3;
END$$

CREATE PROCEDURE sp_cneb_sugerir_conclusion_nota(IN p_id_nota INT UNSIGNED)
BEGIN
  CALL sp_sugerir_conclusiones_por_evaluacion_250(p_id_nota);
END$$
DELIMITER ;
