SELECT
    fc.rgn_id ID_REGIONAL,
    r.rgn_nombre REGIONAL,
    fc.sed_id ID_CENTRO,
    s.sed_nombre CENTRO,
    --fc.sed_id  || ' - ' || s.sed_nombre DATOS_CENTRO,
    fc.fic_id GRUPO,
    to_char(fc.fic_fch_inicializacion,'dd/mm/yyyy') FECHA_INICIO,
    TO_NUMBER(TO_CHAR(fc.fic_fch_inicializacion, 'YYYY')) AS AÑO_INICIO,
    to_char(fc.fic_fch_finalizacion, 'dd/mm/yyyy') FECHA_FIN,
    --to_char(ADD_MONTHS(fc.fic_fch_finalizacion, -6), 'dd/mm/yyyy') FECHA_FIN_EL,

    decode(fc.FIC_ESTADO,
            '1','Creada',
            '2','Personalizada', 
            '3','Revisada',
            '4','Publicada', 
            '5','En Seleccisn',
            '6','En Matricula',
            '7','En Ejecucion', 
            '8','Terminada',
            '9','Cancelada',
            '10','Programada',
            '11','En Inscripcion', 
            '12','Terminada por fecha',
            '13','Terminada por Unificacisn',  
            '14','Inactivo Virtual') ESTADO_GRUPO,
    --decode(nvl(FiCoPr.Fic_Id, -1), -1, 'NO', 'SI') CORRECTAMENTE_PROGRAMADA, 
    pf.prf_codigo ID_PROGRAMA,
    pf.prf_version VERSION_PROGRAMA,
    --pf.prf_codigo || ' - ' || pf.prf_version COD_VERSION_PROGRAMA,
    pf.prf_denominacion PROGRAMA,
    CASE fc.FIC_MOD_FORMACION WHEN 'P' THEN 'PRESENCIAL' WHEN 'V' THEN 'VIRTUAL' WHEN 'C' THEN 'COMBINADA' WHEN 'D' THEN 'DESESCOLARIZADA' WHEN 'A' THEN 'A DISTANCIA' END  MODALIDAD_FORMACION, 
    --pf.PRF_DURACION_MAXIMA DURACION_PROGRAMA,
    CASE WHEN pf.PRF_DURACION_MAXIMA > 100 THEN pf.PRF_DURACION_MAXIMA / 160  -- Convertir de horas a meses en duración de programas
        ELSE pf.PRF_DURACION_MAXIMA  
    END AS DURACIÓN_PROGRAMA_MESES,
    jor.jor_nombre JORNADA, 
    --nf.nfs_id ID_NIVEL_FORMACION,
    nf.nfs_nombre NIVEL_FORMACION,
    CASE pf.prf_tipo_programa WHEN 'T' THEN 'TITULADA' WHEN 'C' THEN 'COMPLEMENTARIA' END  TIPO_PROGRAMA,
    --pof.pof_id ID_OFERTA,
    --pof.pof_nombre NOMBRE_OFERTA,
    pe.pre_id ID_PROGRAMA_ESPECIAL,
    pe.pre_nombre PROGRAMA_ESPECIAL,
    its.its_codigo COD_DANE_INSTITUCION_E,
    its.its_nombre NOMBRE_INSTITUCION_E,
    mpoinst.mpo_id ID_MUNICIPIO_INSTITUCION_E,
    mpoinst.mpo_nombre MUNICIPIO_INSTITUCION_E,
    dptoinst.dpt_nombre DEPARTAMENTO_INSTITUCION_E,
    con.cov_id ID_CONVENIO,
    con.cov_nombre CONVENIO,
    mpo.mpo_id ID_MUNICIPIO,
    mpo.mpo_nombre MUNICIPIO,
    --fc.fic_cupo CUPO_APRENDICES,
    --count(ia.ing_id) Inscritos,
    count(ra.rga_id) MATRICULADOS
    --COUNT(CASE WHEN FLOOR(MONTHS_BETWEEN(SYSDATE, usr.DBU_FCH_NACIMIENTO) / 12) >= 60 THEN 1 END) AS MENORES_60

    --Estado del registro acadimico. Valores de chequeo: 1 - Aplazado; 2 - Cancelado; 3 - Certificado; 4 - Condicionado; 5 - Reprobado; 6 - Retiro Voluntario; 7 - Formacion; 8 - Induccion; 9 - No Apto; 10 - Reingresado; 11 - Traslado; 12 - Por Certificar; 13 - En Transito; 14 - Cancelamiento Virtual Complementaria; 15 - Desercion Virtual Complementaria.

