{"id":16176,"date":"2023-11-30T09:52:33","date_gmt":"2023-11-30T15:52:33","guid":{"rendered":"https:\/\/sada.services\/?p=16176"},"modified":"2023-12-06T16:54:38","modified_gmt":"2023-12-06T22:54:38","slug":"sigesa-vista-avance-ppi-btppi-342-crear-consulta-general-de-planificacion-estrategicasigesa-vista-avance-ppi-btppi-342","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=16176","title":{"rendered":"SIGESA: VISTA AVANCE PPI BTPPI-342 Consulta: AVANCE PLP"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>https:\/\/universidadnacional.atlassian.net\/jira\/software\/c\/projects\/BTPPI\/boards\/161?selectedIssue=BTPPI-342<\/li>\n\n\n\n<li>Para resolver esta consulta se van a crear una serie de funciones para facilitar la obtenci\u00f3n y presentaci\u00f3n de datos <\/li>\n\n\n\n<li>PODEMOS DESCARGAR EL SCRIPT <a href=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/12\/SCRIPT_CREACION_RECURSOS_V3.zip\" target=\"_blank\" rel=\"noreferrer noopener\">AQU\u00cd<\/a><\/li>\n\n\n\n<li>Y PODEMOS DESCARGAR EL RESTO DE RECURSOS: <a rel=\"noreferrer noopener\" href=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/12\/CONSULTA.zip\" target=\"_blank\">AQU\u00cd<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-palette-color-8-color has-palette-color-2-background-color has-text-color has-background\">PARTE1: FUNCIONES DE BD<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_METAS_OPE_FUNCIONALES<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_METAS_OPE_FUNCIONALES\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_PERIODO_ANUAL_META_POA_TABLE_TYPE;\nDROP TYPE PPI.PPE_PERIODO_ANUAL_META_POA_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato META_POA\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_PERIODO_ANUAL_META_POA_TYPE AS OBJECT (\n    PERIODO_ANUAL NUMBER,\n    META_POA NUMBER\n);\n\nGRANT EXECUTE ON PPI.PPE_PERIODO_ANUAL_META_POA_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato MetaPoaType\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_PERIODO_ANUAL_META_POA_TABLE_TYPE AS TABLE OF PPE_PERIODO_ANUAL_META_POA_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_PERIODO_ANUAL_META_POA_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES\nRETURN PPE_PERIODO_ANUAL_META_POA_TABLE_TYPE PIPELINED AS\n\nBEGIN\n    FOR rec IN (\n        SELECT \n            DISTINCT\n            PO.PERIODO_ANUAL,\n            MPE.META_POA\n        FROM META_POA_EVALUACION MPE\n        INNER JOIN META_POA MP ON (MP.ID_META_POA = MPE.META_POA)\n        INNER JOIN OBJETIVO_POA OP ON (OP.ID_OBJETIVO_POA = MP.OBJETIVO_POA)\n        INNER JOIN PLAN_OPERATIVO PO ON (PO.ID_PLAN_OPERATIVO = OP.PLAN_OPERATIVO)\n        INNER JOIN UNIDAD_EJECUTORA UE_PO ON (UE_PO.ID_UNIDAD_EJECUTORA = PO.UNIDAD_EJECUTORA)\n        INNER JOIN EVALUACION_OPERATIVA EO ON (EO.PLAN_OPERATIVO = PO.ID_PLAN_OPERATIVO)\n        WHERE \n        PO.ESTADO_FORMULACION_OPE IN (SELECT VALOR FROM PARAMETRO WHERE LLAVE IN ('param_ppi_ppo_estadoFormulacionOpe_aprobado_unSoloNivel', 'param_ppi_ppo_estadoFormulacionOpe_aprobado_unidad_integradora'))\n        AND PO.TIPO_PLAN_OPERATIVO = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = 'param_ppi_ppo_tipoPlanOperativo_unidad')\n        AND EO.ESTADO_EVALUACION_POA IN (SELECT VALOR FROM PARAMETRO WHERE LLAVE IN ('param_ppi_ppo_estadoEvaluacionPOA_aprobado_unSoloNivel', 'param_ppi_ppo_estadoEvaluacionPOA_aprobado_unidad_integradora'))\n        AND MPE.ETAPA_PLAN = EO.ETAPA_PLAN\n        AND EO.FECHA_APROBACION = (\n            SELECT \n                MAX(EO.FECHA_APROBACION) \n            FROM \n            EVALUACION_OPERATIVA EO1\n            INNER JOIN PLAN_OPERATIVO PO1 ON (PO1.ID_PLAN_OPERATIVO = EO1.PLAN_OPERATIVO)\n            WHERE \n            PO1.ID_PLAN_OPERATIVO = PO.ID_PLAN_OPERATIVO\n            AND PO1.UNIDAD_EJECUTORA = PO.UNIDAD_EJECUTORA\n        )\n        ORDER BY MPE.META_POA\n    ) LOOP\n        PIPE ROW (PPE_PERIODO_ANUAL_META_POA_TYPE(REC.PERIODO_ANUAL,REC.META_POA));\n    END LOOP;\n\n    RETURN;\n\nEND PPE_OBTENER_METAS_OPE_FUNCIONALES;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS MetaPoa\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_PERIODO_ANUAL_TABLE_TYPE;\nDROP TYPE PPI.PPE_PERIODO_ANUAL_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_PERIODO_ANUAL_TYPE AS OBJECT (\n    PERIODO_ANUAL   NUMBER\n);\n\nGRANT EXECUTE ON PPI.PPE_PERIODO_ANUAL_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PERIODO_ANUAL_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_PERIODO_ANUAL_TABLE_TYPE AS TABLE OF PPE_PERIODO_ANUAL_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_PERIODO_ANUAL_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION\nRETURN PPE_PERIODO_ANUAL_TABLE_TYPE PIPELINED AS\n\nBEGIN\n    FOR REC IN (\n        SELECT \n            DISTINCT\n            APD.PERIODO_ANUAL PERIODO_ANUAL\n        FROM\n        META_POA_APORTE MPAP\n        INNER JOIN (SELECT *\n        FROM TABLE(PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES())) METAS_FUNCIONALES ON MPAP.META_POA = METAS_FUNCIONALES.META_POA\n        INNER JOIN APORTE_ESTRATEGICO APE ON (APE.ID_APORTE_ESTRATEGICO = MPAP.APORTE_ESTRATEGICO)\n        INNER JOIN APORTE_PAE_DISTRIBUCION APD ON (APD.APORTE_ESTRATEGICO = APE.ID_APORTE_ESTRATEGICO)\n        ORDER BY APD.PERIODO_ANUAL\n    ) LOOP\n        PIPE ROW (PPE_PERIODO_ANUAL_TYPE(REC.PERIODO_ANUAL));\n    END LOOP;\n\n    RETURN;\n\nEND PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nGRANT EXECUTE ON  PPI.PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_APD_X_APORTE<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_APD_X_APORTE\n--*******************************************************************************\n--*******************************************************************************\n\n\n--*****************************************************\n--COMPONENTE REQUERIDO: A\u00d1O\n--*****************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_ANO_TABLE_TYPE;\nDROP TYPE PPI.PPE_ANO_TYPE;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato \n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ANO_TYPE AS OBJECT (\n    ANO NUMBER(4)\n);\nGRANT EXECUTE ON PPI.PPE_ANO_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato ANO_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ANO_TABLE_TYPE AS TABLE OF PPE_ANO_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_ANO_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n\n\n\n--*****************************************************\n--FUNCI\u00d3N: PPE_OBTENER_APD_X_APORTE\n--*****************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_APD_TABLE_TYPE;\nDROP TYPE PPI.PPE_APD_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_APD_X_APORTE;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato \n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_APD_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO      NUMBER,\n    DISTRIBUCION_1          NUMBER,\n    DISTRIBUCION_2          NUMBER,\n    DISTRIBUCION_3          NUMBER,\n    DISTRIBUCION_4          NUMBER,\n    DISTRIBUCION_5          NUMBER\n);\nGRANT EXECUTE ON PPI.PPE_APD_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_APD_TABLE_TYPE AS TABLE OF PPE_APD_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_APD_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION PPI.PPE_OBTENER_APD_X_APORTE\n--RETURN: tabla virtual de tipo APD_TABLE_TYPE\nRETURN PPE_APD_TABLE_TYPE PIPELINED AS\n\n    --***************************************************************\n    --VARIABLES\n    --***************************************************************\n    -- Almacena los a\u00f1os en un arreglo\n    v_periodos  PPE_PERIODO_ANUAL_TABLE_TYPE := PPE_PERIODO_ANUAL_TABLE_TYPE();\n\n    -- Variable para almacenar el a\u00f1o actual\n    v_periodo PPE_PERIODO_ANUAL_TYPE;\n\n\n    -- Almacena los a\u00f1os en un arreglo\n    v_anos PPE_ANO_TABLE_TYPE := PPE_ANO_TABLE_TYPE();\n\n    -- Variable para almacenar el a\u00f1o actual\n    v_ano PPE_ANO_TYPE;\n\n    -- Variable para construir la consulta PIVOT\n    v_sql CLOB;\n\n    -- Variable para almacenar el resultado de la consulta PIVOT\n    v_result SYS_REFCURSOR;\n\n    -- Variables para almacenar los valores din\u00e1micos de las columnas del PIVOT\n    v_aporte            NUMBER;\n    v_distribucion_1    NUMBER;\n    v_distribucion_2    NUMBER;\n    v_distribucion_3    NUMBER;\n    v_distribucion_4    NUMBER;\n    v_distribucion_5    NUMBER;\n\nBEGIN\n    --***************************************************************\n    --OBTENCI\u00d3N DE DATOS\n    --***************************************************************\n    -- Ejecutar consulta del ID_PERIODO_ANUAL y  ANO para almacenarlos en arreglos para crear el PIVOT \n    FOR REC IN (SELECT ANO, ID_PERIODO_ANUAL\n                FROM PERIODO_ANUAL\n                WHERE ID_PERIODO_ANUAL IN (SELECT PERIODO_ANUAL\n                                           FROM TABLE(PPI.PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION()))\n                ORDER BY ANO)\n    LOOP\n        -- Utilizar el constructor del tipo ANO_TYPE\n        v_ano := PPE_ANO_TYPE(REC.ANO);\n\n        -- Utilizar el constructor del tipo ANO_TYPE\n        v_periodo := PPE_PERIODO_ANUAL_TYPE(REC.ID_PERIODO_ANUAL);\n\n       -- A\u00f1adir los resultados al arreglo de a\u00f1os\n        v_periodos.EXTEND;\n        v_periodos(v_periodos.LAST) := v_periodo;\n\n        -- A\u00f1adir los resultados al arreglo de a\u00f1os\n        v_anos.EXTEND;\n        v_anos(v_anos.LAST) := v_ano;\n\n    END LOOP;\n\n\n    --**************************************************************\n    --CONSULTA DIN\u00c1MICA\n    --**************************************************************\n    v_sql := 'SELECT ';\n    v_sql := v_sql || '* ';\n    v_sql := v_sql || 'FROM ( ';\n    v_sql := v_sql || 'SELECT ';\n    v_sql := v_sql || 'DISTINCT ';\n    v_sql := v_sql || 'APD.APORTE_ESTRATEGICO, ';\n    v_sql := v_sql || 'APD.PERIODO_ANUAL, ';\n    v_sql := v_sql || 'APD.DISTRIBUCION_PORCENTUAL ';\n    v_sql := v_sql || 'FROM META_POA_APORTE MPAP ';\n    v_sql := v_sql || 'INNER JOIN ( ';\n    v_sql := v_sql || 'SELECT * FROM TABLE(PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES()) ';\n    v_sql := v_sql || ') METAS_FUNCIONALES ON MPAP.META_POA = METAS_FUNCIONALES.META_POA ';\n    v_sql := v_sql || 'INNER JOIN APORTE_ESTRATEGICO APE ON APE.ID_APORTE_ESTRATEGICO = MPAP.APORTE_ESTRATEGICO ';\n    v_sql := v_sql || 'INNER JOIN APORTE_PAE_DISTRIBUCION APD ON APD.APORTE_ESTRATEGICO = APE.ID_APORTE_ESTRATEGICO ';\n    v_sql := v_sql || 'WHERE APD.PERIODO_ANUAL IN ( ';\n    v_sql := v_sql || 'SELECT * FROM TABLE(PPI.PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION()) ';\n    v_sql := v_sql || ') ';\n    v_sql := v_sql || ') ';\n    v_sql := v_sql || 'PIVOT (MAX(DISTRIBUCION_PORCENTUAL) FOR PERIODO_ANUAL IN (';\n    \n\n    FOR i IN 1..v_anos.LAST LOOP\n        v_sql := v_sql || v_periodos(i).PERIODO_ANUAL || ' as \"' || v_anos(i).ANO || '\"';\n        IF i &lt; v_anos.LAST THEN\n            v_sql := v_sql || ', ';\n        END IF;\n    END LOOP;\n\n    v_sql := v_sql || ')) ORDER BY APORTE_ESTRATEGICO';\n\n\n    -- Ejecutar la consulta PIVOT\n    OPEN v_result FOR v_sql;\n\n    --**************************************************************\n    --RECUPERAR Y FORMATEAAR LOS DATOS\n    --**************************************************************\n    LOOP\n       FETCH v_result INTO v_aporte,v_distribucion_1, v_distribucion_2, v_distribucion_3, v_distribucion_4, v_distribucion_5;\n       EXIT WHEN v_result%NOTFOUND;\n\n       PIPE ROW(PPE_APD_TYPE(v_aporte,v_distribucion_1, v_distribucion_2, v_distribucion_3, v_distribucion_4, v_distribucion_5));\n    END LOOP;\n\n    CLOSE v_result;\n\n    RETURN;\n\nEND PPE_OBTENER_APD_X_APORTE;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.PPE_OBTENER_APD_X_APORTE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_APD_X_APORTE());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_PROMEDIOS_X_APORTE<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*****************************************************\n--FUNCI\u00d3N: PPE_OBTENER_PROMEDIOS_X_APORTE\n--*****************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_APORTE_PROMEDIOS_TABLE_TYPE;\nDROP TYPE PPI.PPE_APORTE_PROMEDIOS_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_PROMEDIOS_X_APORTE;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato \n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_APORTE_PROMEDIOS_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO      NUMBER,\n    PROMEDIO_1              NUMBER,\n    PROMEDIO_2              NUMBER,\n    PROMEDIO_3              NUMBER,\n    PROMEDIO_4              NUMBER,\n    PROMEDIO_5              NUMBER\n);\n\nGRANT EXECUTE ON PPI.PPE_APORTE_PROMEDIOS_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato \n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_APORTE_PROMEDIOS_TABLE_TYPE AS TABLE OF PPE_APORTE_PROMEDIOS_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_APORTE_PROMEDIOS_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION PPI.PPE_OBTENER_PROMEDIOS_X_APORTE\n--RETURN: tabla virtual de tipo APD_TABLE_TYPE\nRETURN PPE_APORTE_PROMEDIOS_TABLE_TYPE PIPELINED AS\n\n    --***************************************************************\n    --VARIABLES\n    --***************************************************************\n    -- Almacena los a\u00f1os en un arreglo\n    v_periodos  PPE_PERIODO_ANUAL_TABLE_TYPE := PPE_PERIODO_ANUAL_TABLE_TYPE();\n    \n    -- Variable para almacenar el a\u00f1o actual\n    v_periodo PPE_PERIODO_ANUAL_TYPE;\n    \n    \n    -- Almacena los a\u00f1os en un arreglo\n    v_anos PPE_ANO_TABLE_TYPE := PPE_ANO_TABLE_TYPE();\n    \n    -- Variable para almacenar el a\u00f1o actual\n    v_ano PPE_ANO_TYPE;\n\n    -- Variable para construir la consulta PIVOT\n    v_sql CLOB;\n\n    -- Variable para almacenar el resultado de la consulta PIVOT\n    v_result SYS_REFCURSOR;\n\n    -- Variables para almacenar los valores din\u00e1micos de las columnas del PIVOT\n    v_aporte        NUMBER;\n    v_promedio_1    NUMBER;\n    v_promedio_2    NUMBER;\n    v_promedio_3    NUMBER;\n    v_promedio_4    NUMBER;\n    v_promedio_5    NUMBER;\n\nBEGIN\n    --***************************************************************\n    --OBTENCI\u00d3N DE DATOS\n    --***************************************************************\n    -- Ejecutar consulta del ID_PERIODO_ANUAL y  ANO para almacenarlos en arreglos para crear el PIVOT \n    FOR REC IN (SELECT ANO, ID_PERIODO_ANUAL\n                FROM PERIODO_ANUAL\n                WHERE ID_PERIODO_ANUAL IN (SELECT PERIODO_ANUAL\n                                           FROM TABLE(PPI.PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION()))\n                ORDER BY ANO)\n    LOOP\n        -- Utilizar el constructor del tipo ANO_TYPE\n        v_ano := PPE_ANO_TYPE(REC.ANO);\n    \n        -- Utilizar el constructor del tipo ANO_TYPE\n        v_periodo := PPE_PERIODO_ANUAL_TYPE(REC.ID_PERIODO_ANUAL);\n    \n       -- A\u00f1adir los resultados al arreglo de a\u00f1os\n        v_periodos.EXTEND;\n        v_periodos(v_periodos.LAST) := v_periodo;\n    \n        -- A\u00f1adir los resultados al arreglo de a\u00f1os\n        v_anos.EXTEND;\n        v_anos(v_anos.LAST) := v_ano;\n    \n    END LOOP;\n\n\n    --**************************************************************\n    --CONSULTA DIN\u00c1MICA\n    --**************************************************************\n    v_sql := 'SELECT ';\n    v_sql := v_sql || '* ';\n    v_sql := v_sql || 'FROM ( ';\n    v_sql := v_sql || 'SELECT ';\n    v_sql := v_sql || 'EP.PERIODO_ANUAL, ';\n    v_sql := v_sql || 'MPA.APORTE_ESTRATEGICO, ';\n    v_sql := v_sql || 'NVL(AVG(MPE.EJECUCION),0) PROMEDIO ';\n    v_sql := v_sql || 'FROM ';\n    v_sql := v_sql || 'META_POA_APORTE MPA ';\n    v_sql := v_sql || 'INNER JOIN ( ';\n    v_sql := v_sql || 'SELECT * FROM TABLE( ';\n    v_sql := v_sql || 'PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES() ';\n    v_sql := v_sql || ') ';\n    v_sql := v_sql || ') METAS_FUNCIONALES ON MPA.META_POA = METAS_FUNCIONALES.META_POA ';\n    v_sql := v_sql || 'INNER JOIN META_POA_EVALUACION MPE ON (MPE.META_POA = MPA.META_POA) ';\n    v_sql := v_sql || 'INNER JOIN ETAPA_PLAN EP ON (EP.ID_ETAPA_PLAN = MPE.ETAPA_PLAN) ';\n    v_sql := v_sql || 'WHERE ';\n    v_sql := v_sql || 'MPE.ETAPA_PLAN = ( ';\n    v_sql := v_sql || 'SELECT ';\n    v_sql := v_sql || 'EP1.ID_ETAPA_PLAN ';\n    v_sql := v_sql || 'FROM ETAPA_PLAN EP1 ';\n    v_sql := v_sql || 'WHERE ';\n    v_sql := v_sql || 'EP1.TIPO_ETAPA = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = ''param_ppi_ppo_tipoEtapa_evaluacion'') ';\n    v_sql := v_sql || 'AND EP1.PERIODO_ANUAL = EP.PERIODO_ANUAL ';\n    v_sql := v_sql || 'AND EP1.TIPO_PLAN_OPERATIVO = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = ''param_ppi_ppo_tipoPlanOperativo_unidad'') ';\n    v_sql := v_sql || 'AND EP1.FECHA_FINAL_EVALUACION &lt;= TRUNC(SYSDATE) ';\n    v_sql := v_sql || 'ORDER BY ';\n    v_sql := v_sql || 'EP1.FECHA_FINAL_EVALUACION DESC ';\n    v_sql := v_sql || 'FETCH FIRST 1 ROW ONLY ';\n    v_sql := v_sql || ') ';\n    v_sql := v_sql || 'GROUP BY EP.PERIODO_ANUAL, MPA.APORTE_ESTRATEGICO, MPE.ETAPA_PLAN ';\n    v_sql := v_sql || 'ORDER BY ';\n    v_sql := v_sql || 'MPA.APORTE_ESTRATEGICO ';\n    v_sql := v_sql || ') ';\n    v_sql := v_sql || 'PIVOT (MAX(PROMEDIO) FOR PERIODO_ANUAL IN ( ';\n\n    FOR i IN 1..v_anos.LAST LOOP\n        v_sql := v_sql || v_periodos(i).PERIODO_ANUAL || ' as \"' || v_anos(i).ANO || '\"';\n        IF i &lt; v_anos.LAST THEN\n            v_sql := v_sql || ', ';\n        END IF;\n    END LOOP;\n\n    v_sql := v_sql || ')) ORDER BY APORTE_ESTRATEGICO';\n\n\n    -- Ejecutar la consulta PIVOT\n    OPEN v_result FOR v_sql;\n\n    --**************************************************************\n    --RECUPERAR Y FORMATEAAR LOS DATOS\n    --**************************************************************\n    LOOP\n       FETCH v_result INTO v_aporte,v_promedio_1, v_promedio_2, v_promedio_3, v_promedio_4, v_promedio_5;\n       EXIT WHEN v_result%NOTFOUND;\n\n       PIPE ROW(PPE_APORTE_PROMEDIOS_TYPE(v_aporte,v_promedio_1, v_promedio_2, v_promedio_3, v_promedio_4, v_promedio_5));\n    END LOOP;\n\n    CLOSE v_result;\n\n    RETURN;\n\nEND PPE_OBTENER_PROMEDIOS_X_APORTE;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.PPE_OBTENER_PROMEDIOS_X_APORTE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_PROMEDIOS_X_APORTE());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_ACUMULADO_X_APORTE<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_ACUMULADO_X_APORTE\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_ACUMULADO_APORTE_TABLE_TYPE;\nDROP TYPE PPI.PPE_ACUMULADO_APORTE_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_ACUMULADO_X_APORTE;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_APORTE_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO                              NUMBER,\n    CANTIDAD_APORTES_X_ACCION                       NUMBER,\n    REPRESENTATIVIDAD                               NUMBER,\n    DISTRIBUCION_1                                  NUMBER,\n    DISTRIBUCION_2                                  NUMBER,\n    DISTRIBUCION_3                                  NUMBER,\n    DISTRIBUCION_4                                  NUMBER,\n    DISTRIBUCION_5                                  NUMBER,\n    PROGRAMACION_1                                  NUMBER,\n    PROGRAMACION_2                                  NUMBER,\n    PROGRAMACION_3                                  NUMBER,\n    PROGRAMACION_4                                  NUMBER,\n    PROGRAMACION_5                                  NUMBER,\n    PROMEDIO_1                                      NUMBER,\n    PROMEDIO_2                                      NUMBER,\n    PROMEDIO_3                                      NUMBER,\n    PROMEDIO_4                                      NUMBER,\n    PROMEDIO_5                                      NUMBER,\n    EJECUCION_1                                     NUMBER,\n    EJECUCION_2                                     NUMBER,\n    EJECUCION_3                                     NUMBER,\n    EJECUCION_4                                     NUMBER,\n    EJECUCION_5                                     NUMBER,\n    ACUMULADO_APORTE                                NUMBER\n);\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_APORTE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato ACUMULADO_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_APORTE_TABLE_TYPE AS TABLE OF PPE_ACUMULADO_APORTE_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_APORTE_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.PPE_OBTENER_ACUMULADO_X_APORTE\nRETURN PPE_ACUMULADO_APORTE_TABLE_TYPE PIPELINED AS\n\nBEGIN\n    FOR REC IN (\n        SELECT \n            DISTINCT\n            MPAP.APORTE_ESTRATEGICO                                         APORTE_ESTRATEGICO,\n            CAN_APO.CANTIDAD_APORTES                                        CANTIDAD_APORTES_X_ACCION,\n            (1 \/ CAN_APO.CANTIDAD_APORTES)                                  REPRESENTATIVIDAD,\n            APD.DISTRIBUCION_1                                              DISTRIBUCION_1,\n            APD.DISTRIBUCION_2                                              DISTRIBUCION_2,\n            APD.DISTRIBUCION_3                                              DISTRIBUCION_3,\n            APD.DISTRIBUCION_4                                              DISTRIBUCION_4,\n            APD.DISTRIBUCION_5                                              DISTRIBUCION_5,\n            APD.DISTRIBUCION_1*(1 \/ CAN_APO.CANTIDAD_APORTES)               PROGRAMACION_1,\n            APD.DISTRIBUCION_2*(1 \/ CAN_APO.CANTIDAD_APORTES)               PROGRAMACION_2,\n            APD.DISTRIBUCION_3*(1 \/ CAN_APO.CANTIDAD_APORTES)               PROGRAMACION_3,\n            APD.DISTRIBUCION_4*(1 \/ CAN_APO.CANTIDAD_APORTES)               PROGRAMACION_4,\n            APD.DISTRIBUCION_5*(1 \/ CAN_APO.CANTIDAD_APORTES)               PROGRAMACION_5,\n            PROMEDIOS.PROMEDIO_1                                            PROMEDIO_1,\n            PROMEDIOS.PROMEDIO_2                                            PROMEDIO_2,\n            PROMEDIOS.PROMEDIO_3                                            PROMEDIO_3,\n            PROMEDIOS.PROMEDIO_4                                            PROMEDIO_4,\n            PROMEDIOS.PROMEDIO_5                                            PROMEDIO_5,\n            NVL(((APD.DISTRIBUCION_1*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_1)\/100),0)  EJECUCION_1,\n            NVL(((APD.DISTRIBUCION_2*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_2)\/100),0)  EJECUCION_2,\n            NVL(((APD.DISTRIBUCION_3*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_3)\/100),0)  EJECUCION_3,\n            NVL(((APD.DISTRIBUCION_4*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_4)\/100),0)  EJECUCION_4,\n            NVL(((APD.DISTRIBUCION_5*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_5)\/100),0)  EJECUCION_5,\n            (\n                NVL(((APD.DISTRIBUCION_1*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_1)\/100),0) +\n                NVL(((APD.DISTRIBUCION_2*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_2)\/100),0) +\n                NVL(((APD.DISTRIBUCION_3*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_3)\/100),0) +\n                NVL(((APD.DISTRIBUCION_4*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_4)\/100),0) +\n                NVL(((APD.DISTRIBUCION_5*(1 \/ CAN_APO.CANTIDAD_APORTES)*PROMEDIOS.PROMEDIO_5)\/100),0)\n            ) AS ACUMULADO_APORTE\n        FROM \n        META_POA_APORTE MPAP\n        INNER JOIN (SELECT * FROM TABLE(PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES())) METAS_FUNCIONALES on MPAP.META_POA = METAS_FUNCIONALES.META_POA\n        INNER JOIN APORTE_ESTRATEGICO           APE ON (APE.ID_APORTE_ESTRATEGICO = MPAP.APORTE_ESTRATEGICO)\n        INNER JOIN ACCION_ESTRATEGICA           ACE ON (ACE.ID_ACCION_ESTRATEGICA = APE.ACCION_ESTRATEGICA)\n        INNER JOIN (SELECT ACCION_ESTRATEGICA, COUNT(*) AS CANTIDAD_APORTES FROM PPI.APORTE_ESTRATEGICO GROUP BY ACCION_ESTRATEGICA) CAN_APO ON CAN_APO.ACCION_ESTRATEGICA = ACE.ID_ACCION_ESTRATEGICA\n        \n        -- DISTRIBUCION PORCENTUAL\n        INNER JOIN (\n            SELECT * FROM TABLE(PPI.PPE_OBTENER_APD_X_APORTE())\n        ) APD ON APE.ID_APORTE_ESTRATEGICO = APD.APORTE_ESTRATEGICO\n        \n        -- PROMEDIOS\n        INNER JOIN (\n            SELECT * FROM TABLE(PPI.PPE_OBTENER_PROMEDIOS_X_APORTE())\n        ) PROMEDIOS ON APE.ID_APORTE_ESTRATEGICO = PROMEDIOS.APORTE_ESTRATEGICO\n        \n        \n        ORDER BY\n        MPAP.APORTE_ESTRATEGICO\n    ) LOOP\n        PIPE ROW (PPE_ACUMULADO_APORTE_TYPE(\n                        REC.APORTE_ESTRATEGICO,\n                        REC.CANTIDAD_APORTES_X_ACCION,\n                        REC.REPRESENTATIVIDAD,\n                        REC.DISTRIBUCION_1,\n                        REC.DISTRIBUCION_2,\n                        REC.DISTRIBUCION_3,\n                        REC.DISTRIBUCION_4,\n                        REC.DISTRIBUCION_5,\n                        REC.PROGRAMACION_1,\n                        REC.PROGRAMACION_2,\n                        REC.PROGRAMACION_3,\n                        REC.PROGRAMACION_4,\n                        REC.PROGRAMACION_5,\n                        REC.PROMEDIO_1,\n                        REC.PROMEDIO_2,\n                        REC.PROMEDIO_3,\n                        REC.PROMEDIO_4,\n                        REC.PROMEDIO_5,\n                        REC.EJECUCION_1,\n                        REC.EJECUCION_2,\n                        REC.EJECUCION_3,\n                        REC.EJECUCION_4,\n                        REC.EJECUCION_5,\n                        REC.ACUMULADO_APORTE\n                 ));\n    END LOOP;\n\n    RETURN;\n\nEND PPE_OBTENER_ACUMULADO_X_APORTE;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.PPE_OBTENER_ACUMULADO_X_APORTE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_APORTE());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_ACUMULADO_X_ACCION<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_ACUMULADO_X_ACCION\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_ACUMULADO_ACCION_TABLE_TYPE;\nDROP TYPE PPI.PPE_ACUMULADO_ACCION_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_ACUMULADO_X_ACCION;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_ACCION_TYPE AS OBJECT (\n    ACCION_ESTRATEGICA          NUMBER,\n    ACUMULADO_ACCION            NUMBER\n);\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_ACCION_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_ACCION_TABLE_TYPE AS TABLE OF PPE_ACUMULADO_ACCION_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_ACCION_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.PPE_OBTENER_ACUMULADO_X_ACCION\nRETURN PPE_ACUMULADO_ACCION_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR REC IN (\n            SELECT \n              ACE.ID_ACCION_ESTRATEGICA ACCION_ESTRATEGICA,\n              SUM(ACUMULADO.ACUMULADO_APORTE) ACUMULADO_ACCION\n            FROM \n              ACCION_ESTRATEGICA ACE\n            INNER JOIN \n              APORTE_ESTRATEGICO APE ON (APE.ACCION_ESTRATEGICA = ACE.ID_ACCION_ESTRATEGICA)\n            -- ACUMULADO\n            INNER JOIN (\n                SELECT * FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_APORTE())\n            ) ACUMULADO ON APE.ID_APORTE_ESTRATEGICO = ACUMULADO.APORTE_ESTRATEGICO\n            GROUP BY \n              ACE.ID_ACCION_ESTRATEGICA\n            ORDER BY \n              ACE.ID_ACCION_ESTRATEGICA\n    ) \n    LOOP\n    PIPE ROW (PPE_ACUMULADO_ACCION_TYPE(rec.ACCION_ESTRATEGICA,rec.ACUMULADO_ACCION));\n   END LOOP;\n\n    --DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND PPE_OBTENER_ACUMULADO_X_ACCION;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.PPE_OBTENER_ACUMULADO_X_ACCION TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_ACCION());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_ACUMULADO_X_METAPMP<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_ACUMULADO_X_METAPMP\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_ACUMULADO_METAPMP_TABLE_TYPE;\nDROP TYPE PPI.PPE_ACUMULADO_METAPMP_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_ACUMULADO_X_METAPMP;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_METAPMP_TYPE AS OBJECT (\n    META_PMP                    NUMBER,\n    ACUMULADO_METAPMP           NUMBER\n);\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_METAPMP_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_METAPMP_TABLE_TYPE AS TABLE OF PPE_ACUMULADO_METAPMP_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_METAPMP_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.PPE_OBTENER_ACUMULADO_X_METAPMP\nRETURN PPE_ACUMULADO_METAPMP_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR REC IN (\n            SELECT \n              MPMP.ID_META_PMP META_PMP,\n              NVL(AVG(ACUMULADO_ACCION.ACUMULADO_ACCION),0) AS ACUMULADO_META\n            FROM \n            META_PMP MPMP\n            INNER JOIN ACCION_ESTRATEGICA ACE ON (ACE.META_PMP = MPMP.ID_META_PMP)\n            --ACUMULADO ACCION\n            INNER JOIN (\n                SELECT * FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_ACCION())\n            ) ACUMULADO_ACCION ON ACE.ID_ACCION_ESTRATEGICA = ACUMULADO_ACCION.ACCION_ESTRATEGICA\n            \n            GROUP BY \n              MPMP.ID_META_PMP\n            ORDER BY\n            MPMP.ID_META_PMP\n    ) \n    LOOP\n    PIPE ROW (PPE_ACUMULADO_METAPMP_TYPE(rec.META_PMP,rec.ACUMULADO_META));\n   END LOOP;\n\n    --DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND PPE_OBTENER_ACUMULADO_X_METAPMP;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.PPE_OBTENER_ACUMULADO_X_METAPMP TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_METAPMP());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_ACUMULADO_X_PRIORIDAD<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_ACUMULADO_X_PRIORIDAD\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_ACUMULADO_PRIORIDAD_TABLE_TYPE;\nDROP TYPE PPI.PPE_ACUMULADO_PRIORIDAD_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_ACUMULADO_X_PRIORIDAD;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_PRIORIDAD_TYPE AS OBJECT (\n    PRIORIDAD_ESTRATEGICA_PMP                    NUMBER,\n    ACUMULADO_PRIORIDAD                          NUMBER\n);\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_PRIORIDAD_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_ACUMULADO_PRIORIDAD_TABLE_TYPE AS TABLE OF PPE_ACUMULADO_PRIORIDAD_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_ACUMULADO_PRIORIDAD_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.PPE_OBTENER_ACUMULADO_X_PRIORIDAD\nRETURN PPE_ACUMULADO_PRIORIDAD_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR REC IN (\n            SELECT \n                PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP PRIORIDAD_ESTRATEGICA_PMP,\n                NVL(AVG(ACUMULADO_METAPMP.ACUMULADO_METAPMP),0) AS ACUMULADO_PRIORIDAD\n            FROM \n            PRIORIDAD_ESTRATEGICA_PMP PEPMP\n            INNER JOIN DETALLE_PMP DPMP ON (DPMP.PRIORIDAD_ESTRATEGICA_PMP = PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP)\n            INNER JOIN META_PMP MPMP ON (MPMP.DETALLE_PMP = DPMP.ID_DETALLE_PMP)\n            \n            --ACUMULADO METAPMP\n            INNER JOIN (\n                SELECT * FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_METAPMP())\n            ) ACUMULADO_METAPMP ON MPMP.ID_META_PMP = ACUMULADO_METAPMP.META_PMP\n            GROUP BY \n              PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP\n            ORDER BY\n            PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP\n    ) \n    LOOP\n    PIPE ROW (PPE_ACUMULADO_PRIORIDAD_TYPE(REC.PRIORIDAD_ESTRATEGICA_PMP,REC.ACUMULADO_PRIORIDAD));\n   END LOOP;\n\n    --DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND PPE_OBTENER_ACUMULADO_X_PRIORIDAD;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.PPE_OBTENER_ACUMULADO_X_PRIORIDAD TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_PRIORIDAD());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: PPE_OBTENER_AVANCE_PLP<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: PPE_OBTENER_AVANCE_PLP\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PPE_AVANCE_PLP_TABLE_TYPE;\nDROP TYPE PPI.PPE_AVANCE_PLP_TYPE;\nDROP FUNCTION PPI.PPE_OBTENER_AVANCE_PLP;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_AVANCE_PLP_TYPE AS OBJECT (\n    PERIODO_ANUAL                                   NUMBER,\n    PLP_CODIGO                                      VARCHAR2(500),\n    EJE_PLP_CODIGO                                  NUMBER,\n    EJE_PLP_DESCRIPCION                             VARCHAR2(500),\n    OBJ_PLP_CODIGO                                  NUMBER,\n    OBJ_PLP_DESCRIPCION                             VARCHAR2(500),\n    EJE_TRA_CODIGO                                  NUMBER,\n    EJE_TRA_DESCRIPCION                             VARCHAR2(500),\n    PRI_PMP_ID                                      NUMBER,\n    PRI_PMP_CODIGO                                  NUMBER,\n    PRI_PMP_DESCRIPCION                             VARCHAR2(500),\n    ACUMULADO_PRIORIDAD                             NUMBER,\n    OBJ_PMP_CODIGO                                  NUMBER,\n    OBJ_PMP_DESCRIPCION                             VARCHAR2(500),\n    MPMP_ID                                         NUMBER,\n    MPMP_CODIGO                                     NUMBER,\n    MPMP_DESCRIPCION                                VARCHAR2(500),\n    ACUMULADO_METAPMP                               NUMBER,\n    AMBITO_ACCION_UNIVERITARIA                      VARCHAR2(500),\n    ENCARGADO_MONITOERO                             VARCHAR2(500),\n    EPES_CODIGO                                     NUMBER,\n    EPES_NOMBRE                                     VARCHAR2(500),\n    TEPES_NOMBRE                                    VARCHAR2(500),\n    OPDS_CODIGO                                     NUMBER,\n    OPDS_NOMBRE                                     VARCHAR2(500),\n    UE_PACE_NOMBRE                                  VARCHAR2(500),\n    ACE_ID                                          NUMBER,\n    ACE_CODIGO                                      NUMBER,\n    ACE_DESCRIPCION                                 VARCHAR2(500),\n    ACUMULADO_ACCION                                NUMBER,\n    UE_PAPE_NOMBRE                                  VARCHAR2(500),\n    APE_CODIGO                                      NUMBER,\n    APE_DESCRIPCION                                 VARCHAR2(500),\n    CUANTIFICACION                                  NUMBER,\n    LINEA_BASE                                      NUMBER,\n    FUENTE_RECURSO                                  VARCHAR2(500),\n    JORNADA                                         NUMBER,\n    APE_ID                                          NUMBER,\n    CANTIDAD_APORTES_X_ACCION                       NUMBER,\n    REPRESENTATIVIDAD                               NUMBER,\n    DISTRIBUCION_1                                  NUMBER,\n    DISTRIBUCION_2                                  NUMBER,\n    DISTRIBUCION_3                                  NUMBER,\n    DISTRIBUCION_4                                  NUMBER,\n    DISTRIBUCION_5                                  NUMBER,\n    PROGRAMACION_1                                  NUMBER,\n    PROGRAMACION_2                                  NUMBER,\n    PROGRAMACION_3                                  NUMBER,\n    PROGRAMACION_4                                  NUMBER,\n    PROGRAMACION_5                                  NUMBER,\n    PROMEDIO_1                                      NUMBER,\n    PROMEDIO_2                                      NUMBER,\n    PROMEDIO_3                                      NUMBER,\n    PROMEDIO_4                                      NUMBER,\n    PROMEDIO_5                                      NUMBER,\n    EJECUCION_1                                     NUMBER,\n    EJECUCION_2                                     NUMBER,\n    EJECUCION_3                                     NUMBER,\n    EJECUCION_4                                     NUMBER,\n    EJECUCION_5                                     NUMBER,\n    ACUMULADO_APORTE                                NUMBER\n);\n\n\nGRANT EXECUTE ON PPI.PPE_AVANCE_PLP_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PPE_AVANCE_PLP_TABLE_TYPE AS TABLE OF PPE_AVANCE_PLP_TYPE;\n\nGRANT EXECUTE ON PPI.PPE_AVANCE_PLP_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.PPE_OBTENER_AVANCE_PLP\nRETURN PPE_AVANCE_PLP_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR REC IN (\n        --************************************************************\n        -- FUNCION: OBTENER EL AVANCE PLP\n        -- VERSION: 1.0.11\n        --************************************************************\n        SELECT\n            DISTINCT\n            PO.PERIODO_ANUAL                            PERIODO_ANUAL,\n            PLP.CODIGO                                  PLP_CODIGO,\n            EJE_PLP.CODIGO                              EJE_PLP_CODIGO,\n            EJE_PLP.DESCRIPCION                         EJE_PLP_DESCRIPCION,\n            OBJ_PLP.CODIGO                              OBJ_PLP_CODIGO,\n            OBJ_PLP.DESCRIPCION                         OBJ_PLP_DESCRIPCION,\n            EJE_TRA.CODIGO                              EJE_TRA_CODIGO,\n            EJE_TRA.DESCRIPCION                         EJE_TRA_DESCRIPCION,\n            PRI_PMP.ID_PRIORIDAD_ESTRATEGICA_PMP        PRI_PMP_ID,\n            PRI_PMP.CODIGO                              PRI_PMP_CODIGO,\n            PRI_PMP.DESCRIPCION                         PRI_PMP_DESCRIPCION,\n            PRIORIDAD.ACUMULADO_PRIORIDAD               ACUMULADO_PRIORIDAD,\n            OBJ_PMP.CODIGO                              OBJ_PMP_CODIGO,\n            OBJ_PMP.DESCRIPCION                         OBJ_PMP_DESCRIPCION,\n            MPMP.ID_META_PMP                            MPMP_ID,\n            MPMP.CODIGO                                 MPMP_CODIGO,\n            MPMP.DESCRIPCION                            MPMP_DESCRIPCION, \n            METAPMP.ACUMULADO_METAPMP                   ACUMULADO_METAPMP,\n            AAU.NOMBRE                                  AMBITO_ACCION_UNIVERITARIA,\n            UE_EM.NOMBRE                                ENCARGADO_MONITOERO,\n            EPES.CODIGO                                 EPES_CODIGO,\n            EPES.NOMBRE                                 EPES_NOMBRE,\n            TEPES.NOMBRE                                TEPES_NOMBRE,\n            OPDS.CODIGO                                 OPDS_CODIGO,\n            OPDS.NOMBRE                                 OPDS_NOMBRE,\n            UE_PACE.NOMBRE                              UE_PACE_NOMBRE,\n            ACE.ID_ACCION_ESTRATEGICA                   ACE_ID,\n            ACE.CODIGO                                  ACE_CODIGO,\n            ACE.DESCRIPCION                             ACE_DESCRIPCION,\n            ACCION.ACUMULADO_ACCION                     ACUMULADO_ACCION,    \n            UE_PAPE.NOMBRE                              UE_PAPE_NOMBRE,\n            APE.CODIGO                                  APE_CODIGO,\n            APE.DESCRIPCION                             APE_DESCRIPCION,\n            APE.CUANTIFICACION                          CUANTIFICACION,\n            APE.LINEA_BASE                              LINEA_BASE,\n            FR.NOMBRE                                   FUENTE_RECURSO,\n            APE.JORNADA                                 JORNADA,\n            APE.ID_APORTE_ESTRATEGICO                   APE_ID,\n            APORTE.CANTIDAD_APORTES_X_ACCION            CANTIDAD_APORTES_X_ACCION,\n            APORTE.REPRESENTATIVIDAD                    REPRESENTATIVIDAD,\n            APORTE.DISTRIBUCION_1                       DISTRIBUCION_1,\n            APORTE.DISTRIBUCION_2                       DISTRIBUCION_2,\n            APORTE.DISTRIBUCION_3                       DISTRIBUCION_3,\n            APORTE.DISTRIBUCION_4                       DISTRIBUCION_4,\n            APORTE.DISTRIBUCION_5                       DISTRIBUCION_5,\n            APORTE.PROGRAMACION_1                       PROGRAMACION_1,\n            APORTE.PROGRAMACION_2                       PROGRAMACION_2,\n            APORTE.PROGRAMACION_3                       PROGRAMACION_3,\n            APORTE.PROGRAMACION_4                       PROGRAMACION_4,\n            APORTE.PROGRAMACION_5                       PROGRAMACION_5,\n            APORTE.PROMEDIO_1                           PROMEDIO_1,\n            APORTE.PROMEDIO_2                           PROMEDIO_2,\n            APORTE.PROMEDIO_3                           PROMEDIO_3,\n            APORTE.PROMEDIO_4                           PROMEDIO_4,\n            APORTE.PROMEDIO_5                           PROMEDIO_5,\n            APORTE.EJECUCION_1                          EJECUCION_1,\n            APORTE.EJECUCION_2                          EJECUCION_2,\n            APORTE.EJECUCION_3                          EJECUCION_3,\n            APORTE.EJECUCION_4                          EJECUCION_4,\n            APORTE.EJECUCION_5                          EJECUCION_5,\n            APORTE.ACUMULADO_APORTE                     ACUMULADO_APORTE\n        FROM \n        META_POA_EVALUACION                         MPE\n        INNER JOIN META_POA                         MP          ON (MP.ID_META_POA                          =   MPE.META_POA)\n        INNER JOIN OBJETIVO_POA                     OP          ON (OP.ID_OBJETIVO_POA                      =   MP.OBJETIVO_POA)\n        INNER JOIN PLAN_OPERATIVO                   PO          ON (PO.ID_PLAN_OPERATIVO                    =   OP.PLAN_OPERATIVO)\n        INNER JOIN UNIDAD_EJECUTORA                 UE_PO       ON (UE_PO.ID_UNIDAD_EJECUTORA               =   PO.UNIDAD_EJECUTORA)\n        INNER JOIN EVALUACION_OPERATIVA             EO          ON (EO.PLAN_OPERATIVO                       =   PO.ID_PLAN_OPERATIVO)\n        INNER JOIN META_POA_APORTE                  MPA         ON (MPA.META_POA                            =   MP.ID_META_POA)\n        INNER JOIN APORTE_ESTRATEGICO               APE         ON (APE.ID_APORTE_ESTRATEGICO               =   MPA.APORTE_ESTRATEGICO)\n        INNER JOIN PLAN_APORTE_ESTRATEGICO          PAPE        ON (PAPE.ID_PLAN_APORTE_ESTRATEGICO         =   APE.PLAN_APORTE_ESTRATEGICO)\n        INNER JOIN UNIDAD_EJECUTORA                 UE_PAPE     ON (UE_PAPE.ID_UNIDAD_EJECUTORA             =   PAPE.UNIDAD_EJECUTORA)\n        LEFT JOIN  APORTE_PAE_FUENTE_RECURSO        APAEFR      ON (APAEFR.APORTE_ESTRATEGICO               =   APE.ID_APORTE_ESTRATEGICO) --FALTAN\n        LEFT JOIN  FUENTE_RECURSO                   FR          ON (FR.ID_FUENTE_RECURSO                    =   APAEFR.FUENTE_RECURSO) --FALTAN\n        INNER JOIN ACCION_ESTRATEGICA               ACE         ON (ACE.ID_ACCION_ESTRATEGICA               =   APE.ACCION_ESTRATEGICA)\n        INNER JOIN PLAN_ACCION_ESTRATEGICA          PACE        ON (PACE.ID_PLAN_ACCION_ESTRATEGICA         =   ACE.PLAN_ACCION_ESTRATEGICA)\n        INNER JOIN UNIDAD_EJECUTORA                 UE_PACE     ON (UE_PACE.ID_UNIDAD_EJECUTORA             =   PACE.UNIDAD_EJECUTORA)\n        INNER JOIN META_PMP                         MPMP        ON (MPMP.ID_META_PMP                        =   ACE.META_PMP)\n        INNER JOIN AMBITO_ACCION_UNIVERSITARIA      AAU         ON (AAU.ID_AMBITO_ACCION_UNIVERSITARIA      =   MPMP.AMBITO_ACCION_UNIVERSITARIA)\n        INNER JOIN ENCARGADO_MONITOREO              EM          ON (EM.ID_ENCARGADO_MONITOREO               =   MPMP.ENCARGADO_MONITOREO)\n        INNER JOIN UNIDAD_EJECUTORA                 UE_EM       ON (UE_EM.ID_UNIDAD_EJECUTORA               =   EM.UNIDAD_EJECUTORA)\n        LEFT  JOIN META_PMP_EJE_PES                 MPEP        ON (MPEP.META_PMP                           =   MPMP.ID_META_PMP) --VACIA\n        LEFT  JOIN EJE_PES                          EPES        ON (EPES.ID_EJE_PES                         =   MPEP.EJE_PES)\n        LEFT  JOIN TIPO_EJE_PES                     TEPES       ON (TEPES.ID_TIPO_EJE_PES                   =   EPES.TIPO_EJE_PES)\n        LEFT  JOIN META_PMP_OBJETIVO_PDS            MPOPDS      ON (MPOPDS.META_PMP                         =   MPMP.ID_META_PMP) --VACIA\n        LEFT  JOIN OBJETIVO_PDS                     OPDS        ON (OPDS.ID_OBJETIVO_PDS                    =   MPOPDS.OBJETIVO_PDS)\n        INNER JOIN DETALLE_PMP                      DET_PMP     ON (DET_PMP.ID_DETALLE_PMP                  =   MPMP.DETALLE_PMP)\n        INNER JOIN PRIORIDAD_ESTRATEGICA_PMP        PRI_PMP     ON (PRI_PMP.ID_PRIORIDAD_ESTRATEGICA_PMP    =   DET_PMP.PRIORIDAD_ESTRATEGICA_PMP)\n        INNER JOIN OBJETIVO_ESTRATEGICO_PMP         OBJ_PMP     ON (OBJ_PMP.ID_OBJETIVO_ESTRATEGICO_PMP     =   DET_PMP.OBJETIVO_ESTRATEGICO_PMP)\n        INNER JOIN EJE_ESTRATEGICO_PLP              EJE_PLP     ON (EJE_PLP.ID_EJE_ESTRATEGICO_PLP          =   DET_PMP.EJE_ESTRATEGICO_LARGO_PLAZO)\n        INNER JOIN DETALLE_PLP                      DET_PLP     ON (DET_PLP.EJE_ESTRATEGICO_PLP             =   EJE_PLP.ID_EJE_ESTRATEGICO_PLP)   \n        INNER JOIN OBJETIVO_ESTRATEGICO_PLP         OBJ_PLP     ON (OBJ_PLP.ID_OBJETIVO_ESTRATEGICO_PLP     =   DET_PLP.OBJETIVO_ESTRATEGICO_PLP)\n        INNER JOIN DETALLE_PLP_EJE_TRANSVERSAL      DET_EJE_TRA ON (DET_EJE_TRA.DETALLE_PLP                 =   DET_PLP.ID_DETALLE_PLP)\n        LEFT  JOIN EJE_TRANSVERSAL_PLP              EJE_TRA     ON (EJE_TRA.ID_EJE_TRANSVERSAL_PLP          =   DET_EJE_TRA.EJE_TRANSVERSAL_PLP) --VACIA\n        INNER JOIN PLAN_LARGO_PLAZO                 PLP         ON (PLP.ID_PLAN_LARGO_PLAZO                 =   DET_PLP.PLAN_LARGO_PLAZO)\n        \n        --METAS FUNCIONALES\n        INNER JOIN (SELECT *\n                FROM TABLE(PPI.PPE_OBTENER_METAS_OPE_FUNCIONALES())\n        ) METAS_FUNCIONALES on MPE.META_POA = METAS_FUNCIONALES.META_POA AND METAS_FUNCIONALES.PERIODO_ANUAL = PO.PERIODO_ANUAL\n        \n        --AVANCE APORTE\n        INNER JOIN (SELECT *\n                FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_APORTE())\n        ) APORTE ON APE.ID_APORTE_ESTRATEGICO = APORTE.APORTE_ESTRATEGICO\n        \n        --AVANCE ACCION\n        INNER JOIN (SELECT *\n                FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_ACCION())\n        ) ACCION ON ACE.ID_ACCION_ESTRATEGICA = ACCION.ACCION_ESTRATEGICA\n        \n        --AVANCE METAPMP\n        INNER JOIN (SELECT *\n                FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_METAPMP())\n        ) METAPMP ON MPMP.ID_META_PMP = METAPMP.META_PMP\n        \n        --AVANCE PRIORIDAD\n        INNER JOIN (SELECT *\n                FROM TABLE(PPI.PPE_OBTENER_ACUMULADO_X_PRIORIDAD())\n        ) PRIORIDAD ON PRI_PMP.ID_PRIORIDAD_ESTRATEGICA_PMP = PRIORIDAD.PRIORIDAD_ESTRATEGICA_PMP\n        \n        \n        WHERE \n        \n        MPE.ETAPA_PLAN = (\n            SELECT\n                EP.ID_ETAPA_PLAN\n            FROM ETAPA_PLAN EP\n            WHERE\n            EP.TIPO_ETAPA = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = 'param_ppi_ppo_tipoEtapa_evaluacion')\n            AND EP.PERIODO_ANUAL = PO.PERIODO_ANUAL\n            AND EP.TIPO_PLAN_OPERATIVO = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = 'param_ppi_ppo_tipoPlanOperativo_unidad')\n            AND EP.FECHA_FINAL_EVALUACION &lt;= TRUNC(SYSDATE)\n            ORDER BY\n            EP.FECHA_FINAL_EVALUACION DESC\n            FETCH FIRST 1 ROW ONLY\n        \n        )\n        ORDER BY \n        EJE_PLP.CODIGO,\n        OBJ_PLP.CODIGO,\n        EJE_TRA.CODIGO,\n        PRI_PMP.CODIGO,\n        OBJ_PMP.CODIGO,\n        MPMP.CODIGO,\n        AAU.NOMBRE,\n        UE_EM.NOMBRE,\n        EPES.CODIGO,\n        OPDS.CODIGO,\n        UE_PACE.NOMBRE,\n        ACE.CODIGO,\n        UE_PAPE.NOMBRE,\n        APE.CODIGO\n\n\n     \n    ) \n    LOOP\n    PIPE ROW (PPE_AVANCE_PLP_TYPE(\n                                REC.PERIODO_ANUAL,\n                                REC.PLP_CODIGO,\n                                REC.EJE_PLP_CODIGO,\n                                REC.EJE_PLP_DESCRIPCION,\n                                REC.OBJ_PLP_CODIGO,\n                                REC.OBJ_PLP_DESCRIPCION,\n                                REC.EJE_TRA_CODIGO,\n                                REC.EJE_TRA_DESCRIPCION,\n                                REC.PRI_PMP_ID,\n                                REC.PRI_PMP_CODIGO,\n                                REC.PRI_PMP_DESCRIPCION,\n                                REC.ACUMULADO_PRIORIDAD,\n                                REC.OBJ_PMP_CODIGO,\n                                REC.OBJ_PMP_DESCRIPCION,\n                                REC.MPMP_ID,\n                                REC.MPMP_CODIGO,\n                                REC.MPMP_DESCRIPCION,\n                                REC.ACUMULADO_METAPMP,\n                                REC.AMBITO_ACCION_UNIVERITARIA,\n                                REC.ENCARGADO_MONITOERO,\n                                REC.EPES_CODIGO,\n                                REC.EPES_NOMBRE,\n                                REC.TEPES_NOMBRE,\n                                REC.OPDS_CODIGO,\n                                REC.OPDS_NOMBRE,\n                                REC.UE_PACE_NOMBRE,\n                                REC.ACE_ID,\n                                REC.ACE_CODIGO,\n                                REC.ACE_DESCRIPCION,\n                                REC.ACUMULADO_ACCION,\n                                REC.UE_PAPE_NOMBRE,\n                                REC.APE_CODIGO,\n                                REC.APE_DESCRIPCION,\n                                REC.CUANTIFICACION,\n                                REC.LINEA_BASE,\n                                REC.FUENTE_RECURSO,\n                                REC.JORNADA,\n                                REC.APE_ID,\n                                REC.CANTIDAD_APORTES_X_ACCION,\n                                REC.REPRESENTATIVIDAD,\n                                REC.DISTRIBUCION_1,\n                                REC.DISTRIBUCION_2,\n                                REC.DISTRIBUCION_3,\n                                REC.DISTRIBUCION_4,\n                                REC.DISTRIBUCION_5,\n                                REC.PROGRAMACION_1,\n                                REC.PROGRAMACION_2,\n                                REC.PROGRAMACION_3,\n                                REC.PROGRAMACION_4,\n                                REC.PROGRAMACION_5,\n                                REC.PROMEDIO_1,\n                                REC.PROMEDIO_2,\n                                REC.PROMEDIO_3,\n                                REC.PROMEDIO_4,\n                                REC.PROMEDIO_5,\n                                REC.EJECUCION_1,\n                                REC.EJECUCION_2,\n                                REC.EJECUCION_3,\n                                REC.EJECUCION_4,\n                                REC.EJECUCION_5,\n                                REC.ACUMULADO_APORTE\n                             ));\n   END LOOP;\n\n    --DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND PPE_OBTENER_AVANCE_PLP;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.PPE_OBTENER_AVANCE_PLP TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.PPE_OBTENER_AVANCE_PLP()) AVANCE_PLP;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-palette-color-8-color has-palette-color-2-background-color has-text-color has-background\">Parte II: Creaci\u00f3n de Vista<\/h2>\n\n\n\n<p class=\"has-luminous-vivid-orange-color has-text-color\"><strong>NOTA IMPORTANTE: las vista no llevan par\u00e1metros obtienen todos los datos a nivel de c\u00f3digo se filtran<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Con base en la funciones anteriores tenemos la consulta<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\nPERIODO_ANUAL,\nPLP_CODIGO,\nEJE_PLP_CODIGO,\nEJE_PLP_DESCRIPCION,\nOBJ_PLP_CODIGO,\nOBJ_PLP_DESCRIPCION,\nEJE_TRA_CODIGO,\nEJE_TRA_DESCRIPCION,\nPRI_PMP_ID,\nPRI_PMP_CODIGO,\nPRI_PMP_DESCRIPCION,\nACUMULADO_PRIORIDAD,\nOBJ_PMP_CODIGO,\nOBJ_PMP_DESCRIPCION,\nMPMP_ID,\nMPMP_CODIGO,\nMPMP_DESCRIPCION, \nACUMULADO_METAPMP,\nAMBITO_ACCION_UNIVERITARIA,\nENCARGADO_MONITOERO,\nEPES_CODIGO,\nEPES_NOMBRE,\nTEPES_NOMBRE,\nOPDS_CODIGO,\nOPDS_NOMBRE,\nUE_PACE_NOMBRE,\nACE_ID,\nACE_CODIGO,\nACE_DESCRIPCION,\nACUMULADO_ACCION,    \nUE_PAPE_NOMBRE,\nAPE_CODIGO,\nAPE_DESCRIPCION,\nCUANTIFICACION,\nLINEA_BASE,\nFUENTE_RECURSO,\nJORNADA,\nAPE_ID,\nCANTIDAD_APORTES_X_ACCION,\nREPRESENTATIVIDAD,\nDISTRIBUCION_1,\nDISTRIBUCION_2,\nDISTRIBUCION_3,\nDISTRIBUCION_4,\nDISTRIBUCION_5,\nPROGRAMACION_1,\nPROGRAMACION_2,\nPROGRAMACION_3,\nPROGRAMACION_4,\nPROGRAMACION_5,\nPROMEDIO_1,\nPROMEDIO_2,\nPROMEDIO_3,\nPROMEDIO_4,\nPROMEDIO_5,\nEJECUCION_1,\nEJECUCION_2,\nEJECUCION_3,\nEJECUCION_4,\nEJECUCION_5,\nACUMULADO_APORTE\nFROM TABLE(PPI.PPE_OBTENER_AVANCE_PLP()) AVANCE_PLP;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Notas:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Esta consultta ya trae el campo necesario para el filtrado<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>PERIODO_ANUAL,<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora la vamos a modificar para que contenga el numero de fila como ID ya que es requerido para las vista<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>ROWNUM                              AS ID,<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\nROWNUM AS ID,\nPERIODO_ANUAL,\nPLP_CODIGO,\nEJE_PLP_CODIGO,\nEJE_PLP_DESCRIPCION,\nOBJ_PLP_CODIGO,\nOBJ_PLP_DESCRIPCION,\nEJE_TRA_CODIGO,\nEJE_TRA_DESCRIPCION,\nPRI_PMP_ID,\nPRI_PMP_CODIGO,\nPRI_PMP_DESCRIPCION,\nACUMULADO_PRIORIDAD,\nOBJ_PMP_CODIGO,\nOBJ_PMP_DESCRIPCION,\nMPMP_ID,\nMPMP_CODIGO,\nMPMP_DESCRIPCION, \nACUMULADO_METAPMP,\nAMBITO_ACCION_UNIVERITARIA,\nENCARGADO_MONITOERO,\nEPES_CODIGO,\nEPES_NOMBRE,\nTEPES_NOMBRE,\nOPDS_CODIGO,\nOPDS_NOMBRE,\nUE_PACE_NOMBRE,\nACE_ID,\nACE_CODIGO,\nACE_DESCRIPCION,\nACUMULADO_ACCION,    \nUE_PAPE_NOMBRE,\nAPE_CODIGO,\nAPE_DESCRIPCION,\nCUANTIFICACION,\nLINEA_BASE,\nFUENTE_RECURSO,\nJORNADA,\nAPE_ID,\nCANTIDAD_APORTES_X_ACCION,\nREPRESENTATIVIDAD,\nDISTRIBUCION_1,\nDISTRIBUCION_2,\nDISTRIBUCION_3,\nDISTRIBUCION_4,\nDISTRIBUCION_5,\nPROGRAMACION_1,\nPROGRAMACION_2,\nPROGRAMACION_3,\nPROGRAMACION_4,\nPROGRAMACION_5,\nPROMEDIO_1,\nPROMEDIO_2,\nPROMEDIO_3,\nPROMEDIO_4,\nPROMEDIO_5,\nEJECUCION_1,\nEJECUCION_2,\nEJECUCION_3,\nEJECUCION_4,\nEJECUCION_5,\nACUMULADO_APORTE\nFROM TABLE(PPI.PPE_OBTENER_AVANCE_PLP()) AVANCE_PLP;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaAvancePLPCreate.sql<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos crear el siguiente archivo<\/li>\n\n\n\n<li>Ubicaci\u00f3n: PPI-PPE-> service -> src -> main -> resources -> sql<\/li>\n\n\n\n<li>Para almacenar el respaldo de la creaci\u00f3n de la vista<\/li>\n\n\n\n<li>Le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/* \n * Copyright (C) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n * \n *\/\n\n\/********************************************************\/\n\/********************************************************\/\n\/* DOCUMENTACI\u00d3N                                        *\/\n\/********************************************************\/\n\/********************************************************\/\n\/**\n * @author:  Gustavo Matamoros Gonz\u00e1lez\n * @since: 06\/12\/2023\n * @bug: BTPPI-342 \n * @funcion: Obtener el avance del Plan de Largo PLazo (PLP)\n *\/\n\n\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR LA VISTA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP PUBLIC SYNONYM VISTA_AVANCE_PLP;\n\nDROP VIEW PPI.VISTA_AVANCE_PLP;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE LA VISTA                                 *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE OR REPLACE FORCE EDITIONABLE VIEW  PPI.VISTA_AVANCE_PLP AS\n\nSELECT\nROWNUM AS ID,\nPERIODO_ANUAL,\nPLP_CODIGO,\nEJE_PLP_CODIGO,\nEJE_PLP_DESCRIPCION,\nOBJ_PLP_CODIGO,\nOBJ_PLP_DESCRIPCION,\nEJE_TRA_CODIGO,\nEJE_TRA_DESCRIPCION,\nPRI_PMP_ID,\nPRI_PMP_CODIGO,\nPRI_PMP_DESCRIPCION,\nACUMULADO_PRIORIDAD,\nOBJ_PMP_CODIGO,\nOBJ_PMP_DESCRIPCION,\nMPMP_ID,\nMPMP_CODIGO,\nMPMP_DESCRIPCION, \nACUMULADO_METAPMP,\nAMBITO_ACCION_UNIVERITARIA,\nENCARGADO_MONITOERO,\nEPES_CODIGO,\nEPES_NOMBRE,\nTEPES_NOMBRE,\nOPDS_CODIGO,\nOPDS_NOMBRE,\nUE_PACE_NOMBRE,\nACE_ID,\nACE_CODIGO,\nACE_DESCRIPCION,\nACUMULADO_ACCION,    \nUE_PAPE_NOMBRE,\nAPE_CODIGO,\nAPE_DESCRIPCION,\nCUANTIFICACION,\nLINEA_BASE,\nFUENTE_RECURSO,\nJORNADA,\nAPE_ID,\nCANTIDAD_APORTES_X_ACCION,\nREPRESENTATIVIDAD,\nDISTRIBUCION_1,\nDISTRIBUCION_2,\nDISTRIBUCION_3,\nDISTRIBUCION_4,\nDISTRIBUCION_5,\nPROGRAMACION_1,\nPROGRAMACION_2,\nPROGRAMACION_3,\nPROGRAMACION_4,\nPROGRAMACION_5,\nPROMEDIO_1,\nPROMEDIO_2,\nPROMEDIO_3,\nPROMEDIO_4,\nPROMEDIO_5,\nEJECUCION_1,\nEJECUCION_2,\nEJECUCION_3,\nEJECUCION_4,\nEJECUCION_5,\nACUMULADO_APORTE\nFROM TABLE(PPI.PPE_OBTENER_AVANCE_PLP()) AVANCE_PLP;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE SINONIMO                                 *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM VISTA_AVANCE_PLP FOR PPI.VISTA_AVANCE_PLP;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT'S                                              *\/\n\/********************************************************\/\n\/********************************************************\/\n--GRANT WWW_SIGESA \/ ANALISTA \/ ANALISTA_SIGESA\nGRANT SELECT, REFERENCES ON  PPI.VISTA_AVANCE_PLP TO WWW_SIGESA;\nGRANT SELECT ON  PPI.VISTA_AVANCE_PLP TO ANALISTA, ANALISTA_SIGESA;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CONSULTAR VISTA                                      *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM VISTA_AVANCE_PLP;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaAvancePLPI18n.sql<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos crear un script que inserte la internacionalizaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/* \n * Copyright (C) 2022.\n *\n * Centro de Gestion Informatica\n * Direccion de Tecnologias de la Informacion y Comunicacion\n * Universidad Nacional - Costa Rica\n * http:\/\/www.una.ac.cr\n * \n *\/\n\n\/********************************************************\/\n\/********************************************************\/\n\/* DOCUMENTACI\u00d3N                                        *\/\n\/********************************************************\/\n\/********************************************************\/\n\/**\n * @author:  Gustavo Matamoros Gonz\u00e1lez\n * @since: 06\/12\/2023\n * @bug: BTPPI-342 \n * @funcion: Insertar internacionalizaci\u00f3n para VISTA_AVANCE_PLP\n *\/\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ejeEstrategicoPLPCodigo_header', 'C\u00f3digo Eje Estrat\u00e9gico PLP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ejeEstrategicoPLPDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_objetivoEstrategicoPLPCodigo_header', 'C\u00f3digo Objetivo Estrat\u00e9gico PLP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_objetivoEstrategicoPLPDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ejeTransversalPLPCodigo_header', 'C\u00f3digo Eje Transversal PLP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ejeTransversalDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_prioridadEstrategicaPMPCodigo_header', 'C\u00f3digo Prioridad Estrat\u00e9gica PMP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_prioridadEstrategicaPMPDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_prioridadEstrategicaPMPAvance_header', 'Avance Prioridad Estrat\u00e9gica PMP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_objetivoEstrategicoPMPCodigo_header', 'C\u00f3digo Objetivo Estrat\u00e9gico PMP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_objetivoEstrategicoPMPDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_metaEstrategicaPMPCodigo_header', 'C\u00f3digo Meta Estrat\u00e9gica PMP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_metaEstrategicaPMPDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_metaEstrategicaPMPAvance_header', 'Avance Meta Estrat\u00e9gica PMP', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ambitoAccionUniversitaria_header', '\u00c1mbito de Acci\u00f3n Universitaria', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_encargadoMonitoreo_header', 'Encargado de Monitoreo', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ejePlanesCodigo_header', 'C\u00f3digo Eje PLANES', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ejePlanesNombre_header', 'Eje PLANES', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_ejePlanesTipo_header', 'Tipo Eje PLANES', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_objetivoPDSCodigo_header', 'C\u00f3digo Objetivo PDS', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_objetivoPDSNombre_header', 'Objetivo PDS', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_accionEstrategicaUnidadEjecutora_header', 'Unidad Ejecutora de Acci\u00f3n Estrat\u00e9gica', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_accionEstrategicaCodigo_header', 'C\u00f3digo Acci\u00f3n Estrat\u00e9gica', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_accionEstrategicaDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_accionEstrategicaAvance_header', 'Avance Acci\u00f3n Estrat\u00e9gica', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoUnidadEjecutora_header', 'Unidad Ejecutora de Aporte Estrat\u00e9gico', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoCodigo_header', 'C\u00f3digo Aporte Estrat\u00e9gico', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoDescripcion_header', 'Descripci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoCuantificacion_header', 'Cuantificaci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoLineaBase_header', 'L\u00ednea Base', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoFuenteRecursos_header', 'Fuente de Recursos', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoJornada_header', 'Jornada', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoCantidadAportesAccion_header', 'Cantidad de Aportes por Acci\u00f3n', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoRepresentatividad_header', 'Representatividad', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoDistribucion1_header', 'Distribucion 1', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoDistribucion2_header', 'Distribucion 2', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoDistribucion3_header', 'Distribucion 3', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoDistribucion4_header', 'Distribucion 4', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoDistribucion5_header', 'Distribucion 5', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoProgramacion1_header', 'Programaci\u00f3n 1', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoProgramacion2_header', 'Programaci\u00f3n 2', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoProgramacion3_header', 'Programaci\u00f3n 3', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoProgramacion4_header', 'Programaci\u00f3n 4', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoProgramacion5_header', 'Programaci\u00f3n 5', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoPromedio1_header', 'Promedio 1', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoPromedio2_header', 'Promedio 2', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoPromedio3_header', 'Promedio 3', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoPromedio4_header', 'Promedio 4', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoPromedio5_header', 'Promedio 5', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoEjecucion1_header', 'Ejecuci\u00f3n 1', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoEjecucion2_header', 'Ejecuci\u00f3n 2', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoEjecucion3_header', 'Ejecuci\u00f3n 3', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoEjecucion4_header', 'Ejecuci\u00f3n 4', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoEjecucion5_header', 'Ejecuci\u00f3n 5', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_aporteEstrategicoAvance_header', 'Avance Aporte Estrat\u00e9gico', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_list_form_title', 'Consulta General de Seguimiento de Planificaci\u00f3n Estrat\u00e9gica', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_list_form_table_header', 'Consulta General de Seguimiento de Planificaci\u00f3n Estrat\u00e9gica', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_list_form_table_title', 'Consulta General de Seguimiento de Planificaci\u00f3n Estrat\u00e9gica', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_planOperativoAnualInstitucional_select_label', 'Seleccione un Periodo Anual', SQ_I18N.nextval);\n\ninsert into i18n (version, usuario_creacion, fecha_creacion, fecha_modificacion, usuario_modificacion, campo_configurable, idioma, llave, valor, id_i18n) \nvalues (0,1, sysdate, sysdate,1, NULL, 'es', 'VistaAvancePLP_planOperativoAnualInstitucional_LOV_title', 'Seleccione un Periodo Anual', SQ_I18N.nextval);\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">DOMAIN JPA: VistaAvancePLP.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos crear el domain para acceder a los datos<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-palette-color-8-color has-palette-color-2-background-color has-text-color has-background\">A PARTIR DE AQU\u00cd SON LAS FUNCIONES DE LA VERSI\u00d3N 1 CON PARAMETRO PERIODO_ANUAL<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: OBTENER_METAS_OPE_FUCIONALES_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_METAS_OPE_FUCIONALES_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.META_POA_TABLE_TYPE;\nDROP TYPE PPI.META_POA_TYPE;\nDROP FUNCTION PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL;\nDROP SYNONYM OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato META_POA\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.META_POA_TYPE AS OBJECT (\n    META_POA NUMBER\n);\n\nGRANT EXECUTE ON PPI.META_POA_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato MetaPoaType\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.META_POA_TABLE_TYPE AS TABLE OF META_POA_TYPE;\n\nGRANT EXECUTE ON PPI.META_POA_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN META_POA_TABLE_TYPE PIPELINED AS\n\nBEGIN\n    FOR rec IN (\n        SELECT MPE.META_POA\n        FROM META_POA_EVALUACION MPE\n        INNER JOIN META_POA MP ON (MP.ID_META_POA = MPE.META_POA)\n        INNER JOIN OBJETIVO_POA OP ON (OP.ID_OBJETIVO_POA = MP.OBJETIVO_POA)\n        INNER JOIN PLAN_OPERATIVO PO ON (PO.ID_PLAN_OPERATIVO = OP.PLAN_OPERATIVO)\n        INNER JOIN UNIDAD_EJECUTORA UE_PO ON (UE_PO.ID_UNIDAD_EJECUTORA = PO.UNIDAD_EJECUTORA)\n        INNER JOIN EVALUACION_OPERATIVA EO ON (EO.PLAN_OPERATIVO = PO.ID_PLAN_OPERATIVO)\n        WHERE PO.PERIODO_ANUAL = periodoAnual\n        AND PO.ESTADO_FORMULACION_OPE IN (SELECT VALOR FROM PARAMETRO WHERE LLAVE IN ('param_ppi_ppo_estadoFormulacionOpe_aprobado_unSoloNivel', 'param_ppi_ppo_estadoFormulacionOpe_aprobado_unidad_integradora'))\n        AND PO.TIPO_PLAN_OPERATIVO = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = 'param_ppi_ppo_tipoPlanOperativo_unidad')\n        AND EO.ESTADO_EVALUACION_POA IN (SELECT VALOR FROM PARAMETRO WHERE LLAVE IN ('param_ppi_ppo_estadoEvaluacionPOA_aprobado_unSoloNivel', 'param_ppi_ppo_estadoEvaluacionPOA_aprobado_unidad_integradora'))\n        AND MPE.ETAPA_PLAN = EO.ETAPA_PLAN\n        --AND EO.FECHA_APROBACION = (\n        --    SELECT \n         --   MAX(EO.FECHA_APROBACION) \n         --   FROM \n         --   EVALUACION_OPERATIVA EO1\n         --   INNER JOIN PLAN_OPERATIVO PO1 ON (PO1.ID_PLAN_OPERATIVO = EO1.PLAN_OPERATIVO)\n         --   WHERE \n         --   PO1.ID_PLAN_OPERATIVO = PO.ID_PLAN_OPERATIVO\n         --   AND PO1.UNIDAD_EJECUTORA = PO.UNIDAD_EJECUTORA\n        --)\n        AND EO.FECHA_APROBACION = (\n            SELECT \n                MAX(EO.FECHA_APROBACION) \n            FROM \n            EVALUACION_OPERATIVA EO1\n            INNER JOIN PLAN_OPERATIVO PO1 ON (PO1.ID_PLAN_OPERATIVO = EO1.PLAN_OPERATIVO)\n            WHERE \n            PO1.ID_PLAN_OPERATIVO = PO.ID_PLAN_OPERATIVO\n            AND PO1.UNIDAD_EJECUTORA = PO.UNIDAD_EJECUTORA\n        )\n        ORDER BY MPE.META_POA\n    ) LOOP\n        PIPE ROW (META_POA_TYPE(rec.META_POA));\n    END LOOP;\n\n    RETURN;\n\nEND OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS MetaPoa\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL(202));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCION: OBTENER_PERIODOS_ANUALES_DISTRIBUCION_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_PERIODOS_ANUALES_DISTRIBUCION_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PERIODO_ANUAL_TABLE_TYPE;\nDROP TYPE PPI.PERIODO_ANUAL_TYPE;\nDROP FUNCTION PPI.OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL;\nDROP SYNONYM OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato PERIODO_ANUAL_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PERIODO_ANUAL_TYPE AS OBJECT (\n    PERIODO_ANUAL NUMBER\n);\n\nGRANT EXECUTE ON PPI.PERIODO_ANUAL_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PERIODO_ANUAL_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PERIODO_ANUAL_TABLE_TYPE AS TABLE OF PERIODO_ANUAL_TYPE;\n\nGRANT EXECUTE ON PPI.PERIODO_ANUAL_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN PERIODO_ANUAL_TABLE_TYPE PIPELINED AS\n\nBEGIN\n    FOR rec IN (\n        SELECT \n        DISTINCT\n        APD.PERIODO_ANUAL\n        FROM\n        META_POA_APORTE MPAP\n        INNER JOIN (SELECT *\n        FROM TABLE(PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL(periodoAnual))) METAS_FUNCIONALES on MPAP.META_POA = METAS_FUNCIONALES.META_POA\n        INNER JOIN APORTE_ESTRATEGICO APE ON (APE.ID_APORTE_ESTRATEGICO = MPAP.APORTE_ESTRATEGICO)\n        INNER JOIN APORTE_PAE_DISTRIBUCION APD ON (APD.APORTE_ESTRATEGICO = APE.ID_APORTE_ESTRATEGICO)\n        ORDER BY APD.PERIODO_ANUAL\n    ) LOOP\n        PIPE ROW (PERIODO_ANUAL_TYPE(rec.PERIODO_ANUAL));\n    END LOOP;\n\n    RETURN;\n\nEND OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\nGRANT EXECUTE ON  PPI.OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL(202));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_APD_X_PERIODDO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_APD_X_PERIODDO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n\n--*****************************************************\n--COMPONENTE REQUERIDO: A\u00d1O\n--*****************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.ANO_TABLE_TYPE;\nDROP TYPE PPI.ANO_TYPE;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ANO_TYPE AS OBJECT (\n    ANO NUMBER(4)\n);\nGRANT EXECUTE ON PPI.ANO_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato ANO_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ANO_TABLE_TYPE AS TABLE OF ANO_TYPE;\n\nGRANT EXECUTE ON PPI.ANO_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n\n\n\n--*****************************************************\n--FUNCI\u00d3N: OBTENER_APD_X_PERIODDO_ANUAL\n--*****************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.APD_TABLE_TYPE;\nDROP TYPE PPI.APD_TYPE;\nDROP FUNCTION PPI.OBTENER_APD_X_PERIODO_ANUAL;\nDROP SYNONYM OBTENER_APD_X_PERIODO_ANUAL;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE     APD_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO  NUMBER,\n    ANNO_1              NUMBER,\n    ANNO_2              NUMBER,\n    ANNO_3              NUMBER,\n    ANNO_4              NUMBER,\n    ANNO_5              NUMBER\n);\nGRANT EXECUTE ON PPI.APD_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.APD_TABLE_TYPE AS TABLE OF APD_TYPE;\n\nGRANT EXECUTE ON PPI.APD_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION PPI.OBTENER_APD_X_PERIODO_ANUAL(\n    --periodoAnual: parametro de ingreso\n    periodoAnual IN NUMBER\n)\n--RETURN: tabla virtual de tipo APD_TABLE_TYPE\nRETURN APD_TABLE_TYPE PIPELINED AS\n\n    --***************************************************************\n    --VARIABLES\n    --***************************************************************\n    -- Almacena los a\u00f1os en un arreglo\n    v_periodos  PERIODO_ANUAL_TABLE_TYPE := PERIODO_ANUAL_TABLE_TYPE();\n\n    -- Variable para almacenar el a\u00f1o actual\n    v_periodo PERIODO_ANUAL_TYPE;\n\n\n    -- Almacena los a\u00f1os en un arreglo\n    v_anos ANO_TABLE_TYPE := ANO_TABLE_TYPE();\n\n    -- Variable para almacenar el a\u00f1o actual\n    v_ano ANO_TYPE;\n\n    -- Variable para construir la consulta PIVOT\n    v_sql CLOB;\n\n    -- Variable para almacenar el resultado de la consulta PIVOT\n    v_result SYS_REFCURSOR;\n\n    -- Variables para almacenar los valores din\u00e1micos de las columnas del PIVOT\n    v_aporte NUMBER;\n    v_anno_1 NUMBER;\n    v_anno_2 NUMBER;\n    v_anno_3 NUMBER;\n    v_anno_4 NUMBER;\n    v_anno_5 NUMBER;\n\nBEGIN\n    --***************************************************************\n    --OBTENCI\u00d3N DE DATOS\n    --***************************************************************\n    -- Ejecutar consulta del ID_PERIODO_ANUAL y  ANO para almacenarlos en arreglos para crear el PIVOT \n    FOR rec IN (SELECT ANO, ID_PERIODO_ANUAL\n                FROM PERIODO_ANUAL\n                WHERE ID_PERIODO_ANUAL IN (SELECT PERIODO_ANUAL\n                                           FROM TABLE(PPI.OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL(periodoAnual)))\n                ORDER BY ANO)\n    LOOP\n        -- Utilizar el constructor del tipo ANO_TYPE\n        v_ano := ANO_TYPE(rec.ANO);\n\n        -- Utilizar el constructor del tipo ANO_TYPE\n        v_periodo := PERIODO_ANUAL_TYPE(rec.ID_PERIODO_ANUAL);\n\n       -- A\u00f1adir los resultados al arreglo de a\u00f1os\n        v_periodos.EXTEND;\n        v_periodos(v_periodos.LAST) := v_periodo;\n\n        -- A\u00f1adir los resultados al arreglo de a\u00f1os\n        v_anos.EXTEND;\n        v_anos(v_anos.LAST) := v_ano;\n\n    END LOOP;\n\n\n    --**************************************************************\n    --CONSULTA DIN\u00c1MICA\n    --**************************************************************\n    v_sql := 'SELECT * FROM (SELECT APD.APORTE_ESTRATEGICO, APD.PERIODO_ANUAL, APD.DISTRIBUCION_PORCENTUAL ';\n    v_sql := v_sql || 'FROM META_POA_APORTE MPAP ';\n    v_sql := v_sql || 'INNER JOIN (SELECT * FROM TABLE(PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL(' || periodoAnual || '))) METAS_FUNCIONAES ';\n    v_sql := v_sql || 'ON MPAP.META_POA = METAS_FUNCIONAES.META_POA ';\n    v_sql := v_sql || 'INNER JOIN APORTE_ESTRATEGICO APE ON APE.ID_APORTE_ESTRATEGICO = MPAP.APORTE_ESTRATEGICO ';\n    v_sql := v_sql || 'INNER JOIN APORTE_PAE_DISTRIBUCION APD ON APD.APORTE_ESTRATEGICO = APE.ID_APORTE_ESTRATEGICO ';\n    v_sql := v_sql || 'WHERE APD.PERIODO_ANUAL IN (SELECT * FROM TABLE(PPI.OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL(' || periodoAnual || ')))) ';\n    v_sql := v_sql || 'PIVOT (MAX(DISTRIBUCION_PORCENTUAL) FOR PERIODO_ANUAL IN (';\n\n    FOR i IN 1..v_anos.LAST LOOP\n        v_sql := v_sql || v_periodos(i).PERIODO_ANUAL || ' as \"' || v_anos(i).ANO || '\"';\n        IF i &lt; v_anos.LAST THEN\n            v_sql := v_sql || ', ';\n        END IF;\n    END LOOP;\n\n    v_sql := v_sql || ')) ORDER BY APORTE_ESTRATEGICO';\n\n\n    -- Ejecutar la consulta PIVOT\n    OPEN v_result FOR v_sql;\n\n    --**************************************************************\n    --RECUPERAR Y FORMATEAAR LOS DATOS\n    --**************************************************************\n    LOOP\n       FETCH v_result INTO v_aporte,v_anno_1, v_anno_2, v_anno_3, v_anno_4, v_anno_5;\n       EXIT WHEN v_result%NOTFOUND;\n\n       PIPE ROW(APD_TYPE(v_aporte,v_anno_1, v_anno_2, v_anno_3, v_anno_4, v_anno_5));\n    END LOOP;\n\n    CLOSE v_result;\n\n    RETURN;\n\nEND OBTENER_APD_X_PERIODO_ANUAL;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.OBTENER_APD_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_APD_X_PERIODO_ANUAL(202));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_PROGRAMACION_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_PROGRAMACION_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PROGRAMACION_TABLE_TYPE;\nDROP TYPE PPI.PROGRAMACION_TYPE;\nDROP FUNCTION PPI.OBTENER_PROGRAMACION_X_PERIODO_ANUAL;\nDROP SYNONYM OBTENER_PROGRAMACION_X_PERIODO_ANUAL;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PROGRAMACION_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO          NUMBER,\n    DISTRIBUCION_PORCENTUAL     NUMBER,\n    CANTIDAD_APORTES            NUMBER,\n    REPRESENTATIVIDAD           NUMBER,\n    PROGRAMACION                NUMBER\n);\n\nGRANT EXECUTE ON PPI.PROGRAMACION_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PROGRAMACION_TABLE_TYPE AS TABLE OF PROGRAMACION_TYPE;\n\nGRANT EXECUTE ON PPI.PROGRAMACION_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_PROGRAMACION_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN PROGRAMACION_TABLE_TYPE PIPELINED AS\n\nBEGIN\n    FOR rec IN (\n        \n        SELECT \n        --DISTINCT \n        APD.APORTE_ESTRATEGICO                                          APORTE_ESTRATEGICO,\n        APD.DISTRIBUCION_PORCENTUAL                                     DISTRIBUCION_PORCENTUAL,\n        CAN_APO.CANTIDAD_APORTES                                        CANTIDAD_APORTES_X_ACCION,\n        (1 \/ CAN_APO.CANTIDAD_APORTES)                                  REPRESENTATIVIDAD,\n        APD.DISTRIBUCION_PORCENTUAL*(1 \/ CAN_APO.CANTIDAD_APORTES)      PROGRAMACION\n        FROM\n        META_POA_APORTE                         MPAP\n        INNER JOIN (SELECT * FROM TABLE(PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL(periodoAnual))) METAS_FUNCIONALES on MPAP.META_POA = METAS_FUNCIONALES.META_POA\n        INNER JOIN APORTE_ESTRATEGICO           APE ON (APE.ID_APORTE_ESTRATEGICO = MPAP.APORTE_ESTRATEGICO)\n        INNER JOIN APORTE_PAE_DISTRIBUCION      APD ON (APD.APORTE_ESTRATEGICO = APE.ID_APORTE_ESTRATEGICO)\n        INNER JOIN ACCION_ESTRATEGICA           ACE ON (ACE.ID_ACCION_ESTRATEGICA = APE.ACCION_ESTRATEGICA)\n        INNER JOIN (SELECT ACCION_ESTRATEGICA, COUNT(*) AS CANTIDAD_APORTES FROM PPI.APORTE_ESTRATEGICO GROUP BY ACCION_ESTRATEGICA) CAN_APO ON CAN_APO.ACCION_ESTRATEGICA = ACE.ID_ACCION_ESTRATEGICA\n        WHERE APD.PERIODO_ANUAL = periodoAnual\n        ORDER BY \n        APD.APORTE_ESTRATEGICO \n    ) LOOP\n        PIPE ROW(PROGRAMACION_TYPE(REC.APORTE_ESTRATEGICO,REC.DISTRIBUCION_PORCENTUAL,REC.CANTIDAD_APORTES_X_ACCION, REC.REPRESENTATIVIDAD, REC.PROGRAMACION));\n    END LOOP;\n\n    RETURN;\n\nEND OBTENER_PROGRAMACION_X_PERIODO_ANUAL;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.OBTENER_PROGRAMACION_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_PROGRAMACION_X_PERIODO_ANUAL(202));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_ULTIMA_ETAPA_PLAN_EVALUACION_FINALIZADA<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_ULTIMA_ETAPA_PLAN_EVALUACION_FINALIZADA\n--*******************************************************************************\n--*******************************************************************************\n\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_ULTIMA_ETAPA_PLAN_EVALUACION_FINALIZADA(\n    periodoAnual IN NUMBER\n)\nRETURN NUMBER\nIS\n    v_id_etapa_plan NUMBER;\n    \nBEGIN\n\n    SELECT\n        EP.ID_ETAPA_PLAN INTO v_id_etapa_plan\n    FROM ETAPA_PLAN EP\n    WHERE\n    EP.TIPO_ETAPA = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = 'param_ppi_ppo_tipoEtapa_evaluacion')\n    AND EP.PERIODO_ANUAL = periodoAnual\n    AND EP.TIPO_PLAN_OPERATIVO = (SELECT VALOR FROM PARAMETRO WHERE LLAVE = 'param_ppi_ppo_tipoPlanOperativo_unidad')\n    AND EP.FECHA_FINAL_EVALUACION &lt;= TRUNC(SYSDATE)\n    ORDER BY\n    EP.FECHA_FINAL_EVALUACION DESC\n    FETCH FIRST 1 ROW ONLY;\n\n  RETURN v_id_etapa_plan;\nEND OBTENER_ULTIMA_ETAPA_PLAN_EVALUACION_FINALIZADA;\n\n--PROBAR CONSULTA\nSELECT PPI.OBTENER_ULTIMA_ETAPA_PLAN_EVALUACION_FINALIZADA(:periodoAnual) AS ULTIMA_ETAPA_PLAN_EVALUACION FROM DUAL;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.PROMEDIO_AVANCE_APORTE_TABLE_TYPE;\nDROP TYPE PPI.PROMEDIO_AVANCE_APORTE_TYPE;\nDROP FUNCTION PPI.OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato PERIODO_ANUAL_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PROMEDIO_AVANCE_APORTE_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO  NUMBER,\n    PROMEDIO            NUMBER,\n    ETAPA_PLAN          NUMBER\n);\n\nGRANT EXECUTE ON PPI.PROMEDIO_AVANCE_APORTE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PERIODO_ANUAL_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.PROMEDIO_AVANCE_APORTE_TABLE_TYPE AS TABLE OF PROMEDIO_AVANCE_APORTE_TYPE;\n\nGRANT EXECUTE ON PPI.PROMEDIO_AVANCE_APORTE_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN PROMEDIO_AVANCE_APORTE_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR rec IN (\n            SELECT \n                MPA.APORTE_ESTRATEGICO,\n                NVL(AVG(MPE.EJECUCION),0) PROMEDIO,\n                MPE.ETAPA_PLAN\n                FROM\n                META_POA_APORTE MPA\n                INNER JOIN (\n                    SELECT * FROM TABLE(\n                        PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL(periodoAnual)\n                    )\n                ) METAS_FUNCIONALES ON MPA.META_POA = METAS_FUNCIONALES.META_POA\n                INNER JOIN META_POA_EVALUACION MPE ON (MPE.META_POA = MPA.META_POA)\n                INNER JOIN ETAPA_PLAN EP ON (EP.ID_ETAPA_PLAN = MPE.ETAPA_PLAN)\n                WHERE \n                EP.PERIODO_ANUAL = periodoAnual\n                AND MPE.ETAPA_PLAN = PPI.OBTENER_ULTIMA_ETAPA_PLAN_EVALUACION_FINALIZADA(periodoAnual)\n                GROUP BY MPA.APORTE_ESTRATEGICO, MPE.ETAPA_PLAN\n                ORDER BY \n                MPA.APORTE_ESTRATEGICO\n    ) \n    LOOP\n    PIPE ROW (PROMEDIO_AVANCE_APORTE_TYPE(rec.APORTE_ESTRATEGICO,rec.PROMEDIO, rec.ETAPA_PLAN));\n   END LOOP;\n\n    DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL;\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\nGRANT EXECUTE ON  PPI.OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL(:periodoAnual));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_EJECUCION_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_EJECUCION_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.EJECUCION_TABLE_TYPE;\nDROP TYPE PPI.EJECUCION_TYPE;\nDROP FUNCTION PPI.OBTENER_EJECUCION_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.EJECUCION_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO          NUMBER,\n    PROGRAMACION                NUMBER,\n    PROMEDIO                    NUMBER,\n    ETAPA_PLAN                  NUMBER,\n    EJECUCION                   NUMBER\n);\n\nGRANT EXECUTE ON PPI.EJECUCION_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.EJECUCION_TABLE_TYPE AS TABLE OF EJECUCION_TYPE;\n\nGRANT EXECUTE ON PPI.EJECUCION_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_EJECUCION_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN EJECUCION_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR rec IN (\n            SELECT \n                PROGRAMACION.APORTE_ESTRATEGICO                                 APORTE_ESTRATEGICO,\n                PROGRAMACION.PROGRAMACION                                       PROGRAMACION,\n                PROMEDIO.PROMEDIO                                               PROMEDIO,\n                PROMEDIO.ETAPA_PLAN                                             ETAPA_PLAN,\n                ((PROGRAMACION.PROGRAMACION*PROMEDIO.PROMEDIO)\/100)             EJECUCION\n            FROM TABLE(PPI.OBTENER_PROGRAMACION_X_PERIODO_ANUAL(periodoAnual)) PROGRAMACION\n            \n            INNER JOIN (\n                SELECT * FROM TABLE(PPI.OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL(periodoAnual))\n            ) PROMEDIO ON PROGRAMACION.APORTE_ESTRATEGICO = PROMEDIO.APORTE_ESTRATEGICO\n            WHERE \n            PROMEDIO.ETAPA_PLAN = PPI.OBTENER_ULTIMA_ETAPA_PLAN_EVALUACION_FINALIZADA(periodoAnual)\n            ORDER BY \n            PROGRAMACION.APORTE_ESTRATEGICO\n    ) \n    LOOP\n    PIPE ROW (EJECUCION_TYPE(rec.APORTE_ESTRATEGICO,rec.PROGRAMACION, rec.PROMEDIO,rec.ETAPA_PLAN,rec.EJECUCION));\n   END LOOP;\n\n    DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND OBTENER_EJECUCION_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.OBTENER_EJECUCION_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_EJECUCION_X_PERIODO_ANUAL(:periodoAnual));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_ACUMULADO_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_ACUMULADO_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.ACUMULADO_TABLE_TYPE;\nDROP TYPE PPI.ACUMULADO_TYPE;\nDROP FUNCTION PPI.OBTENER_ACUMULADO_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_TYPE AS OBJECT (\n    APORTE_ESTRATEGICO          NUMBER,\n    ACUMULADO                   NUMBER\n);\n\nGRANT EXECUTE ON PPI.ACUMULADO_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato ACUMULADO_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_TABLE_TYPE AS TABLE OF ACUMULADO_TYPE;\n\nGRANT EXECUTE ON PPI.ACUMULADO_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION PPI.OBTENER_ACUMULADO_X_PERIODO_ANUAL(\n    --periodoAnual: parametro de ingreso\n    periodoAnual IN NUMBER\n)\n--RETURN: tabla virtual de tipo APD_TABLE_TYPE\nRETURN ACUMULADO_TABLE_TYPE PIPELINED AS\n\n    --***************************************************************\n    --VARIABLES\n    --***************************************************************\n    -- Almacena los a\u00f1os en un arreglo\n    v_periodos  PERIODO_ANUAL_TABLE_TYPE := PERIODO_ANUAL_TABLE_TYPE();\n\n    -- Variable para almacenar el a\u00f1o actual\n    v_periodo PERIODO_ANUAL_TYPE;\n\n\n\n    -- Variable para construir la consulta PIVOT\n    v_sql CLOB;\n\n    -- Variable para almacenar el resultado de la consulta PIVOT\n    v_result SYS_REFCURSOR;\n\n     -- Variables para almacenar los valores din\u00e1micos de las columnas del PIVOT\n    v_aporte        NUMBER;\n    v_acumulado     NUMBER;\n\n\nBEGIN\n    --***************************************************************\n    --OBTENCI\u00d3N DE DATOS\n    --***************************************************************\n    -- Ejecutar consulta del ID_PERIODO_ANUAL y  ANO para almacenarlos en arreglos para crear el PIVOT \n    FOR rec IN (SELECT PERIODO_ANUAL FROM TABLE(PPI.OBTENER_PERIODO_ANUAL_DISTRIBUCION_X_PERIODO_ANUAL(periodoAnual)) ORDER BY PERIODO_ANUAL)\n    LOOP\n\n        -- Utilizar el constructor del tipo ANO_TYPE\n        v_periodo := PERIODO_ANUAL_TYPE(rec.PERIODO_ANUAL);\n\n       -- A\u00f1adir los resultados al arreglo de a\u00f1os\n        v_periodos.EXTEND;\n        v_periodos(v_periodos.LAST) := v_periodo;\n\n\n\n    END LOOP;\n\n\n    --**************************************************************\n    --CONSULTA DIN\u00c1MICA\n    --**************************************************************\n    v_sql := 'SELECT ';\n    \n    --FOR i IN 1..v_periodos.LAST LOOP\n     --   v_sql := v_sql || 'NVL(EJECUCION_'|| v_periodos(i).PERIODO_ANUAL || '.EJECUCION,0) EJECUCION_' || v_periodos(i).PERIODO_ANUAL || ',';   \n    --END LOOP;\n    v_sql := v_sql || 'EJECUCION_' || v_periodos(1).PERIODO_ANUAL || '.APORTE_ESTRATEGICO,';\n   \n    v_sql := v_sql || '(';\n    FOR i IN 1..v_periodos.LAST LOOP\n        v_sql := v_sql || 'NVL(EJECUCION_'|| v_periodos(i).PERIODO_ANUAL || '.EJECUCION,0) ';\n        IF i &lt; v_periodos.LAST THEN\n            v_sql := v_sql || ' + ';\n        END IF;\n    END LOOP;\n    v_sql := v_sql || ') AS ACUMULADO ';\n    v_sql := v_sql || 'FROM TABLE(PPI.OBTENER_EJECUCION_X_PERIODO_ANUAL(' || v_periodos(1).PERIODO_ANUAL || ')) EJECUCION_' || v_periodos(1).PERIODO_ANUAL || ' ';\n    \n    FOR i IN 2..v_periodos.LAST LOOP\n        v_sql := v_sql || 'LEFT JOIN ';  \n        v_sql := v_sql || '( ';  \n        v_sql := v_sql || 'SELECT '; \n        v_sql := v_sql || 'APORTE_ESTRATEGICO, '; \n        v_sql := v_sql || 'EJECUCION '; \n        v_sql := v_sql || 'FROM TABLE(PPI.OBTENER_EJECUCION_X_PERIODO_ANUAL(' || v_periodos(i).PERIODO_ANUAL || '))'; \n        v_sql := v_sql || ') EJECUCION_' ||  v_periodos(i).PERIODO_ANUAL || ' ON EJECUCION_' || v_periodos(1).PERIODO_ANUAL || '.APORTE_ESTRATEGICO = EJECUCION_' || v_periodos(i).PERIODO_ANUAL || '.APORTE_ESTRATEGICO '; \n        v_sql := v_sql || ' '; \n    END LOOP;\n    \n\n  \n\n    v_sql := v_sql || 'ORDER BY EJECUCION_'||v_periodos(1).PERIODO_ANUAL ||'.APORTE_ESTRATEGICO';\n\n\n    -- Ejecutar la consulta PIVOT\n    OPEN v_result FOR v_sql;\n\n    --**************************************************************\n    --RECUPERAR Y FORMATEAAR LOS DATOS\n    --**************************************************************\n    LOOP\n       FETCH v_result INTO v_aporte,v_acumulado;\n       EXIT WHEN v_result%NOTFOUND;\n\n       PIPE ROW(ACUMULADO_TYPE(v_aporte,v_acumulado));\n    END LOOP;\n\n    CLOSE v_result;\n\n    RETURN;\n\nEND OBTENER_ACUMULADO_X_PERIODO_ANUAL;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.OBTENER_ACUMULADO_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_X_PERIODO_ANUAL(:periodoAnual));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.ACUMULADO_ACCION_TABLE_TYPE;\nDROP TYPE PPI.ACUMULADO_ACCION_TYPE;\nDROP FUNCTION PPI.OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_ACCION_TYPE AS OBJECT (\n    ACCION_ESTRATEGICA          NUMBER,\n    ACUMULADO_ACCION            NUMBER\n);\n\nGRANT EXECUTE ON PPI.ACUMULADO_ACCION_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_ACCION_TABLE_TYPE AS TABLE OF ACUMULADO_ACCION_TYPE;\n\nGRANT EXECUTE ON PPI.ACUMULADO_ACCION_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN ACUMULADO_ACCION_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR rec IN (\n            SELECT \n              ACE.ID_ACCION_ESTRATEGICA,\n              SUM(ACUMULADO.ACUMULADO) AS ACUMULADO_X_ACCION\n            FROM \n              ACCION_ESTRATEGICA ACE\n            INNER JOIN \n              APORTE_ESTRATEGICO APE ON (APE.ACCION_ESTRATEGICA = ACE.ID_ACCION_ESTRATEGICA)\n            -- ACUMULADO\n            INNER JOIN (\n                SELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_X_PERIODO_ANUAL(periodoAnual))\n            ) ACUMULADO ON APE.ID_APORTE_ESTRATEGICO = ACUMULADO.APORTE_ESTRATEGICO\n            GROUP BY \n              ACE.ID_ACCION_ESTRATEGICA\n            ORDER BY \n              ACE.ID_ACCION_ESTRATEGICA\n    ) \n    LOOP\n    PIPE ROW (ACUMULADO_ACCION_TYPE(rec.ID_ACCION_ESTRATEGICA,rec.ACUMULADO_X_ACCION));\n   END LOOP;\n\n    DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL(:periodoAnual));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.ACUMULADO_METAPMP_TABLE_TYPE;\nDROP TYPE PPI.ACUMULADO_METAPMP_TYPE;\nDROP FUNCTION PPI.OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_METAPMP_TYPE AS OBJECT (\n    META_PMP                    NUMBER,\n    ACUMULADO_METAPMP           NUMBER\n);\n\nGRANT EXECUTE ON PPI.ACUMULADO_METAPMP_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_METAPMP_TABLE_TYPE AS TABLE OF ACUMULADO_METAPMP_TYPE;\n\nGRANT EXECUTE ON PPI.ACUMULADO_METAPMP_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN ACUMULADO_METAPMP_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR rec IN (\n            SELECT \n              MPMP.ID_META_PMP,\n              NVL(AVG(ACUMULADO_ACCION.ACUMULADO_ACCION),0) AS ACUMULADO_X_META\n            FROM \n            META_PMP MPMP\n            INNER JOIN ACCION_ESTRATEGICA ACE ON (ACE.META_PMP = MPMP.ID_META_PMP)\n            --ACUMULADO ACCION\n            INNER JOIN (\n                SELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL(periodoAnual))\n            ) ACUMULADO_ACCION ON ACE.ID_ACCION_ESTRATEGICA = ACUMULADO_ACCION.ACCION_ESTRATEGICA\n            \n            GROUP BY \n              MPMP.ID_META_PMP\n            ORDER BY\n            MPMP.ID_META_PMP\n    ) \n    LOOP\n    PIPE ROW (ACUMULADO_METAPMP_TYPE(rec.ID_META_PMP,rec.ACUMULADO_X_META));\n   END LOOP;\n\n    DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL(:periodoAnual));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">FUNCI\u00d3N: OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>--*******************************************************************************\n--*******************************************************************************\n-- FUNCI\u00d3N: OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL\n--*******************************************************************************\n--*******************************************************************************\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n-- PASO 0: ELIMINACI\u00d3N DE DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nDROP TYPE PPI.ACUMULADO_PRIORIDAD_TABLE_TYPE;\nDROP TYPE PPI.ACUMULADO_PRIORIDAD_TYPE;\nDROP FUNCTION PPI.OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 01: Crear TIPO de tipo de dato APD_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_PRIORIDAD_TYPE AS OBJECT (\n    PRIORIDAD_ESTRATEGICA_PMP                    NUMBER,\n    ACUMULADO_PRIORIDAD                          NUMBER\n);\n\nGRANT EXECUTE ON PPI.ACUMULADO_PRIORIDAD_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 02: Crear TABLA de tipo de dato PROGRAMACION_TYPE\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE TYPE PPI.ACUMULADO_PRIORIDAD_TABLE_TYPE AS TABLE OF ACUMULADO_PRIORIDAD_TYPE;\n\nGRANT EXECUTE ON PPI.ACUMULADO_PRIORIDAD_TABLE_TYPE TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 03: Crear FUNCI\u00d3N\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nCREATE OR REPLACE FUNCTION  PPI.OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL(\n    periodoAnual IN NUMBER\n)\nRETURN ACUMULADO_PRIORIDAD_TABLE_TYPE PIPELINED AS\n\nBEGIN\n\n    FOR rec IN (\n            SELECT \n                PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP,\n                NVL(AVG(ACUMULADO_METAPMP.ACUMULADO_METAPMP),0) AS ACUMULADO_PRIORIDAD\n            FROM \n            PRIORIDAD_ESTRATEGICA_PMP PEPMP\n            INNER JOIN DETALLE_PMP DPMP ON (DPMP.PRIORIDAD_ESTRATEGICA_PMP = PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP)\n            INNER JOIN META_PMP MPMP ON (MPMP.DETALLE_PMP = DPMP.ID_DETALLE_PMP)\n            \n            --ACUMULADO METAPMP\n            INNER JOIN (\n                SELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL(periodoAnual))\n            ) ACUMULADO_METAPMP ON MPMP.ID_META_PMP = ACUMULADO_METAPMP.META_PMP\n            GROUP BY \n              PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP\n            ORDER BY\n            PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP\n    ) \n    LOOP\n    PIPE ROW (ACUMULADO_PRIORIDAD_TYPE(rec.ID_PRIORIDAD_ESTRATEGICA_PMP,rec.ACUMULADO_PRIORIDAD));\n   END LOOP;\n\n    DBMS_OUTPUT.PUT_LINE('DEBUG: periodoAnual: ' || periodoAnual);\n    \n    RETURN;\n\nEND OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL;\n\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 04: GRANTS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n--***********************************************\n-- GRANT'S\n--***********************************************\nGRANT EXECUTE ON  PPI.OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL TO WWW_SIGESA,ANALISTA, ANALISTA_SIGESA;\n\n\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\n--PASO 05: CONSULTAR DATOS\n--+++++++++++++++++++++++++++++++++++++++++++++++++++++\nSELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL(:periodoAnual));<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">CONSULTA DE LA VISTA<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora que tenemos las funciones creadas vamos a crear la consulta<\/li>\n\n\n\n<li>O descargar el archivo:  <a href=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/11\/consulta_v1.0.10_CONSULTA_FINAL.zip\" target=\"_blank\" rel=\"noreferrer noopener\">aqu\u00ed<\/a><\/li>\n\n\n\n<li><strong>NOTA IMPORTANTE: las vista no llevan par\u00e1metros obtienen todos los datos a nivel de c\u00f3digo se filtran<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>--************************************************************\n-- FUNCION: Obtener los datos de la vista solicitada\n-- VERSION: 1.0.10\n--************************************************************\nSELECT\n    DISTINCT\n    EJE_PLP.CODIGO                              EJE_PLP_CODIGO,\n    EJE_PLP.DESCRIPCION                         EJE_PLP_DESCRIPCION,\n    OBJ_PLP.CODIGO                              OBJ_PLP_CODIGO,\n    OBJ_PLP.DESCRIPCION                         OBJ_PLP_DESCRIPCION,\n    EJE_TRA.CODIGO                              EJE_TRA_CODIGO,\n    EJE_TRA.DESCRIPCION                         EJE_TRA_DESCRIPCION,\n    PRI_PMP.CODIGO                              PRI_PMP_CODIGO,\n    PRI_PMP.DESCRIPCION                         PRI_PMP_DESCRIPCION,\n    ACUMULADO_PRIORIDAD.ACUMULADO_PRIORIDAD     ACUMULADO_PRIORIDAD,\n    OBJ_PMP.CODIGO                              OBJ_PMP_CODIGO,\n    OBJ_PMP.DESCRIPCION                         OBJ_PMP_DESCRIPCION,\n    MPMP.CODIGO                                 MPMP_CODIGO,\n    MPMP.DESCRIPCION                            MPMP_DESCRIPCION, \n    ACUMULADO_METAPMP.ACUMULADO_METAPMP         ACUMULADO_METAPMP,\n    AAU.NOMBRE                                  AMBITO_ACCION_UNIVERITARIA,\n    UE_EM.NOMBRE                                ENCARGADO_MONITOERO,\n    EPES.CODIGO                                 EPES_CODIGO,\n    EPES.NOMBRE                                 EPES_NOMBRE,\n    TEPES.NOMBRE                                TEPES_NOMBRE,\n    OPDS.CODIGO                                 OPDS_CODIGO,\n    OPDS.NOMBRE                                 OPDS_NOMBRE,\n    UE_PACE.NOMBRE                              UE_PACE_NOMBRE,\n    ACE.CODIGO                                  ACE_CODIGO,\n    ACE.DESCRIPCION                             ACE_DESCRIPCION,\n    ACUMULADO_ACCION.ACUMULADO_ACCION           ACUMULADO_ACCION,    \n    UE_PAPE.NOMBRE                              UE_PAPE_NOMBRE,\n    APE.CODIGO                                  APE_CODIGO,\n    APE.DESCRIPCION                             APE_DESCRIPCION,\n    APE.CUANTIFICACION                          CUANTIFICACION,\n    APE.LINEA_BASE                              LINEA_BASE,\n    FR.NOMBRE                                   FUENTE_RECURSO,\n    APE.JORNADA                                 JORNADA,\n    APD.ANNO_1                                  DISTRIBUCION_1,\n    APD.ANNO_2                                  DISTRIBUCION_2,\n    APD.ANNO_3                                  DISTRIBUCION_3,\n    APD.ANNO_4                                  DISTRIBUCION_4,\n    APD.ANNO_5                                  DISTRIBUCION_5,\n    PROGRAMACION.CANTIDAD_APORTES               CANTIDAD_APORTES,\n    PROGRAMACION.REPRESENTATIVIDAD              REPRESENTATIVIDAD,\n    PROGRAMACION.PROGRAMACION                   PROGRAMACION,\n    PROMEDIO.PROMEDIO                           PROMEDIO,\n    EJECUCION.EJECUCION                         EJECUCION,\n    ACUMULADO.ACUMULADO                         ACUMULADO_APORTE\nFROM \nMETA_POA_EVALUACION                         MPE\nINNER JOIN META_POA                         MP          ON (MP.ID_META_POA                          =   MPE.META_POA)\nINNER JOIN OBJETIVO_POA                     OP          ON (OP.ID_OBJETIVO_POA                      =   MP.OBJETIVO_POA)\nINNER JOIN PLAN_OPERATIVO                   PO          ON (PO.ID_PLAN_OPERATIVO                    =   OP.PLAN_OPERATIVO)\nINNER JOIN UNIDAD_EJECUTORA                 UE_PO       ON (UE_PO.ID_UNIDAD_EJECUTORA               =   PO.UNIDAD_EJECUTORA)\nINNER JOIN EVALUACION_OPERATIVA             EO          ON (EO.PLAN_OPERATIVO                       =   PO.ID_PLAN_OPERATIVO)\nINNER JOIN META_POA_APORTE                  MPA         ON (MPA.META_POA                            =   MP.ID_META_POA)\nINNER JOIN APORTE_ESTRATEGICO               APE         ON (APE.ID_APORTE_ESTRATEGICO               =   MPA.APORTE_ESTRATEGICO)\nINNER JOIN PLAN_APORTE_ESTRATEGICO          PAPE        ON (PAPE.ID_PLAN_APORTE_ESTRATEGICO         =   APE.PLAN_APORTE_ESTRATEGICO)\nINNER JOIN UNIDAD_EJECUTORA                 UE_PAPE     ON (UE_PAPE.ID_UNIDAD_EJECUTORA             =   PAPE.UNIDAD_EJECUTORA)\nLEFT JOIN  APORTE_PAE_FUENTE_RECURSO        APAEFR      ON (APAEFR.APORTE_ESTRATEGICO               =   APE.ID_APORTE_ESTRATEGICO) --FALTAN\nLEFT JOIN  FUENTE_RECURSO                   FR          ON (FR.ID_FUENTE_RECURSO                    =   APAEFR.FUENTE_RECURSO) --FALTAN\nINNER JOIN ACCION_ESTRATEGICA               ACE         ON (ACE.ID_ACCION_ESTRATEGICA               =   APE.ACCION_ESTRATEGICA)\nINNER JOIN PLAN_ACCION_ESTRATEGICA          PACE        ON (PACE.ID_PLAN_ACCION_ESTRATEGICA         =   ACE.PLAN_ACCION_ESTRATEGICA)\nINNER JOIN UNIDAD_EJECUTORA                 UE_PACE     ON (UE_PACE.ID_UNIDAD_EJECUTORA             =   PACE.UNIDAD_EJECUTORA)\nINNER JOIN META_PMP                         MPMP        ON (MPMP.ID_META_PMP                        =   ACE.META_PMP)\nINNER JOIN AMBITO_ACCION_UNIVERSITARIA      AAU         ON (AAU.ID_AMBITO_ACCION_UNIVERSITARIA      =   MPMP.AMBITO_ACCION_UNIVERSITARIA)\nINNER JOIN ENCARGADO_MONITOREO              EM          ON (EM.ID_ENCARGADO_MONITOREO               =   MPMP.ENCARGADO_MONITOREO)\nINNER JOIN UNIDAD_EJECUTORA                 UE_EM       ON (UE_EM.ID_UNIDAD_EJECUTORA               =   EM.UNIDAD_EJECUTORA)\nLEFT  JOIN META_PMP_EJE_PES                 MPEP        ON (MPEP.META_PMP                           =   MPMP.ID_META_PMP) --VACIA\nLEFT  JOIN EJE_PES                          EPES        ON (EPES.ID_EJE_PES                         =   MPEP.EJE_PES)\nLEFT  JOIN TIPO_EJE_PES                     TEPES       ON (TEPES.ID_TIPO_EJE_PES                   =   EPES.TIPO_EJE_PES)\nLEFT  JOIN META_PMP_OBJETIVO_PDS            MPOPDS      ON (MPOPDS.META_PMP                         =   MPMP.ID_META_PMP) --VACIA\nLEFT  JOIN OBJETIVO_PDS                     OPDS        ON (OPDS.ID_OBJETIVO_PDS                    =   MPOPDS.OBJETIVO_PDS)\nINNER JOIN DETALLE_PMP                      DET_PMP     ON (DET_PMP.ID_DETALLE_PMP                  =   MPMP.DETALLE_PMP)\nINNER JOIN PRIORIDAD_ESTRATEGICA_PMP        PRI_PMP     ON (PRI_PMP.ID_PRIORIDAD_ESTRATEGICA_PMP    =   DET_PMP.PRIORIDAD_ESTRATEGICA_PMP)\nINNER JOIN OBJETIVO_ESTRATEGICO_PMP         OBJ_PMP     ON (OBJ_PMP.ID_OBJETIVO_ESTRATEGICO_PMP     =   DET_PMP.OBJETIVO_ESTRATEGICO_PMP)\nINNER JOIN EJE_ESTRATEGICO_PLP              EJE_PLP     ON (EJE_PLP.ID_EJE_ESTRATEGICO_PLP          =   DET_PMP.EJE_ESTRATEGICO_LARGO_PLAZO)\nINNER JOIN DETALLE_PLP                      DET_PLP     ON (DET_PLP.EJE_ESTRATEGICO_PLP             =   EJE_PLP.ID_EJE_ESTRATEGICO_PLP)   \nINNER JOIN OBJETIVO_ESTRATEGICO_PLP         OBJ_PLP     ON (OBJ_PLP.ID_OBJETIVO_ESTRATEGICO_PLP     =   DET_PLP.OBJETIVO_ESTRATEGICO_PLP)\nINNER JOIN DETALLE_PLP_EJE_TRANSVERSAL      DET_EJE_TRA ON (DET_EJE_TRA.DETALLE_PLP                 =   DET_PLP.ID_DETALLE_PLP)\nLEFT  JOIN EJE_TRANSVERSAL_PLP              EJE_TRA     ON (EJE_TRA.ID_EJE_TRANSVERSAL_PLP          =   DET_EJE_TRA.EJE_TRANSVERSAL_PLP) --VACIA\nINNER JOIN PLAN_LARGO_PLAZO                 PLP         ON (PLP.ID_PLAN_LARGO_PLAZO                 =   DET_PLP.PLAN_LARGO_PLAZO)\n\n--METAS FUNCIONALES\nINNER JOIN (SELECT *\n        FROM TABLE(PPI.OBTENER_METAS_OPE_FUNCIONALES_X_PERIODO_ANUAL(:periodoAnual))\n) METAS_FUNCIONALES on MPE.META_POA = METAS_FUNCIONALES.META_POA\n\n-- DISTRIBUCION PORCENTUAL\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_APD_X_PERIODO_ANUAL(:periodoAnual))\n) APD ON APE.ID_APORTE_ESTRATEGICO = APD.APORTE_ESTRATEGICO\n\n-- PROGRAMACION\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_PROGRAMACION_X_PERIODO_ANUAL(:periodoAnual))\n) PROGRAMACION ON APE.ID_APORTE_ESTRATEGICO = PROGRAMACION.APORTE_ESTRATEGICO\n\n--***************************************\n-- A PARTIR DE SE REQUIERE LA ETAPA_PLAN \n--***************************************\n\n-- PROMEDIO\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_PROMEDIO_AVANCE_APORTE_X_PERIODO_ANUAL(:periodoAnual))\n) PROMEDIO ON APE.ID_APORTE_ESTRATEGICO = PROMEDIO.APORTE_ESTRATEGICO AND MPE.ETAPA_PLAN = PROMEDIO.ETAPA_PLAN\n\n--EJECUCION\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_EJECUCION_X_PERIODO_ANUAL(:periodoAnual))\n) EJECUCION ON APE.ID_APORTE_ESTRATEGICO = EJECUCION.APORTE_ESTRATEGICO AND MPE.ETAPA_PLAN = EJECUCION.ETAPA_PLAN\n\n--ACUMULADO APORTE\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_X_PERIODO_ANUAL(:periodoAnual))\n) ACUMULADO ON APE.ID_APORTE_ESTRATEGICO = ACUMULADO.APORTE_ESTRATEGICO\n\n--ACUMULADO ACCION\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_ACCION_X_PERIODO_ANUAL(:periodoAnual))\n) ACUMULADO_ACCION ON ACE.ID_ACCION_ESTRATEGICA = ACUMULADO_ACCION.ACCION_ESTRATEGICA\n\n\n--ACUMULADO METAPMP\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_METAPMP_X_PERIODO_ANUAL(:periodoAnual))\n) ACUMULADO_METAPMP ON MPMP.ID_META_PMP = ACUMULADO_METAPMP.META_PMP\n\n--ACUMULADO PRIORIDAD\nINNER JOIN (\n    SELECT * FROM TABLE(PPI.OBTENER_ACUMULADO_PRIORIDAD_X_PERIODO_ANUAL(:periodoAnual))\n) ACUMULADO_PRIORIDAD ON ID_PRIORIDAD_ESTRATEGICA_PMP = ACUMULADO_PRIORIDAD.PRIORIDAD_ESTRATEGICA_PMP\n\nWHERE \nPO.PERIODO_ANUAL = :periodoAnual\nAND MPE.ETAPA_PLAN = EO.ETAPA_PLAN\nORDER BY \nEJE_PLP.CODIGO,\nOBJ_PLP.CODIGO,\nEJE_TRA.CODIGO,\nPRI_PMP.CODIGO,\nOBJ_PMP.CODIGO,\nMPMP.CODIGO,\nAAU.NOMBRE,\nUE_EM.NOMBRE,\nEPES.CODIGO,\nOPDS.CODIGO,\nUE_PACE.NOMBRE,\nACE.CODIGO,\nUE_PAPE.NOMBRE,\nAPE.CODIGO\n;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>PARTE1: FUNCIONES DE BD FUNCION: PPE_OBTENER_METAS_OPE_FUNCIONALES FUNCI\u00d3N: PPE_OBTENER_PERIODOS_ANUALES_DISTRIBUCION FUNCION: PPE_OBTENER_APD_X_APORTE FUNCION: PPE_OBTENER_PROMEDIOS_X_APORTE FUNCION: PPE_OBTENER_ACUMULADO_X_APORTE FUNCION: PPE_OBTENER_ACUMULADO_X_ACCION FUNCION: PPE_OBTENER_ACUMULADO_X_METAPMP FUNCION: PPE_OBTENER_ACUMULADO_X_PRIORIDAD FUNCION: PPE_OBTENER_AVANCE_PLP Parte II: Creaci\u00f3n de Vista NOTA IMPORTANTE: las vista no llevan par\u00e1metros obtienen todos los datos a nivel de c\u00f3digo se filtran Notas: VistaAvancePLPCreate.sql VistaAvancePLPI18n.sql DOMAIN JPA: VistaAvancePLP.java A PARTIR DE AQU\u00cd SON [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[443],"tags":[594],"class_list":["post-16176","post","type-post","status-publish","format-standard","hentry","category-sigesa","tag-vista-ppe"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16176"}],"version-history":[{"count":12,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16176\/revisions"}],"predecessor-version":[{"id":16202,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16176\/revisions\/16202"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}