FROM 
    planformacion.ficha_caracterizacion fc
    INNER JOIN diseniocur.programa_formacion pf    on pf.prf_id = fc.prf_id
    INNER JOIN catalogo.nivel_formacion nf    on nf.nfs_id = pf.nfs_id_ofrecido
    INNER JOIN catalogo.regional r    on r.rgn_id = fc.rgn_id
    INNER JOIN catalogo.sede s    on s.sed_id = fc.sed_id
    LEFT OUTER JOIN (
        Select fdg.fic_id
        from reporte.fichas_datos_generales fdg
        where fdg.fuente = 1
        and fdg.hif_prog_ok = '1') FiCoPr    on FiCoPr.Fic_Id = fc.fic_id
    LEFT OUTER JOIN inscripcion.ingreso_aspirante ia    on ia.fic_id = fc.fic_id
    LEFT OUTER JOIN inscripcion.segunda_opcion seop    on seop.ing_id_segunda_opc = ia.ing_id
    LEFT OUTER JOIN matricula.registro_academico ra    on ra.ing_id = ia.ing_id
    LEFT OUTER JOIN planformacion.PREXFIC pxf on pxf.fic_id = fc.fic_id
    LEFT OUTER JOIN planformacion.programa_especial pe on pe.pre_id = pxf.pre_id
    INNER JOIN catalogo.municipio mpo on mpo.mpo_id = fc.mpo_id
    INNER JOIN catalogo.jornada jor on jor.jor_id = fc.jor_id
    left outer JOIN PLANFORMACION.convenioxficha coxfi on coxfi.fic_id = fc.fic_id
    left outer JOIN PLANFORMACION.convenio con on con.cov_id = coxfi.cov_id  
    LEFT outer join planformacion.solicitudxinstitucion sxi on sxi.sos_id = fc.sos_id
    LEFT outer join catalogo.institucion its on its.its_id = sxi.its_id
    left outer join admcalendario.periodo_oferta  pof    on pof.pof_id = fc.pof_id 
    left outer join catalogo.municipio      mpoinst        on mpoinst.mpo_id = its.mpo_id
    left outer join catalogo.departamento       dptoinst        on dptoinst.dpt_id = its.dpt_id 
    --inner join COMUN.DATOS_BASICOS_USUARIO      usr     on  usr.NIS = ra.NIS

WHERE
    TRUNC(fc.fic_fch_finalizacion) >= to_date('01/01/2025', 'dd/mm/yyyy')
    --and pf.prf_tipo_programa = 'T'
    and fc.fic_estado in ('7','8','12') -- ('7','8','12') 7 En ejecucion - 8 Terminadas - 12 Terminadas por fecha
   -- and nf.nfs_id in ('2','6')


group by fc.rgn_id, r.rgn_nombre, fc.sed_id, s.sed_nombre, fc.fic_id, 
to_char(fc.fic_fch_inicializacion,'dd/mm/yyyy'), TO_NUMBER(TO_CHAR(fc.fic_fch_inicializacion, 'YYYY')), to_char(fc.fic_fch_finalizacion, 'dd/mm/yyyy'), decode(fc.FIC_ESTADO, '1','Creada', '2','Personalizada', '3','Revisada', '4','Publicada', '5','En Seleccisn', '6','En Matricula', '7','En Ejecucion', '8','Terminada', '9','Cancelada', '10','Programada', '11','En Inscripcion', '12','Terminada por fecha', '13','Terminada por Unificacisn', '14','Inactivo Virtual'), pf.prf_codigo, 
pf.prf_version, pf.prf_denominacion, CASE fc.FIC_MOD_FORMACION WHEN 'P' THEN 'PRESENCIAL' WHEN 'V' THEN 'VIRTUAL' WHEN 'C' THEN 'COMBINADA' WHEN 'D' THEN 'DESESCOLARIZADA' WHEN 'A' THEN 'A DISTANCIA' END, CASE WHEN pf.PRF_DURACION_MAXIMA > 100 THEN pf.PRF_DURACION_MAXIMA / 160 ELSE pf.PRF_DURACION_MAXIMA END, jor.jor_nombre, 
nf.nfs_nombre, CASE pf.prf_tipo_programa WHEN 'T' THEN 'TITULADA' WHEN 'C' THEN 'COMPLEMENTARIA' END, pe.pre_id, pe.pre_nombre, its.its_codigo, 
its.its_nombre, mpoinst.mpo_id, mpoinst.mpo_nombre, dptoinst.dpt_nombre, con.cov_id, 
con.cov_nombre, mpo.mpo_id, mpo.mpo_nombre, fc.fic_fch_inicializacion

order by 
 fc.fic_fch_inicializacion desc
