{"id":15759,"date":"2023-09-27T14:04:03","date_gmt":"2023-09-27T20:04:03","guid":{"rendered":"https:\/\/sada.services\/?p=15759"},"modified":"2023-09-29T15:01:16","modified_gmt":"2023-09-29T21:01:16","slug":"crear-vista-con-filtro","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=15759","title":{"rendered":"SIGESA Crear vista: con filtro"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>Vamos a crear la siguiente consulta<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Descripci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se requiere crear una consulta que muestre la distribuci\u00f3n presupuestaria distribuida por el presupuesto institucional de las metas POAI.<\/li>\n\n\n\n<li>Debe mostrar los siguientes campos:\n<ul class=\"wp-block-list\">\n<li>C\u00f3digo programa presupuestario<\/li>\n\n\n\n<li>Nombre Programa Presupuestario<\/li>\n\n\n\n<li>C\u00f3digo de Objetivo POAI\n<ul class=\"wp-block-list\">\n<li>Compuesto por la siguiente concatenaci\u00f3n:\n<ul class=\"wp-block-list\">\n<li>C\u00f3digo del programa presupuestario.<\/li>\n\n\n\n<li>Para los c\u00f3digos de objetivo y meta POAI debe usarse obligatoriamente 2 d\u00edgitos, rellenando con un cero a la izquierda los casos que s\u00f3lo cuenten con un d\u00edgito.<\/li>\n\n\n\n<li>Ejemplos: ACAD01, VID_U01 y ADM01<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Descripci\u00f3n Objetivo POAI<\/li>\n\n\n\n<li>C\u00f3digo de Meta POAI\n<ul class=\"wp-block-list\">\n<li>Compuesto por la siguiente concatenaci\u00f3n:\n<ul class=\"wp-block-list\">\n<li>C\u00f3digo del programa presupuestario.\n<ul class=\"wp-block-list\">\n<li>C\u00f3digo de objetivo POAI<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>C\u00f3digo de meta POAI<\/li>\n\n\n\n<li>Para los c\u00f3digos de objetivo y meta POAI debe usarse obligatoriamente 2 d\u00edgitos, rellenando con un cero a la izquierda los casos que s\u00f3lo cuenten con un d\u00edgito.<\/li>\n\n\n\n<li>Ejemplos: ACAD0101, VID_U0101 y ADM0101<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Descripci\u00f3n Meta POAI<\/li>\n\n\n\n<li>C\u00f3digo de fondo<\/li>\n\n\n\n<li>Nombre de Fondo<\/li>\n\n\n\n<li>C\u00f3digo de Cuenta Presupuestaria<\/li>\n\n\n\n<li>Nombre de Cuenta Presupuestaria<\/li>\n\n\n\n<li>Tipo de Presupuesto<\/li>\n\n\n\n<li>Colones<\/li>\n\n\n\n<li>Millones de Colones<\/li>\n\n\n\n<li>Redondeo<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>La consulta debe indicar obligatoriamente la fecha y hora en que se gener\u00f3 y generarse en cualquier momento.<\/li>\n\n\n\n<li>El \u00fanico par\u00e1metro a utilizar es el Plan Operativo Anual Institucional.\n<ul class=\"wp-block-list\">\n<li>Debe poder seleccionarse por una lista o directamente por el c\u00f3digo<\/li>\n\n\n\n<li>Usa el o los escenarios del POAI seleccionado para filtrar la informaci\u00f3n.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Debe aparecer debajo del par\u00e1metro las <strong>sumatorias <\/strong>de los presupuestos en los espacios:\n<ul class=\"wp-block-list\">\n<li>Total en Colones<\/li>\n\n\n\n<li>Total en Millones de Colones<\/li>\n\n\n\n<li>Total Redondeado<\/li>\n\n\n\n<li><img decoding=\"async\" alt=\"\" src=\"blob:https:\/\/universidadnacional.atlassian.net\/0a1013ee-e6a9-4bda-b20b-d79ba3819b52#media-blob-url=true&amp;id=f3eab012-fb99-4a27-ba86-b8c7378d334f&amp;collection=&amp;contextId=56920&amp;mimeType=image%2Fpng&amp;name=imagen-20230928-211002.png&amp;size=33694&amp;height=181&amp;width=1490&amp;alt=\"><\/li>\n\n\n\n<li>Los montos deben estar justificados a la derecha con el siguiente formato \u20a155 408,89 a excepci\u00f3n de los redondeados que no llevan decimales<\/li>\n\n\n\n<li>Debe ser una tabla que permita seleccionar sus datos<\/li>\n\n\n\n<li>Debe tener en negrita los T\u00edtulos de las columnas y las filas<\/li>\n\n\n\n<li>Los montos no deben estar en negrita<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Toda la consulta debe poder descargarse en excel.<\/li>\n\n\n\n<li>Ver prototipo:<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se requiere crear una consulta que muestre todos los programas presupuestarios con su respectiva asignaci\u00f3n de objetivos y metas POAI y distribuci\u00f3n presupuestaria indicada en el prototipo.<\/li>\n\n\n\n<li>Que tenga todos los campos que aparecen en el prototipo.<\/li>\n\n\n\n<li>Debe mostrar el presupuesto formulado tanto en colones como en miles de colones (los miles de colones corresponde a los colones \/ 1000).<\/li>\n\n\n\n<li>Debe mostrar una sumatoria de presupuesto formulado total general.<\/li>\n\n\n\n<li>Se puede generar la consulta en cualquier momento.<\/li>\n\n\n\n<li>La consulta debe indicar obligatoriamente la fecha y hora en que se gener\u00f3.<\/li>\n\n\n\n<li>El \u00fanico par\u00e1metro a utilizar es el Plan Operativo Anual Institucional.<\/li>\n\n\n\n<li>Toda la consulta debe poder descargarse en excel como muestra el prototipo.<\/li>\n\n\n\n<li>Ver prototipo:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"349\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/a6408304-44c7-4d60-ba53-70407067702f-1024x349.png\" alt=\"\" class=\"wp-image-15760\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/a6408304-44c7-4d60-ba53-70407067702f-1024x349.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/a6408304-44c7-4d60-ba53-70407067702f-300x102.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/a6408304-44c7-4d60-ba53-70407067702f-768x262.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/a6408304-44c7-4d60-ba53-70407067702f-1536x524.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/a6408304-44c7-4d60-ba53-70407067702f.png 1680w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos la consulta SQL<\/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>SELECT \nROWNUM                              AS ID,\nPOAI.ID_PLAN_OPERATIVO_ANUAL_INST   AS PLAN_OPERATIVO_ANUAL_INST,\nPP.CODIGO                           AS CODIGO_PROGRAMA_PRESUPUESTARIO,\nPP.NOMBRE                           AS NOMBRE_PROGRAMA_PRESUPUESTARIO,\nCONCAT(PP.CODIGO,CASE WHEN OP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(OP.CODIGO),2,'0') ELSE TO_CHAR(OP.CODIGO) END) AS CODIGO_OBJETIVO_POAI,\nOP.DESCRIPCION                      AS DESCRIPCION_OBJETIVO_POAI,\n\nCONCAT(\n        CONCAT(\n            PP.CODIGO,\n            CASE WHEN OP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(OP.CODIGO),2,'0') ELSE TO_CHAR(OP.CODIGO) END),\n        CASE WHEN MP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(MP.CODIGO),2,'0') ELSE TO_CHAR(MP.CODIGO) END) CODIGO_META_POAI,\nMP.DESCRIPCION                      AS DESCRIPCION_META_POAI,\nF.CODIGO                            AS CODIGO_FONDO,\nF.NOMBRE                            AS NOMBRE_FONDO,\nCP.CODIGO                           AS CODIGO_CUENTA_PRESUPUESTARIA,\nCP.NOMBRE                           AS NOMBRE_CUENTA_PRESUPUESTARIA,\nTP.NOMBRE                           AS TIPO_PRESUPUESTO,\nMPP.MONTO                           AS COLONES,\nROUND((MPP.MONTO\/1000000),2)        AS MILLONES_COLONES,\nCEIL(MPP.MONTO)                     AS REDONDEO\n\nFROM        PPI.META_POAI                   MP\nINNER JOIN  PPI.OBJETIVO_POAI               OP      ON(OP.ID_OBJETIVO_POAI = MP.OBJETIVO_POAI)\nINNER JOIN  PPI.PLAN_OPERATIVO_ANUAL_INST   POAI    ON(POAI.ID_PLAN_OPERATIVO_ANUAL_INST = OP.PLAN_OPERATIVO_ANUAL_INST)\nINNER JOIN  EPF.PROGRAMA_PRESUPUESTARIO     PP      ON(PP.ID_PROGRAMA_PRESUPUESTARIO = OP.PROGRAMA_PRESUPUESTARIO)\nINNER JOIN  PPI.META_POAI_PRESUPUESTO       MPP     ON(MPP.META_POAI = MP.ID_META_POAI)\nINNER JOIN  EPF.FONDO                       F       ON(F.ID_FONDO = MPP.FONDO)\nINNER JOIN  EPF.CUENTA_PRESUPUESTARIA       CP      ON(CP.ID_CUENTA_PRESUPUESTARIA = MPP.CUENTA_PRESUPUESTARIA)\nINNER JOIN  EPF.TIPO_PRESUPUESTO            TP      ON(TP.ID_TIPO_PRESUPUESTO = CP.TIPO_PRESUPUESTO)\nORDER BY \nPP.CODIGO,\nPP.NOMBRE,\nOP.CODIGO,\nOP.DESCRIPCION,\nMP.CODIGO,\nMP.DESCRIPCION,\nF.CODIGO,\nF.NOMBRE,\nCP.CODIGO,\nCP.NOMBRE,\nTP.NOMBRE;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Notas: <\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Podemos observar que estamos agregando el numero de fila para que funcione como ID<\/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>Y ademas aunque en la vista no hay que mostrar el POAI lo estamos obteniendo ya que este es el campo que nos va a permitir filtrar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>POAI.ID_PLAN_OPERATIVO_ANUAL_INST   AS PLAN_OPERATIVO_ANUAL_INST,<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaCreate.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-PPO-&gt; service -&gt; src -&gt; main -&gt; resources -&gt; 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: 27\/09\/2023\n * @bug: PPI-432 \n * @funcion: Obtener los programas presupuestarios, objetivos, metas, fondos, cuentas presupuestarias y presupuestos seg\u00fan un Plan Operativo Anual Institucional\n *\/\n\n--MP:   PPI.META_POAI\n--OP:   PPI.OBJETIVO_POAI\n--POAI: PPI.PLAN_OPERATIVO_ANUAL_INST\n--PP:   EPF.PROGRAMA_PRESUPUESTARIO\n--MPP:  PPI.META_POAI_PRESUPUESTO\n--F:    EPF.FONDO\n--CP:   EPF.CUENTA_PRESUPUESTARIA\n--TP:   EPF.TIPO_PRESUPUESTO\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* ELIMINAR LA VISTA                                    *\/\n\/********************************************************\/\n\/********************************************************\/\nDROP PUBLIC SYNONYM VISTA_POAI_META_FONDO_CODIGO_PRESUP;\n\nDROP VIEW PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE LA VISTA                                 *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE OR REPLACE FORCE EDITIONABLE VIEW  PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP AS\n\nSELECT \nROWNUM                              AS ID,\nPOAI.ID_PLAN_OPERATIVO_ANUAL_INST   AS PLAN_OPERATIVO_ANUAL_INST,\nPP.CODIGO                           AS CODIGO_PROGRAMA_PRESUPUESTARIO,\nPP.NOMBRE                           AS NOMBRE_PROGRAMA_PRESUPUESTARIO,\nCONCAT(PP.CODIGO,CASE WHEN OP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(OP.CODIGO),2,'0') ELSE TO_CHAR(OP.CODIGO) END) AS CODIGO_OBJETIVO_POAI,\nOP.DESCRIPCION                      AS DESCRIPCION_OBJETIVO_POAI,\n\nCONCAT(\n        CONCAT(\n            PP.CODIGO,\n            CASE WHEN OP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(OP.CODIGO),2,'0') ELSE TO_CHAR(OP.CODIGO) END),\n        CASE WHEN MP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(MP.CODIGO),2,'0') ELSE TO_CHAR(MP.CODIGO) END) CODIGO_META_POAI,\nMP.DESCRIPCION                      AS DESCRIPCION_META_POAI,\nF.CODIGO                            AS CODIGO_FONDO,\nF.NOMBRE                            AS NOMBRE_FONDO,\nCP.CODIGO                           AS CODIGO_CUENTA_PRESUPUESTARIA,\nCP.NOMBRE                           AS NOMBRE_CUENTA_PRESUPUESTARIA,\nTP.NOMBRE                           AS TIPO_PRESUPUESTO,\nMPP.MONTO                           AS COLONES,\nROUND((MPP.MONTO\/1000000),2)        AS MILLONES_COLONES,\nCEIL(MPP.MONTO)                     AS REDONDEO\n\nFROM        PPI.META_POAI                   MP\nINNER JOIN  PPI.OBJETIVO_POAI               OP      ON(OP.ID_OBJETIVO_POAI = MP.OBJETIVO_POAI)\nINNER JOIN  PPI.PLAN_OPERATIVO_ANUAL_INST   POAI    ON(POAI.ID_PLAN_OPERATIVO_ANUAL_INST = OP.PLAN_OPERATIVO_ANUAL_INST)\nINNER JOIN  EPF.PROGRAMA_PRESUPUESTARIO     PP      ON(PP.ID_PROGRAMA_PRESUPUESTARIO = OP.PROGRAMA_PRESUPUESTARIO)\nINNER JOIN  PPI.META_POAI_PRESUPUESTO       MPP     ON(MPP.META_POAI = MP.ID_META_POAI)\nINNER JOIN  EPF.FONDO                       F       ON(F.ID_FONDO = MPP.FONDO)\nINNER JOIN  EPF.CUENTA_PRESUPUESTARIA       CP      ON(CP.ID_CUENTA_PRESUPUESTARIA = MPP.CUENTA_PRESUPUESTARIA)\nINNER JOIN  EPF.TIPO_PRESUPUESTO            TP      ON(TP.ID_TIPO_PRESUPUESTO = CP.TIPO_PRESUPUESTO)\nORDER BY \nPP.CODIGO,\nPP.NOMBRE,\nOP.CODIGO,\nOP.DESCRIPCION,\nMP.CODIGO,\nMP.DESCRIPCION,\nF.CODIGO,\nF.NOMBRE,\nCP.CODIGO,\nCP.NOMBRE,\nTP.NOMBRE;\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CREACI\u00d3N DE SINONIMO                                 *\/\n\/********************************************************\/\n\/********************************************************\/\nCREATE PUBLIC SYNONYM VISTA_POAI_META_FONDO_CODIGO_PRESUP FOR PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP;\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* GRANT'S                                              *\/\n\/********************************************************\/\n\/********************************************************\/\n--GRANT TAB EPF TO PPI\nGRANT SELECT, REFERENCES ON EPF.PROGRAMA_PRESUPUESTARIO     TO PPI WITH GRANT OPTION;\nGRANT SELECT, REFERENCES ON EPF.FONDO                       TO PPI WITH GRANT OPTION;\nGRANT SELECT, REFERENCES ON EPF.CUENTA_PRESUPUESTARIA       TO PPI WITH GRANT OPTION;\nGRANT SELECT, REFERENCES ON EPF.TIPO_PRESUPUESTO            TO PPI WITH GRANT OPTION;\n\n--GRANT WWW_SIGESA \/ ANALISTA \/ ANALISTA_SIGESA\nGRANT SELECT, REFERENCES ON  PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP TO WWW_SIGESA;\nGRANT SELECT, REFERENCES ON  PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP TO ANALISTA, ANALISTA_SIGESA;\n\n\n\n\n\/********************************************************\/\n\/********************************************************\/\n\/* CONSULTAR VISTA                                      *\/\n\/********************************************************\/\n\/********************************************************\/\nSELECT * FROM VISTA_POAI_META_FONDO_CODIGO_PRESUP;\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaI18n.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: 27\/09\/2023\n * @bug: PPI-432 \n * @funcion: Insertar internacionalizaci\u00f3n para VISTA_POAI_META_FONDO_CODIGO_PRESUP\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', 'VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioCodigo_header', 'Programa Presupuestario', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioNombre_header', 'Nombre Programa', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAICodigo_header', 'C\u00f3digo Objetivo', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAIDescripcion_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', 'VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAICodigo_header', 'C\u00f3digo Meta POAI', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAIDescripcion_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', 'VistaPOAIMetaFondoCuentaPresupuestaria_fondoCodigo_header', 'Fondo', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_fondoNombre_header', 'Nombre Fondo', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupCodigo_header', 'Cuenta Presupuestaria', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupNombre_header', 'Nombre Cuenta', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_tipoCuenta_header', 'Tipo de Cuenta', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoColones_header', 'Colones', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoMiles_header', 'Miles de Colones', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoRedondeo_header', 'Redondeo', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_list_form_title', 'Consulta Planes Operativos Institucionales', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_list_form_table_header', 'Consulta Planes Operativos Institucionales', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_list_form_table_title', 'Consulta Planes Operativos Institucionales', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_planOperativoAnualInstitucional_select_label', 'Seleccione un Plan Operativo Anual Institucional', 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', 'VistaPOAIMetaFondoCuentaPresupuestaria_planOperativoAnualInstitucional_LOV_title', 'Seleccione un Plan Operativo Anual Institucional', SQ_I18N.nextval);\n\n\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">DOMAIN JPA: VistaPOAIMetaFondoCuentaPresupuestaria.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<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\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.ppo.domain;\n\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.text.DecimalFormat;\nimport java.text.DecimalFormatSymbols;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.Id;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.ManyToOne;\nimport javax.persistence.Transient;\n\nimport org.hibernate.annotations.Subselect;\n\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**\n * Entity para la consulta de la vista {@link PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\u00b4\n * @since 27\/09\/2023\n * @version 1.0.0 \n *\/\n\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n@Entity\n@Subselect(\"SELECT * FROM VISTA_POAI_META_FONDO_CODIGO_PRESUP\")\n\n\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\npublic class VistaPOAIMetaFondoCuentaPresupuestaria implements Serializable {\n\n    @ManyToOne(fetch = FetchType.LAZY, optional = false)\n    @JoinColumn(name = \"PLAN_OPERATIVO_ANUAL_INST\",\n            referencedColumnName = \"ID_PLAN_OPERATIVO_ANUAL_INST\",\n            nullable = false,\n            insertable = false,\n            updatable = false)\n    private PlanOperativoAnualInstitucional planOperativoAnualInstitucional;\n\n    @Id\n    @Column(name = \"ID\")\n    private int id;\n\n    @Column(name = \"CODIGO_PROGRAMA_PRESUPUESTARIO\")\n    private String codigoProgramaPresupuestario;\n\n    @Column(name = \"NOMBRE_PROGRAMA_PRESUPUESTARIO\")\n    private String nombreProgramaPresupuestario;\n\n    @Column(name = \"CODIGO_OBJETIVO_POAI\")\n    private String codigoObjetivoPOAI;\n\n    @Column(name = \"DESCRIPCION_OBJETIVO_POAI\")\n    private String descripcionObjetivoPOAI;\n\n    @Column(name = \"CODIGO_META_POAI\")\n    private String codigoMetaPOAI;\n\n    @Column(name = \"DESCRIPCION_META_POAI\")\n    private String descripcionMetaPOAI;\n\n    @Column(name = \"CODIGO_FONDO\")\n    private String codigoFondo;\n\n    @Column(name = \"NOMBRE_FONDO\")\n    private String nombreFondo;\n\n    @Column(name = \"CODIGO_CUENTA_PRESUPUESTARIA\")\n    private String codigoCuentaPresupuestaria;\n\n    @Column(name = \"NOMBRE_CUENTA_PRESUPUESTARIA\")\n    private String nombreCuentaPresupuestaria;\n\n    @Column(name = \"TIPO_PRESUPUESTO\")\n    private String tipoPresupuesto;\n\n    @Column(name = \"COLONES\")\n    private BigDecimal colones;\n\n    @Column(name = \"MILLONES_COLONES\")\n    private BigDecimal millonesColones;\n\n    @Column(name = \"REDONDEO\")\n    private BigDecimal redondeo;\n\n    @Transient\n    private String colonesConEspacios;\n    \n    @Transient\n    private String millonesColonesConEspacios;\n\n    @Transient\n    private String redondeoConEspacios;\n    \n    public VistaPOAIMetaFondoCuentaPresupuestaria() {\n    }\n\n    public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {\n        return planOperativoAnualInstitucional;\n    }\n\n    public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n        this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;\n    }\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getCodigoProgramaPresupuestario() {\n        return codigoProgramaPresupuestario;\n    }\n\n    public void setCodigoProgramaPresupuestario(String codigoProgramaPresupuestario) {\n        this.codigoProgramaPresupuestario = codigoProgramaPresupuestario;\n    }\n\n    public String getNombreProgramaPresupuestario() {\n        return nombreProgramaPresupuestario;\n    }\n\n    public void setNombreProgramaPresupuestario(String nombreProgramaPresupuestario) {\n        this.nombreProgramaPresupuestario = nombreProgramaPresupuestario;\n    }\n\n    public String getCodigoObjetivoPOAI() {\n        return codigoObjetivoPOAI;\n    }\n\n    public void setCodigoObjetivoPOAI(String codigoObjetivoPOAI) {\n        this.codigoObjetivoPOAI = codigoObjetivoPOAI;\n    }\n\n    public String getDescripcionObjetivoPOAI() {\n        return descripcionObjetivoPOAI;\n    }\n\n    public void setDescripcionObjetivoPOAI(String descripcionObjetivoPOAI) {\n        this.descripcionObjetivoPOAI = descripcionObjetivoPOAI;\n    }\n\n    public String getCodigoMetaPOAI() {\n        return codigoMetaPOAI;\n    }\n\n    public void setCodigoMetaPOAI(String codigoMetaPOAI) {\n        this.codigoMetaPOAI = codigoMetaPOAI;\n    }\n\n    public String getDescripcionMetaPOAI() {\n        return descripcionMetaPOAI;\n    }\n\n    public void setDescripcionMetaPOAI(String descripcionMetaPOAI) {\n        this.descripcionMetaPOAI = descripcionMetaPOAI;\n    }\n\n    public String getCodigoFondo() {\n        return codigoFondo;\n    }\n\n    public void setCodigoFondo(String codigoFondo) {\n        this.codigoFondo = codigoFondo;\n    }\n\n    public String getNombreFondo() {\n        return nombreFondo;\n    }\n\n    public void setNombreFondo(String nombreFondo) {\n        this.nombreFondo = nombreFondo;\n    }\n\n    public String getCodigoCuentaPresupuestaria() {\n        return codigoCuentaPresupuestaria;\n    }\n\n    public void setCodigoCuentaPresupuestaria(String codigoCuentaPresupuestaria) {\n        this.codigoCuentaPresupuestaria = codigoCuentaPresupuestaria;\n    }\n\n    public String getNombreCuentaPresupuestaria() {\n        return nombreCuentaPresupuestaria;\n    }\n\n    public void setNombreCuentaPresupuestaria(String nombreCuentaPresupuestaria) {\n        this.nombreCuentaPresupuestaria = nombreCuentaPresupuestaria;\n    }\n\n    public String getTipoPresupuesto() {\n        return tipoPresupuesto;\n    }\n\n    public void setTipoPresupuesto(String tipoPresupuesto) {\n        this.tipoPresupuesto = tipoPresupuesto;\n    }\n\n    public BigDecimal getColones() {\n        return colones;\n    }\n\n    public void setColones(BigDecimal colones) {\n        this.colones = colones;\n    }\n\n    public BigDecimal getMillonesColones() {\n        return millonesColones;\n    }\n\n    public void setMillonesColones(BigDecimal millonesColones) {\n        this.millonesColones = millonesColones;\n    }\n\n    public BigDecimal getRedondeo() {\n        return redondeo;\n    }\n\n    public void setRedondeo(BigDecimal redondeo) {\n        this.redondeo = redondeo;\n    }\n\n    private DecimalFormatSymbols getDecimalFormatSymbols() {\n        DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();\n        decimalFormatSymbols.setDecimalSeparator(',');\n        decimalFormatSymbols.setGroupingSeparator(' ');\n        return decimalFormatSymbols;\n    }\n\n    public String getColonesConEspacios() {\n        return \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(this.getColones());\n    }\n\n    public void setColonesConEspacios(String colonesConEspacios) {\n        this.colonesConEspacios = colonesConEspacios;\n    }\n\n    public String getMillonesColonesConEspacios() {\n        return \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(this.getMillonesColones());\n    }\n\n    public void setMillonesColonesConEspacios(String millonesColonesConEspacios) {\n        this.millonesColonesConEspacios = millonesColonesConEspacios;\n    }\n\n    public String getRedondeoConEspacios() {\n        return \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(this.getRedondeo());\n    }\n\n    public void setRedondeoConEspacios(String redondeoConEspacios) {\n        this.redondeoConEspacios = redondeoConEspacios;\n    }\n \n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaRepository.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos el Repository<\/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\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.ppo.repository;\n\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\nimport java.util.List;\n\nimport org.springframework.stereotype.Repository;\n\nimport cr.ac.una.cgi.sdkuna.generic.GenericRepository;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;\n\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**\n * Repository para la administraci\u00f3n de la vista {@link VistaPOAIMetaFondoCuentaPresupuestaria}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @since: 28\/09\/2023\n * @Version: 1.0.0\n *\/\n\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\n@Repository\npublic interface VistaPOAIMetaFondoCuentaPresupuestariaRepository extends GenericRepository&lt;VistaPOAIMetaFondoCuentaPresupuestaria> {\n\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> findByPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);\n\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>NOTA: aqu\u00ed podemos observa que estamos agregando la funcion findByPlanOperativoAnualInstitucional para avanzar con el filtro<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria&gt; findByPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Service: VistaPOAIMetaFondoCuentaPresupuestariaService.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos el service de la vista<\/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\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.ppo.service;\n\n\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\n\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport cr.ac.una.cgi.sdkuna.api.service.EntityService;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;\n\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**\n * Interface para la administraci\u00f3n de la vista {@link VistaPOAIMetaFondoCuentaPresupuestaria}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @since: 28\/09\/2023\n * @Version: 1.0.0.\n *\/\n\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE INTERFACE   ************************\/\n\/**********************************************************************\/\npublic interface VistaPOAIMetaFondoCuentaPresupuestariaService extends EntityService&lt;VistaPOAIMetaFondoCuentaPresupuestaria> {\n\n    \/**\n     * Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.\n     * @return {@link PlanOperativoAnualInstitucional}\n     *\/\n    public PlanOperativoAnualInstitucional primerPOAIActivo();\n\n    \/**\n     * Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.\n     * @param query\n     * @param filterSpecifications\n     * @param pageable\n     * @return {@link Page&lt;PlanOperativoAnualInstitucional>}\n     *\/\n    public Page&lt;PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList&lt;FilterSpecification> filterSpecifications, Pageable pageable);\n\n    \/**\n     * Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por par\u00e1metro.\n     * \n     * @param planOperativoAnualInstitucional\n     * @return List&lt;VistaPOAIMetaFondoCuentaPresupuestaria>\n     *\/\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);\n\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Notas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Estamos agregando un m\u00e9todo que va obtener el primer POAI activo para que sea mostrado en el filtro como selecionado y sean los datos de este los que esten cargados al ingresar y as\u00ed los resgistros no se muestren todos cada vez que ingresa el usuario<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.\n     * @return {@link PlanOperativoAnualInstitucional}\n     *\/\n    public PlanOperativoAnualInstitucional primerPOAIActivo();<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos ademas un complete que obtenga todos los POAI que esten activos y los agrege al combobox<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     * Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.\n     * @param query\n     * @param filterSpecifications\n     * @param pageable\n     * @return {@link Page&lt;PlanOperativoAnualInstitucional&gt;}\n     *\/\n    public Page&lt;PlanOperativoAnualInstitucional&gt; completePOAISinAnulados(String query, ArrayList&lt;FilterSpecification&gt; filterSpecifications, Pageable pageable);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y finalmente estamos agregando un m\u00e9todo que va  realizar el el filtro de los datos de la vista seg\u00fan el parametro del POAI<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     * Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por par\u00e1metro.\n     * \n     * @param planOperativoAnualInstitucional\n     * @return List&lt;VistaPOAIMetaFondoCuentaPresupuestaria&gt;\n     *\/\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria&gt; getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>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\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.ppo.service;\n\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\n\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.repository.VistaPOAIMetaFondoCuentaPresupuestariaRepository;\n\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**\n * Clase que implementa el servicio {@link VistaPOAIMetaFondoCuentaPresupuestaria} \n *\n * @author: Gustavo Matamoros Gonz\u00e1lez\n * @since: 28\/09\/2023\n * @version: 1.0.0\n *\/\n\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n@Service\n@Transactional\npublic class VistaPOAIMetaFondoCuentaPresupuestariaServiceImpl extends EntityServiceImpl&lt;VistaPOAIMetaFondoCuentaPresupuestaria, VistaPOAIMetaFondoCuentaPresupuestariaRepository> implements VistaPOAIMetaFondoCuentaPresupuestariaService {\n\n    \/**********************************************************************\/\n    \/****************        AUTOWIRED'S      *****************************\/\n    \/**********************************************************************\/\n    @Autowired\n    PlanOperativoAnualInstitucionalService planOperativoAnualInstitucionalService;\n\n    \/**********************************************************************\/\n    \/****************         M\u00c9TODOS         *****************************\/\n    \/**********************************************************************\/\n    \/**     \n     * Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#primerPOAIActivo()} \n     * Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.\n     *\/\n    @Override\n    public PlanOperativoAnualInstitucional primerPOAIActivo(){\n        return planOperativoAnualInstitucionalService.primerPOAIActivo();\n    }\n\n    \/**     \n     * Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#completePlanOperativoAnualInstitucional()} \n     * Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.\n     *\/\n    @Override\n    public Page&lt;PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList&lt;FilterSpecification> filterSpecifications, Pageable pageable){\n        return planOperativoAnualInstitucionalService.obtenerPOAISinAnulados(query, filterSpecifications, pageable);\n    }\n\n    \/**\n     * Ver\n     * {@link VistaPOAIMetaFondoCuentaPresupuestariaService#getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional)}\n     * Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por par\u00e1metro.\n     *\/\n    @Override\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n        return repository.findByPlanOperativoAnualInstitucional(planOperativoAnualInstitucional);\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Notas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos ademas los m\u00e9todos que utilizan el autowired de planOperativoAnualInstitucionalService y que obtiene el primerPOAIActivo y todos los POAI activos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**     \n     * Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#primerPOAIActivo()} \n     * Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.\n     *\/\n    @Override\n    public PlanOperativoAnualInstitucional primerPOAIActivo(){\n        return planOperativoAnualInstitucionalService.primerPOAIActivo();\n    }\n\n    \/**     \n     * Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#completePlanOperativoAnualInstitucional()} \n     * Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.\n     *\/\n    @Override\n    public Page&lt;PlanOperativoAnualInstitucional&gt; completePOAISinAnulados(String query, ArrayList&lt;FilterSpecification&gt; filterSpecifications, Pageable pageable){\n        return planOperativoAnualInstitucionalService.obtenerPOAISinAnulados(query, filterSpecifications, pageable);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y el que utiliza el repository de la vista para filtrar los datos por POAI<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * Ver\n     * {@link VistaPOAIMetaFondoCuentaPresupuestariaService#getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional)}\n     * Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por par\u00e1metro.\n     *\/\n    @Override\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria&gt; getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n        return repository.findByPlanOperativoAnualInstitucional(planOperativoAnualInstitucional);\n    }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos crear el Bean<\/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\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.ppo.view.model;\n\n\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport javax.annotation.PostConstruct;\n\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.stereotype.Component;\n\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport cr.ac.una.cgi.sdkuna.api.filter.LogicFunction;\nimport cr.ac.una.cgi.sdkuna.api.filter.Operator;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\nimport cr.ac.una.cgi.sigesa.epf.bco.service.MonedaService;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.service.VistaPOAIMetaFondoCuentaPresupuestariaService;\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link VistaPOAIMetaFondoCuentaPresupuestaria}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @since 28\/09\/2023\n * @version: 1.0.0\n * @bug: PPI-432\n *\/\n\n\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n@Component\n@Scope(\"session\")\npublic class VistaPOAIMetaFondoCuentaPresupuestariaBean extends CRUDImpl&lt;VistaPOAIMetaFondoCuentaPresupuestaria, VistaPOAIMetaFondoCuentaPresupuestariaService> implements CRUD {\n    \n    \/**********************************************************************\/\n    \/****************        AUTOWIRED'S      *****************************\/\n    \/**********************************************************************\/\n    @Autowired\n    MonedaService monedaService;\n    \n    \/**********************************************************************\/\n    \/****************       VARIABLES         *****************************\/\n    \/**********************************************************************\/\n    private PlanOperativoAnualInstitucional planOperativoAnualInstitucional;\n\n\n    \/**********************************************************************\/\n    \/****************         M\u00c9TODOS         *****************************\/\n    \/**********************************************************************\/\n    @PostConstruct\n    public void init() {\n        List&lt;CRUDColumn> columns = new ArrayList&lt;>();\n\n        CRUDColumn column1  = new CRUDColumn(\"codigoProgramaPresupuestario\", getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioCodigo_header\"),      true);\n        CRUDColumn column2  = new CRUDColumn(\"nombreProgramaPresupuestario\", getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioNombre_header\"),      true);         \n        CRUDColumn column3  = new CRUDColumn(\"codigoObjetivoPOAI\",           getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAICodigo_header\"),                true);         \n        CRUDColumn column4  = new CRUDColumn(\"descripcionObjetivoPOAI\",      getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAIDescripcion_header\"),           true);\n        CRUDColumn column5  = new CRUDColumn(\"codigoMetaPOAI\",               getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAICodigo_header\"),                    true);\n        CRUDColumn column6  = new CRUDColumn(\"descripcionMetaPOAI\",          getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAIDescripcion_header\"),               true);\n        CRUDColumn column7  = new CRUDColumn(\"codigoFondo\",                  getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_fondoCodigo_header\"),                       true);\n        CRUDColumn column8  = new CRUDColumn(\"nombreFondo\",                  getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_fondoNombre_header\"),                       true);\n        CRUDColumn column9  = new CRUDColumn(\"codigoCuentaPresupuestaria\",   getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupCodigo_header\"),                true);\n        CRUDColumn column10 = new CRUDColumn(\"nombreCuentaPresupuestaria\",   getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupNombre_header\"),                true);\n        CRUDColumn column11 = new CRUDColumn(\"tipoPresupuesto\",              getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_tipoCuenta_header\"),                        true);\n        CRUDColumn column12 = new CRUDColumn(\"colones\",                      getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoColones_header\"),       true, \"\", true, \"\u00a4#,##0.00\",    \"currency\", monedaService.getSimboloLocal());\n        CRUDColumn column13 = new CRUDColumn(\"millonesColones\",              getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoMiles_header\"),         true, \"\", true, \"\u00a4#,##0.00\",    \"currency\", monedaService.getSimboloLocal());\n        CRUDColumn column14 = new CRUDColumn(\"redondeo\",                     getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoRedondeo_header\"),      true, \"\", true, \"\u00a4#,##0\",       \"currency\", monedaService.getSimboloLocal());\n\n\n\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n        columns.add(column4);\n        columns.add(column5);\n        columns.add(column6);\n        columns.add(column7);\n        columns.add(column8);\n        columns.add(column9);\n        columns.add(column10);\n        columns.add(column11);\n        columns.add(column12);\n        columns.add(column13);\n        columns.add(column14);\n\n        this.setTableColumns(columns);\n    }\n\n    public void initDetails() {\n        if (!isPostBack()) {\n            \/\/ cuando inicia cargamos el primero POAI Activo\n            this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());\n        }\n    }\n    \n    public Page&lt;PlanOperativoAnualInstitucional> completePlanOperativoAnualInstitucional(String query, Pageable pageable) {\n        ArrayList&lt;FilterSpecification> filterSpecifications = new ArrayList&lt;FilterSpecification>();\n        return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);\n    }\n\n    public void handleClearPlanOperativoAnualInstitucional() {\n        \n    }\n\n    public void handlePOAIItemSelectEvent() {\n        \n    }\n\n    public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {\n        return this.planOperativoAnualInstitucional;\n    }\n\n    public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n\n        \/\/ Limpiamos la especificaci\u00f3n\n        removeSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());\n\n        \/\/ Si el POAI es diferente de null\n        if (planOperativoAnualInstitucional != null) {\n\n            \/\/ Agregamos la especificaci\u00f3n\n            addSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);\n        }\n\n        \/\/ Actualizamos la variable\n        this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;\n\n    }\n   \n    \n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Notas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed en initDetails() estamos estableciendo que el primer POAI se va ser el primer POAI Activo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void initDetails() {\n        if (!isPostBack()) {\n            this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());\n        }\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed estamos creando el metodo para manejar el complete del POAI<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public Page&lt;PlanOperativoAnualInstitucional&gt; completePlanOperativoAnualInstitucional(String query, Pageable pageable) {\n        ArrayList&lt;FilterSpecification&gt; filterSpecifications = new ArrayList&lt;FilterSpecification&gt;();\n        return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed cuando se limpia el filtro sin embargo actualmente no se utiliza para que siempre es necesario filtrar para que no traiga todos los datos de la vista<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void handleClearPlanOperativoAnualInstitucional() {\n        \n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed actualizamos la variable POAI<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {\n        return this.planOperativoAnualInstitucional;\n    }\n\n    public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n\n        \/\/ Limpiamos la especificaci\u00f3n\n        removeSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());\n\n        \/\/ Si el POAI es diferente de null\n        if (planOperativoAnualInstitucional != null) {\n\n            \/\/ Agregamos la especificaci\u00f3n\n            addSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);\n        }\n\n        \/\/ Actualizamos la variable\n        this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;\n\n    }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">ListForm: vistaPOAIMetaFondoCuentaPresupuestariaListForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;ui:composition\n    template=\"\/templates\/crud.xhtml\"\n    xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\n    xmlns:f=\"http:\/\/java.sun.com\/jsf\/core\"\n    xmlns:h=\"http:\/\/java.sun.com\/jsf\/html\"\n    xmlns:ui=\"http:\/\/java.sun.com\/jsf\/facelets\"\n    xmlns:p=\"http:\/\/primefaces.org\/ui\"\n    xmlns:sdkuna=\"http:\/\/cgi.una.ac.cr\/sdkuna\"\n    xmlns:una=\"http:\/\/una.ac.cr\/ui\/components\"\n    xmlns:pe=\"http:\/\/primefaces.org\/ui\/extensions\"\n    xmlns:components=\"http:\/\/java.sun.com\/jsf\/composite\/components\"&gt;\n\n    &lt;ui:define name=\"preRender\"&gt;\n        &lt;f:event type=\"preRenderView\" listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.list()}\" \/&gt;\n        &lt;!--f:event type=\"preRenderView\" listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.initDetails()}\"\/--&gt;\n    &lt;\/ui:define&gt;\n\n    &lt;ui:define name=\"title\"&gt;#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_list_form_title}&lt;\/ui:define&gt;\n\n    &lt;ui:define name=\"contentCRUD\"&gt;\n        &lt;components:toolbar id=\"toolbar\" \n                            editMode=\"false\"\n                            bean=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean}\"\n                            listForm=\"vistaPOAIMetaFondoCuentaPresupuestariaListForm\"\n                            editForm=\"vistaPOAIMetaFondoCuentaPresupuestariaEditForm\"\n                            backForm=\"vistaPOAIMetaFondoCuentaPresupuestariaListForm\"\n                            container=\"noEditTable:dataTable\"\n                            header=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_list_form_table_title}\"\n                            showNewButton=\"false\"       \n                            showSaveButton=\"false\"\n                            showDeleteButton=\"false\"\n                            showCopyButton=\"false\"\n                            showBackButton=\"false\"\/&gt;\n\n\n        &lt;components:noEditTable id=\"noEditTable\"\n                                i18nKey=\"VistaPOAIMetaFondoCuentaPresupuestaria_list_form_table_title\"\n                                header=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_list_form_table_title}\"\n                                bean=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean}\"\n                                editForm=\"vistaPOAIMetaFondoCuentaPresupuestariaEditForm\"\n                                showEditButton=\"false\"\n                                showViewButton=\"false\"\n                                showDeleteButton=\"false\"\n                                responsive=\"true\"\/&gt;\n    &lt;\/ui:define&gt;\n&lt;\/ui:composition&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Registramos el recurso en SIGESA en Desarrollo y Producci\u00f3n PENDIENTE: PRODUCCI\u00d6N<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/10.0.2.231:8080\/sigesa-webapp\/security\/login.xhtml\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/10.0.2.231:8080\/sigesa-webapp\/security\/login.xhtml<\/a><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Lista de Recursos<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Datos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Nombre: \/pages\/vistaPOAIMetaFondoCuentaPresupuestariaListForm.xhtml\nTipo de recurso: P\u00e1gina\nVisible: true\nSecuencia: 1\nNotas: PPI-PPO-POAI: Vista de POAI que presenta las metas con Fondo y Cuenta Presupuestaria\nEstado: Activo<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"688\" height=\"663\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_729.png\" alt=\"\" class=\"wp-image-15773\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_729.png 688w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_729-300x289.png 300w\" sizes=\"(max-width: 688px) 100vw, 688px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le asignamos los roles de:\n<ul class=\"wp-block-list\">\n<li>UNA_PPI_PPO_ANALISTA<\/li>\n\n\n\n<li>UNA_PPI_PPO_CONSULTA<\/li>\n\n\n\n<li>UNA_PPI_PPO_ADMIN<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"508\" height=\"406\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_730.png\" alt=\"\" class=\"wp-image-15776\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_730.png 508w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_730-300x240.png 300w\" sizes=\"(max-width: 508px) 100vw, 508px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Creamos el men\u00fa<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Buscamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Lista de Men\u00fa<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Datos:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Tipo de Men\u00fa: Crear men\u00fa de un men\u00fa padre\nMen\u00fa: PPO - Consultas\nRecurso: \/pages\/vistaPOAIMetaFondoCuentaPresupuestariaListForm.xhtml\nNombre: Consulta POAI: Fondos y Cuentas Presupuestarias por Metas POAI  \nNotas: PPI-PPO-POAI: Vista de POAI que presenta las metas con Fondo y Cuenta Presupuestaria\nEstado: Activo\nSecuencia: 1<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"635\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_731.png\" alt=\"\" class=\"wp-image-15777\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_731.png 696w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_731-300x274.png 300w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Vista visible<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y con esto ya tendremos la vista funcionando<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"341\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_735-1024x341.png\" alt=\"\" class=\"wp-image-15781\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_735-1024x341.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_735-300x100.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_735-768x255.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_735-1536x511.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_735.png 1660w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Agregar filtro<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Primero lo que se debe entender es que el bean y servicio de POAI ya contiene las funciones necesarias para crear un autocomplete y LOV por tanto lo mas sencillo es utilizarlo<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">1.Cargar el Primer POAI Activo<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SERVICE: Para esto el el service tenemos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.\n     * @return {@link PlanOperativoAnualInstitucional}\n     *\/\n    public PlanOperativoAnualInstitucional primerPOAIActivo();<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IMPLEMENT: tenemos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**     \n     * Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#primerPOAIActivo()} \n     * Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.\n     *\/\n    @Override\n    public PlanOperativoAnualInstitucional primerPOAIActivo(){\n        return planOperativoAnualInstitucionalService.primerPOAIActivo();\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BEAN:  tenemos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void initDetails() {\n        if (!isPostBack()) {\n            \/\/ cuando inicia cargamos el primero POAI Activo\n            this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());\n        }\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>XHTML:<\/li>\n\n\n\n<li>Debemos agrega la siguiente instrucci\u00f3n que invoca a la funci\u00f3n initDetails para que cargue el primer POAI Activo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;f:event type=\"preRenderView\" listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.initDetails()}\"\/><\/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>&lt;ui:define name=\"preRender\">\n        &lt;f:event type=\"preRenderView\" listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.list()}\" \/>\n        &lt;f:event type=\"preRenderView\" listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.initDetails()}\"\/>\n    &lt;\/ui:define><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2: Crear Autocomplete<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SERVICE: tenemos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.\n     * @param query\n     * @param filterSpecifications\n     * @param pageable\n     * @return {@link Page&lt;PlanOperativoAnualInstitucional>}\n     *\/\n    public Page&lt;PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList&lt;FilterSpecification> filterSpecifications, Pageable pageable);<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IMPLEMENT: tenemos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**     \n     * Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#completePlanOperativoAnualInstitucional()} \n     * Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.\n     *\/\n    @Override\n    public Page&lt;PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList&lt;FilterSpecification> filterSpecifications, Pageable pageable){\n        return planOperativoAnualInstitucionalService.obtenerPOAISinAnulados(query, filterSpecifications, pageable);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BEAN: tenemos la funcion que relaciona la pagina con el bean y servicio<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public Page&lt;PlanOperativoAnualInstitucional> completePlanOperativoAnualInstitucional(String query, Pageable pageable) {\n        ArrayList&lt;FilterSpecification> filterSpecifications = new ArrayList&lt;FilterSpecification>();\n        return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>XHTML: debemos agregar <\/li>\n\n\n\n<li>Primero un panelgrid de 2 columnas<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:panelGrid columns=\"2\" styleClass=\"una-panelgrid\">\n&lt;\/p:panelGrid><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora debemos agregar dentro del panelGrid el componente de autocomplete<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;una:autoCompletePaginator id=\"planOperativoAnualInstitucionalAutocomplete\"\n                                           paginator=\"true\"\n                                           paginationRows=\"10\"\n                                           dropdown=\"true\"\n                                           value=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.planOperativoAnualInstitucional}\"\n                                           var=\"planOperativoAnualInstitucional\"\n                                           styleClass=\"una-autocomplete-lov\"\n                                           itemLabel=\"#{planOperativoAnualInstitucional.codigo}\"\n                                           itemValue=\"#{planOperativoAnualInstitucional}\"\n                                           completeMethod=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.completePlanOperativoAnualInstitucional}\"\n                                           converter=\"#{planOperativoAnualInstitucionalBean.converter}\"\n                                           forceSelection=\"true\"\n                                           noSelectedOption=\"true\"\n                                           noSelectedLabel=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_planOperativoAnualInstitucional_select_label}\"\n                                           onNoSelectedOption=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.handleClearPlanOperativoAnualInstitucional()}\"\n                                           size=\"60\"\n                                           scrollHeight=\"200\"\n                                           required=\"true\">\n                    &lt;p:ajax event=\"itemSelect\"\n                            listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.handlePOAIItemSelectEvent()}\"\n                            process=\"@this\"\n                            update=\"noEditTable:dataTable\" \/>\n                &lt;\/una:autoCompletePaginator><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">NOTAS:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqu\u00ed relacionamos al varable del bean<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>value=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.planOperativoAnualInstitucional}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aqui indicamos por que filtrar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>itemLabel=\"#{planOperativoAnualInstitucional.codigo}\"\n                                           itemValue=\"#{planOperativoAnualInstitucional}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Que metodo utilizar y como debe comportarse<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>completeMethod=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.completePlanOperativoAnualInstitucional}\"\n                                           converter=\"#{planOperativoAnualInstitucionalBean.converter}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando se selecciona \u00abSelecicone una POAI\u00bb<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>onNoSelectedOption=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.handleClearPlanOperativoAnualInstitucional()}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y aqu\u00ed que debemos hacer cuando el usuario seleccione una opci\u00f3n, en este caso actualizarse a si mismo y atualizar la vista noEditTable:dataTable<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:ajax event=\"itemSelect\"\n                            listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.handlePOAIItemSelectEvent()}\"\n                            process=\"@this\"\n                            update=\"noEditTable:dataTable\" \/><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Crear LOV<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para este caso le vamos a indicar que utilice directamente el Bean de POAI<\/li>\n\n\n\n<li>XHTML dentro del panelGrid despues del autocomplete vamos a agregar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;components:dialogFrameworkData lOVBean=\"#{planOperativoAnualInstitucionalLOVBean}\"\n                                                target=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.planOperativoAnualInstitucional}\"\n                                                id=\"planOperativoAnualInstitucionalListDialog\"\n                                                title=\"#{i18n.vistaFUCCMetaPOAI_planOperativoAnualInstitucional_LOV_title}\"\n                                                methodName=\"planOperativoAnualInstitucionalSinAnuladosLOV\"\/><\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">NOTAS:<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Este indica cual bean utilizar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>lOVBean=\"#{planOperativoAnualInstitucionalLOVBean}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Que objeto de nuestro bean va a utilizar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>target=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.planOperativoAnualInstitucional}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y que metodo el POAIBean va a utilizar<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>methodName=\"planOperativoAnualInstitucionalSinAnuladosLOV\"\/><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Continuamos<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le agregamos el mesage<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:message id=\"planOperativoAnualInstitucionalAutoCompleteMessage\"\n                           for=\"planOperativoAnualInstitucionalAutocomplete\" \/><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Finalmente queda as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:panelGrid columns=\"2\" styleClass=\"una-panelgrid\">\n            &lt;p:outputLabel id=\"planOperativoAnualInstitucionalOutputLabel\" \n                            for=\"planOperativoAnualInstitucionalAutocomplete\"  \n                            value=\"#{i18n.vistaFUCCMetaPOAI_planOperativoAnualInstitucional_label}\" \/>\n\n            &lt;p:outputPanel id=\"planOperativoAnualInstitucionalOutputPanel\">\n                &lt;una:autoCompletePaginator id=\"planOperativoAnualInstitucionalAutocomplete\"\n                                           paginator=\"true\"\n                                           paginationRows=\"10\"\n                                           dropdown=\"true\"\n                                           value=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.planOperativoAnualInstitucional}\"\n                                           var=\"planOperativoAnualInstitucional\"\n                                           styleClass=\"una-autocomplete-lov\"\n                                           itemLabel=\"#{planOperativoAnualInstitucional.codigo}\"\n                                           itemValue=\"#{planOperativoAnualInstitucional}\"\n                                           completeMethod=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.completePlanOperativoAnualInstitucional}\"\n                                           converter=\"#{planOperativoAnualInstitucionalBean.converter}\"\n                                           forceSelection=\"true\"\n                                           noSelectedOption=\"true\"\n                                           noSelectedLabel=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_planOperativoAnualInstitucional_select_label}\"\n                                           onNoSelectedOption=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.handleClearPlanOperativoAnualInstitucional()}\"\n                                           size=\"60\"\n                                           scrollHeight=\"200\"\n                                           required=\"true\">\n                    &lt;p:ajax event=\"itemSelect\"\n                            listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.handlePOAIItemSelectEvent()}\"\n                            process=\"@this\"\n                            update=\"noEditTable:dataTable\" \/>\n                &lt;\/una:autoCompletePaginator>\n\n                &lt;components:dialogFrameworkData lOVBean=\"#{planOperativoAnualInstitucionalLOVBean}\"\n                                                target=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.planOperativoAnualInstitucional}\"\n                                                id=\"planOperativoAnualInstitucionalListDialog\"\n                                                title=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_planOperativoAnualInstitucional_LOV_title}\"\n                                                methodName=\"planOperativoAnualInstitucionalSinAnuladosLOV\"\/>\n\n                &lt;p:message id=\"planOperativoAnualInstitucionalAutoCompleteMessage\"\n                           for=\"planOperativoAnualInstitucionalAutocomplete\" \/>\n            &lt;\/p:outputPanel>\n        &lt;\/p:panelGrid><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. filtrar vista<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Primero debemos recordar que en el autocomplete tenemos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>value=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.planOperativoAnualInstitucional}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Que va a relacionar el autocomplete con la variable del Bean planOperativoAnualInstitucional<\/li>\n\n\n\n<li>Y esto hacer que cuando se seleccione un dato se aplique el set de la variable en este caso<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n\n        \/\/ Limpiamos la especificaci\u00f3n\n        removeSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());\n\n        \/\/ Si el POAI es diferente de null\n        if (planOperativoAnualInstitucional != null) {\n\n            \/\/ Agregamos la especificaci\u00f3n\n            addSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);\n        }\n\n        \/\/ Actualizamos la variable\n        this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;\n\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Que que cuando se procese actualialice la vista <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:ajax event=\"itemSelect\"\n                            listener=\"#{vistaPOAIMetaFondoCuentaPresupuestariaBean.handlePOAIItemSelectEvent()}\"\n                            process=\"@this\"\n                            update=\"noEditTable:dataTable\" \/><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>aqu\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>update=\"noEditTable:dataTable\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Podemo probar como funciona el autocomplete y LOV<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"590\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_736-1024x590.png\" alt=\"\" class=\"wp-image-15789\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_736-1024x590.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_736-300x173.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_736-768x443.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2023\/09\/Seleccion_736.png 1298w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Tabla de Totales<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora vamos a crear la tabla que muestra los totales por POAI<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Domain: VistaPOAIMetaFondoCuentaPresupuestaria.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos los trasient para almacenar los nombres de los programas <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>@Transient\n    private String programaAcademico;\n\n    @Transient\n    private String programaVidaUniversitaria;\n    \n    @Transient\n    private String programaAdministrativo;\n    \n    @Transient\n    private String  programaTotal; <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y otros para almacenar los texto de colones Millones y redondeo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>@Transient\n    private String textoColones;\n    \n    @Transient\n    private String textoMillones;\n    \n    @Transient\n    private String  textoRedondeo; <\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y los respectivos get y set&#8217;s<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public String getProgramaAcademico() {\n        return programaAcademico;\n    }\n\n    public void setProgramaAcademico(String programaAcademico, boolean isRedondeo) {\n        if(isRedondeo){\n            this.programaAcademico = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAcademico));\n            \n        }else{\n            this.programaAcademico = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAcademico));\n            \n        }\n    }\n\n    public String getProgramaVidaUniversitaria() {\n        return programaVidaUniversitaria;\n    }\n\n    public void setProgramaVidaUniversitaria(String programaVidaUniversitaria,boolean isRedondeo) {\n        if(isRedondeo){\n        this.programaVidaUniversitaria = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaVidaUniversitaria));\n        }else{\n        this.programaVidaUniversitaria = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaVidaUniversitaria))  ;\n        }\n    }\n\n    public String getProgramaAdministrativo() {\n        return programaAdministrativo;\n    }\n\n    public void setProgramaAdministrativo(String programaAdministrativo,boolean isRedondeo) {\n        if(isRedondeo){\n            this.programaAdministrativo = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAdministrativo));\n        }else{\n        this.programaAdministrativo = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAdministrativo))    ;\n        }\n    }\n\n    public String getProgramaTotal() {\n        return programaTotal;\n    }\n\n    public void setProgramaTotal(String programaTotal,boolean isRedondeo) {\n        if(isRedondeo){\n            this.programaTotal = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaTotal));\n        }else{\n            this.programaTotal = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaTotal));\n        }\n    }\n\npublic String getTextoColones() {\n        return textoColones;\n    }\n\n    public void setTextoColones(String textoColones) {\n        this.textoColones = textoColones;\n    }\n\n    public String getTextoMillones() {\n        return textoMillones;\n    }\n\n    public void setTextoMillones(String textoMillones) {\n        this.textoMillones = textoMillones;\n    }\n\n    public String getTextoRedondeo() {\n        return textoRedondeo;\n    }\n\n    public void setTextoRedondeo(String textoRedondeo) {\n        this.textoRedondeo = textoRedondeo;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/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\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.ppo.domain;\n\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\nimport java.io.Serializable;\nimport java.math.BigDecimal;\nimport java.text.DecimalFormat;\nimport java.text.DecimalFormatSymbols;\n\nimport javax.persistence.Column;\nimport javax.persistence.Entity;\nimport javax.persistence.FetchType;\nimport javax.persistence.Id;\nimport javax.persistence.JoinColumn;\nimport javax.persistence.ManyToOne;\nimport javax.persistence.Transient;\n\nimport org.hibernate.annotations.Subselect;\n\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**\n * Entity para la consulta de la vista {@link PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\u00b4\n * @since 27\/09\/2023\n * @version 1.0.0 \n *\/\n\n\/**********************************************************************\/\n\/*********************    CONFIGURACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n@Entity\n@Subselect(\"SELECT * FROM VISTA_POAI_META_FONDO_CODIGO_PRESUP\")\n\n\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n\npublic class VistaPOAIMetaFondoCuentaPresupuestaria implements Serializable {\n\n    @ManyToOne(fetch = FetchType.LAZY, optional = false)\n    @JoinColumn(name = \"PLAN_OPERATIVO_ANUAL_INST\",\n            referencedColumnName = \"ID_PLAN_OPERATIVO_ANUAL_INST\",\n            nullable = false,\n            insertable = false,\n            updatable = false)\n    private PlanOperativoAnualInstitucional planOperativoAnualInstitucional;\n\n    @Id\n    @Column(name = \"ID\")\n    private int id;\n\n    @Column(name = \"CODIGO_PROGRAMA_PRESUPUESTARIO\")\n    private String codigoProgramaPresupuestario;\n\n    @Column(name = \"NOMBRE_PROGRAMA_PRESUPUESTARIO\")\n    private String nombreProgramaPresupuestario;\n\n    @Column(name = \"CODIGO_OBJETIVO_POAI\")\n    private String codigoObjetivoPOAI;\n\n    @Column(name = \"DESCRIPCION_OBJETIVO_POAI\")\n    private String descripcionObjetivoPOAI;\n\n    @Column(name = \"CODIGO_META_POAI\")\n    private String codigoMetaPOAI;\n\n    @Column(name = \"DESCRIPCION_META_POAI\")\n    private String descripcionMetaPOAI;\n\n    @Column(name = \"CODIGO_FONDO\")\n    private String codigoFondo;\n\n    @Column(name = \"NOMBRE_FONDO\")\n    private String nombreFondo;\n\n    @Column(name = \"CODIGO_CUENTA_PRESUPUESTARIA\")\n    private String codigoCuentaPresupuestaria;\n\n    @Column(name = \"NOMBRE_CUENTA_PRESUPUESTARIA\")\n    private String nombreCuentaPresupuestaria;\n\n    @Column(name = \"TIPO_PRESUPUESTO\")\n    private String tipoPresupuesto;\n\n    @Column(name = \"COLONES\")\n    private BigDecimal colones;\n\n    @Column(name = \"MILLONES_COLONES\")\n    private BigDecimal millonesColones;\n\n    @Column(name = \"REDONDEO\")\n    private BigDecimal redondeo;\n\n    @Transient\n    private String colonesConEspacios;\n    \n    @Transient\n    private String millonesColonesConEspacios;\n\n    @Transient\n    private String redondeoConEspacios;\n\n    @Transient\n    private String programaAcademico;\n\n    @Transient\n    private String programaVidaUniversitaria;\n    \n    @Transient\n    private String programaAdministrativo;\n    \n    @Transient\n    private String  programaTotal; \n\n\n    @Transient\n    private String textoColones;\n    \n    @Transient\n    private String textoMillones;\n    \n    @Transient\n    private String  textoRedondeo; \n\n\n    \n    public VistaPOAIMetaFondoCuentaPresupuestaria() {\n    }\n\n    public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {\n        return planOperativoAnualInstitucional;\n    }\n\n    public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n        this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;\n    }\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getCodigoProgramaPresupuestario() {\n        return codigoProgramaPresupuestario;\n    }\n\n    public void setCodigoProgramaPresupuestario(String codigoProgramaPresupuestario) {\n        this.codigoProgramaPresupuestario = codigoProgramaPresupuestario;\n    }\n\n    public String getNombreProgramaPresupuestario() {\n        return nombreProgramaPresupuestario;\n    }\n\n    public void setNombreProgramaPresupuestario(String nombreProgramaPresupuestario) {\n        this.nombreProgramaPresupuestario = nombreProgramaPresupuestario;\n    }\n\n    public String getCodigoObjetivoPOAI() {\n        return codigoObjetivoPOAI;\n    }\n\n    public void setCodigoObjetivoPOAI(String codigoObjetivoPOAI) {\n        this.codigoObjetivoPOAI = codigoObjetivoPOAI;\n    }\n\n    public String getDescripcionObjetivoPOAI() {\n        return descripcionObjetivoPOAI;\n    }\n\n    public void setDescripcionObjetivoPOAI(String descripcionObjetivoPOAI) {\n        this.descripcionObjetivoPOAI = descripcionObjetivoPOAI;\n    }\n\n    public String getCodigoMetaPOAI() {\n        return codigoMetaPOAI;\n    }\n\n    public void setCodigoMetaPOAI(String codigoMetaPOAI) {\n        this.codigoMetaPOAI = codigoMetaPOAI;\n    }\n\n    public String getDescripcionMetaPOAI() {\n        return descripcionMetaPOAI;\n    }\n\n    public void setDescripcionMetaPOAI(String descripcionMetaPOAI) {\n        this.descripcionMetaPOAI = descripcionMetaPOAI;\n    }\n\n    public String getCodigoFondo() {\n        return codigoFondo;\n    }\n\n    public void setCodigoFondo(String codigoFondo) {\n        this.codigoFondo = codigoFondo;\n    }\n\n    public String getNombreFondo() {\n        return nombreFondo;\n    }\n\n    public void setNombreFondo(String nombreFondo) {\n        this.nombreFondo = nombreFondo;\n    }\n\n    public String getCodigoCuentaPresupuestaria() {\n        return codigoCuentaPresupuestaria;\n    }\n\n    public void setCodigoCuentaPresupuestaria(String codigoCuentaPresupuestaria) {\n        this.codigoCuentaPresupuestaria = codigoCuentaPresupuestaria;\n    }\n\n    public String getNombreCuentaPresupuestaria() {\n        return nombreCuentaPresupuestaria;\n    }\n\n    public void setNombreCuentaPresupuestaria(String nombreCuentaPresupuestaria) {\n        this.nombreCuentaPresupuestaria = nombreCuentaPresupuestaria;\n    }\n\n    public String getTipoPresupuesto() {\n        return tipoPresupuesto;\n    }\n\n    public void setTipoPresupuesto(String tipoPresupuesto) {\n        this.tipoPresupuesto = tipoPresupuesto;\n    }\n\n    public BigDecimal getColones() {\n        return colones;\n    }\n\n    public void setColones(BigDecimal colones) {\n        this.colones = colones;\n    }\n\n    public BigDecimal getMillonesColones() {\n        return millonesColones;\n    }\n\n    public void setMillonesColones(BigDecimal millonesColones) {\n        this.millonesColones = millonesColones;\n    }\n\n    public BigDecimal getRedondeo() {\n        return redondeo;\n    }\n\n    public void setRedondeo(BigDecimal redondeo) {\n        this.redondeo = redondeo;\n    }\n\n    private DecimalFormatSymbols getDecimalFormatSymbols() {\n        DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();\n        decimalFormatSymbols.setDecimalSeparator(',');\n        decimalFormatSymbols.setGroupingSeparator(' ');\n        return decimalFormatSymbols;\n    }\n\n    public String getColonesConEspacios() {\n        return \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(this.getColones());\n    }\n\n    public void setColonesConEspacios(String colonesConEspacios) {\n        this.colonesConEspacios = colonesConEspacios;\n    }\n\n    public String getMillonesColonesConEspacios() {\n        return \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(this.getMillonesColones());\n    }\n\n    public void setMillonesColonesConEspacios(String millonesColonesConEspacios) {\n        this.millonesColonesConEspacios = millonesColonesConEspacios;\n    }\n\n    public String getRedondeoConEspacios() {\n        return \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(this.getRedondeo());\n    }\n\n    public void setRedondeoConEspacios(String redondeoConEspacios) {\n        this.redondeoConEspacios = redondeoConEspacios;\n    }\n\n\n    public String getProgramaAcademico() {\n        return programaAcademico;\n    }\n\n    public void setProgramaAcademico(String programaAcademico, boolean isRedondeo) {\n        if(isRedondeo){\n            this.programaAcademico = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAcademico));\n            \n        }else{\n            this.programaAcademico = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAcademico));\n            \n        }\n    }\n\n    public String getProgramaVidaUniversitaria() {\n        return programaVidaUniversitaria;\n    }\n\n    public void setProgramaVidaUniversitaria(String programaVidaUniversitaria,boolean isRedondeo) {\n        if(isRedondeo){\n        this.programaVidaUniversitaria = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaVidaUniversitaria));\n        }else{\n        this.programaVidaUniversitaria = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaVidaUniversitaria))  ;\n        }\n    }\n\n    public String getProgramaAdministrativo() {\n        return programaAdministrativo;\n    }\n\n    public void setProgramaAdministrativo(String programaAdministrativo,boolean isRedondeo) {\n        if(isRedondeo){\n            this.programaAdministrativo = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAdministrativo));\n        }else{\n        this.programaAdministrativo = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaAdministrativo))    ;\n        }\n    }\n\n    public String getProgramaTotal() {\n        return programaTotal;\n    }\n\n    public void setProgramaTotal(String programaTotal,boolean isRedondeo) {\n        if(isRedondeo){\n            this.programaTotal = \"\u20a1\" + new DecimalFormat(\"#,##0\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaTotal));\n        }else{\n            this.programaTotal = \"\u20a1\" + new DecimalFormat(\"#,##0.00\", this.getDecimalFormatSymbols()).format(new BigDecimal(programaTotal));\n        }\n    }\n\n    public String getTextoColones() {\n        return textoColones;\n    }\n\n    public void setTextoColones(String textoColones) {\n        this.textoColones = textoColones;\n    }\n\n    public String getTextoMillones() {\n        return textoMillones;\n    }\n\n    public void setTextoMillones(String textoMillones) {\n        this.textoMillones = textoMillones;\n    }\n\n    public String getTextoRedondeo() {\n        return textoRedondeo;\n    }\n\n    public void setTextoRedondeo(String textoRedondeo) {\n        this.textoRedondeo = textoRedondeo;\n    }\n \n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaRepository.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora en el repository tenemos la funci\u00f3n que revise el POAI y obtiene sus datos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> findByPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaService.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tenemos la definici\u00f3n del metdo que utiliza el repository para obtener los datos del plan<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por par\u00e1metro.\n     * \n     * @param planOperativoAnualInstitucional\n     * @return List&lt;VistaPOAIMetaFondoCuentaPresupuestaria>\n     *\/\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> \/**\n     * Retorna una lista de valores tipo BigDecimal con el c\u00e1lculo de los valores para los totales \n     * de los Programas Acad\u00e9mico, Vida Universitaria y Administrativo.\n     * @param listaVistaPOAIMetaFondoCuentaPresupuestaria\n     * @return List&lt;BigDecimal>\n     *\/\n    public List&lt;BigDecimal> calcularTotales(List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaVistaPOAIMetaFondoCuentaPresupuestaria);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tenemos la implementaci\u00f3n del metodo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * Ver\n     * {@link VistaPOAIMetaFondoCuentaPresupuestariaService#getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional)}\n     * Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por par\u00e1metro.\n     *\/\n    @Override\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n        return repository.findByPlanOperativoAnualInstitucional(planOperativoAnualInstitucional);\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos la implementaci\u00f3n del metodo que realiza el calculo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**     \n     * Ver {@link VistaPOAIMetaFondoCuentaPresupuestaria#calcularTotales(List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaVistaPOAIMetaFondoCuentaPresupuestaria)} \n     *\/\n    @Override\n    public List&lt;BigDecimal> calcularTotales(List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaVistaPOAIMetaFondoCuentaPresupuestaria){\n        BigDecimal acadColones = BigDecimal.ZERO;\n        BigDecimal acadMillonesColones = BigDecimal.ZERO;\n        BigDecimal acadRedondeo = BigDecimal.ZERO;\n        BigDecimal viduColones = BigDecimal.ZERO;\n        BigDecimal viduMillonesColones = BigDecimal.ZERO;\n        BigDecimal viduRedondeo = BigDecimal.ZERO;\n        BigDecimal admColones = BigDecimal.ZERO;\n        BigDecimal admMillonesColones = BigDecimal.ZERO;\n        BigDecimal admRedondeo = BigDecimal.ZERO;\n        BigDecimal totalColones = BigDecimal.ZERO;\n        BigDecimal totalMillonesColones = BigDecimal.ZERO;\n        BigDecimal totalRedondeo = BigDecimal.ZERO;\n\n        List&lt;BigDecimal> totales = new ArrayList&lt;BigDecimal>();\n        for (VistaPOAIMetaFondoCuentaPresupuestaria detalle : listaVistaPOAIMetaFondoCuentaPresupuestaria) {\n            if (detalle.getCodigoProgramaPresupuestario().equals(\"ACAD\")){\n                acadColones = acadColones.add(detalle.getColones());\n                acadMillonesColones = acadMillonesColones.add(detalle.getMillonesColones());\n                acadRedondeo = acadRedondeo.add(detalle.getRedondeo());\n            }\n            if (detalle.getCodigoProgramaPresupuestario().equals(\"VID_U\")){\n                viduColones = viduColones.add(detalle.getColones());\n                viduMillonesColones = viduMillonesColones.add(detalle.getMillonesColones());\n                viduRedondeo = viduRedondeo.add(detalle.getRedondeo());\n            }\n            if (detalle.getCodigoProgramaPresupuestario().equals(\"ADM\")){\n                admColones = admColones.add(detalle.getColones());\n                admMillonesColones = admMillonesColones.add(detalle.getMillonesColones());\n                admRedondeo = admRedondeo.add(detalle.getRedondeo());\n            }\n        }\n        totalColones = totalColones.add(acadColones).add(viduColones).add(admColones);\n        totalMillonesColones = totalMillonesColones.add(acadMillonesColones).add(viduMillonesColones).add(admMillonesColones);\n        totalRedondeo = totalRedondeo.add(acadRedondeo).add(viduRedondeo).add(admRedondeo);\n\n        totales.add(acadColones);\n        totales.add(acadMillonesColones);\n        totales.add(acadRedondeo);\n        totales.add(viduColones);\n        totales.add(viduMillonesColones);\n        totales.add(viduRedondeo);\n        totales.add(admColones);\n        totales.add(admMillonesColones);\n        totales.add(admRedondeo);\n        totales.add(totalColones);\n        totales.add(totalMillonesColones);\n        totales.add(totalRedondeo);\n\n        return totales;\n    }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">VistaPOAIMetaFondoCuentaPresupuestariaBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos las variables necesarias<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>private BigDecimal colonesProgramaAcademico, colonesProgramaVidaUniversitaria, colonesProgramaAdministrativo, totalColones, millonesColonesProgramaAcademico, millonesColonesProgramaVidaUniversitaria, millonesColonesProgramaAdministrativo, totalMillonesColones, redondeoProgramaAcademico, redondeoProgramaVidaUniversitaria, redondeoProgramaAdministrativo, totalRedondeo;\n\nList&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaTotales = new ArrayList();<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y los respectivos get y set&#8217;s<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public BigDecimal getColonesProgramaAcademico() {\n        return colonesProgramaAcademico;\n    }\n\n    public void setColonesProgramaAcademico(BigDecimal colonesProgramaAcademico) {\n        this.colonesProgramaAcademico = colonesProgramaAcademico;\n    }\n\n    public BigDecimal getColonesProgramaVidaUniversitaria() {\n        return colonesProgramaVidaUniversitaria;\n    }\n\n    public void setColonesProgramaVidaUniversitaria(BigDecimal colonesProgramaVidaUniversitaria) {\n        this.colonesProgramaVidaUniversitaria = colonesProgramaVidaUniversitaria;\n    }\n\n    public BigDecimal getColonesProgramaAdministrativo() {\n        return colonesProgramaAdministrativo;\n    }\n\n    public void setColonesProgramaAdministrativo(BigDecimal colonesProgramaAdministrativo) {\n        this.colonesProgramaAdministrativo = colonesProgramaAdministrativo;\n    }\n\n    public BigDecimal getTotalColones() {\n        return totalColones;\n    }\n\n    public void setTotalColones(BigDecimal totalColones) {\n        this.totalColones = totalColones;\n    }\n\n    public BigDecimal getMillonesColonesProgramaAcademico() {\n        return millonesColonesProgramaAcademico;\n    }\n\n    public void setMillonesColonesProgramaAcademico(BigDecimal millonesColonesProgramaAcademico) {\n        this.millonesColonesProgramaAcademico = millonesColonesProgramaAcademico;\n    }\n\n    public BigDecimal getMillonesColonesProgramaVidaUniversitaria() {\n        return millonesColonesProgramaVidaUniversitaria;\n    }\n\n    public void setMillonesColonesProgramaVidaUniversitaria(BigDecimal millonesColonesProgramaVidaUniversitaria) {\n        this.millonesColonesProgramaVidaUniversitaria = millonesColonesProgramaVidaUniversitaria;\n    }\n\n    public BigDecimal getMillonesColonesProgramaAdministrativo() {\n        return millonesColonesProgramaAdministrativo;\n    }\n\n    public void setMillonesColonesProgramaAdministrativo(BigDecimal millonesColonesProgramaAdministrativo) {\n        this.millonesColonesProgramaAdministrativo = millonesColonesProgramaAdministrativo;\n    }\n\n    public BigDecimal getTotalMillonesColones() {\n        return totalMillonesColones;\n    }\n\n    public void setTotalMillonesColones(BigDecimal totalMillonesColones) {\n        this.totalMillonesColones = totalMillonesColones;\n    }\n\n    public BigDecimal getRedondeoProgramaAcademico() {\n        return redondeoProgramaAcademico;\n    }\n\n    public void setRedondeoProgramaAcademico(BigDecimal redondeoProgramaAcademico) {\n        this.redondeoProgramaAcademico = redondeoProgramaAcademico;\n    }\n\n    public BigDecimal getRedondeoProgramaVidaUniversitaria() {\n        return redondeoProgramaVidaUniversitaria;\n    }\n\n    public void setRedondeoProgramaVidaUniversitaria(BigDecimal redondeoProgramaVidaUniversitaria) {\n        this.redondeoProgramaVidaUniversitaria = redondeoProgramaVidaUniversitaria;\n    }\n\n    public BigDecimal getRedondeoProgramaAdministrativo() {\n        return redondeoProgramaAdministrativo;\n    }\n\n    public void setRedondeoProgramaAdministrativo(BigDecimal redondeoProgramaAdministrativo) {\n        this.redondeoProgramaAdministrativo = redondeoProgramaAdministrativo;\n    }\n\n    public BigDecimal getTotalRedondeo() {\n        return totalRedondeo;\n    }\n\n    public void setTotalRedondeo(BigDecimal totalRedondeo) {\n        this.totalRedondeo = totalRedondeo;\n    }\n\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> getListaTotales() {\n        return listaTotales;\n    }\n\n    public void setListaTotales(List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaTotales) {\n        this.listaTotales = listaTotales;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y la funci\u00f3n que se encarga de realizar los calculos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>private void calcularTotales() {\n        List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaConTotales = new ArrayList();\n        List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional = service.getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(this.planOperativoAnualInstitucional);\n        if (listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional != null &amp;&amp; !listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional.isEmpty()) {\n            List&lt;BigDecimal> totales = service.calcularTotales(listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional);\n            VistaPOAIMetaFondoCuentaPresupuestaria vistaColonesTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();\n            vistaColonesTemporal.setTextoColones(\"Colones\");\n            vistaColonesTemporal.setProgramaAcademico(totales.get(0).toString(),false);\n            vistaColonesTemporal.setProgramaVidaUniversitaria(totales.get(3).toString(),false);\n            vistaColonesTemporal.setProgramaAdministrativo(totales.get(6).toString(),false);\n            vistaColonesTemporal.setProgramaTotal(totales.get(9).toString(),false);\n            listaConTotales.add(vistaColonesTemporal);\n\n            VistaPOAIMetaFondoCuentaPresupuestaria vistaMillonesTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();\n            vistaMillonesTemporal.setTextoMillones(\"Millones de Colones\");\n            vistaMillonesTemporal.setProgramaAcademico(totales.get(1).toString(),false);\n            vistaMillonesTemporal.setProgramaVidaUniversitaria(totales.get(4).toString(),false);\n            vistaMillonesTemporal.setProgramaAdministrativo(totales.get(7).toString(),false);\n            vistaMillonesTemporal.setProgramaTotal(totales.get(10).toString(),false);\n            listaConTotales.add(vistaMillonesTemporal);\n\n\n            VistaPOAIMetaFondoCuentaPresupuestaria vistaRedondeoTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();\n            vistaRedondeoTemporal.setTextoRedondeo(\"Redondeo\");\n            vistaRedondeoTemporal.setProgramaAcademico(totales.get(2).toString(),true);\n            vistaRedondeoTemporal.setProgramaVidaUniversitaria(totales.get(5).toString(),true);\n            vistaRedondeoTemporal.setProgramaAdministrativo(totales.get(8).toString(),true);\n            vistaRedondeoTemporal.setProgramaTotal(totales.get(11).toString(),true);\n            listaConTotales.add(vistaRedondeoTemporal);\n            \n            setListaTotales(listaConTotales);\n            \n\n        } else {\n            this.colonesProgramaAcademico = this.colonesProgramaVidaUniversitaria = this.colonesProgramaAdministrativo = this.totalColones = this.millonesColonesProgramaAcademico = this.millonesColonesProgramaVidaUniversitaria = this.millonesColonesProgramaAdministrativo = this.totalMillonesColones = this.redondeoProgramaAcademico = this.redondeoProgramaVidaUniversitaria = this.redondeoProgramaAdministrativo = this.totalRedondeo = BigDecimal.ZERO;\n        }\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y en initDetails indicamos que se realice el calculo<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void initDetails() {\n        if (!isPostBack()) {\n            \/\/ cuando inicia cargamos el primero POAI Activo\n            this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());\n\n            \/\/ Realizar calculo de totales\n            calcularTotales();\n        }\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y tambien cuando se seta el POAI<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n\n        \/\/ Limpiamos la especificaci\u00f3n\n        removeSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());\n\n        \/\/ Si el POAI es diferente de null\n        if (planOperativoAnualInstitucional != null) {\n\n            \/\/ Agregamos la especificaci\u00f3n\n            addSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);\n        }\n\n        \/\/ Actualizamos la variable\n        this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;\n\n        \/\/ Realizar calculo de totales\n        this.calcularTotales();\n\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/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\/*********************       PACKAGE     ******************************\/\n\/**********************************************************************\/\npackage cr.ac.una.cgi.sigesa.ppi.ppo.view.model;\n\n\n\/**********************************************************************\/\n\/*********************       IMPORT'S    ******************************\/\n\/**********************************************************************\/\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport javax.annotation.PostConstruct;\n\nimport org.springframework.context.annotation.Scope;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.Pageable;\nimport org.springframework.stereotype.Component;\n\nimport cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;\nimport cr.ac.una.cgi.sdkuna.api.filter.LogicFunction;\nimport cr.ac.una.cgi.sdkuna.api.filter.Operator;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUD;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;\nimport cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;\nimport cr.ac.una.cgi.sigesa.epf.bco.service.MonedaService;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaFUCCMetaPOAI;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;\nimport cr.ac.una.cgi.sigesa.ppi.ppo.service.VistaPOAIMetaFondoCuentaPresupuestariaService;\nimport org.springframework.beans.factory.annotation.Autowired;\n\n\/**********************************************************************\/\n\/*********************    DOCUMENTACI\u00d3N  ******************************\/\n\/**********************************************************************\/\n\/**\n * Spring Bean Session para la administraci\u00f3n de la entidad {@link VistaPOAIMetaFondoCuentaPresupuestaria}\n *\n * @author Gustavo Matamoros Gonz\u00e1lez\n * @since 28\/09\/2023\n * @version: 1.0.0\n * @bug: PPI-432\n *\/\n\n\n\/**********************************************************************\/\n\/****************    DEFINICI\u00d3N DE CLASE  *****************************\/\n\/**********************************************************************\/\n@Component\n@Scope(\"session\")\npublic class VistaPOAIMetaFondoCuentaPresupuestariaBean extends CRUDImpl&lt;VistaPOAIMetaFondoCuentaPresupuestaria, VistaPOAIMetaFondoCuentaPresupuestariaService> implements CRUD {\n    \n    \/**********************************************************************\/\n    \/****************        AUTOWIRED'S      *****************************\/\n    \/**********************************************************************\/\n    @Autowired\n    MonedaService monedaService;\n    \n    \/**********************************************************************\/\n    \/****************       VARIABLES         *****************************\/\n    \/**********************************************************************\/\n    private PlanOperativoAnualInstitucional planOperativoAnualInstitucional;\n    \n    private BigDecimal colonesProgramaAcademico, colonesProgramaVidaUniversitaria, colonesProgramaAdministrativo, totalColones, millonesColonesProgramaAcademico, millonesColonesProgramaVidaUniversitaria, millonesColonesProgramaAdministrativo, totalMillonesColones, redondeoProgramaAcademico, redondeoProgramaVidaUniversitaria, redondeoProgramaAdministrativo, totalRedondeo;\n\n    List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaTotales = new ArrayList();\n\n\n    \/**********************************************************************\/\n    \/****************         M\u00c9TODOS         *****************************\/\n    \/**********************************************************************\/\n    @PostConstruct\n    public void init() {\n        List&lt;CRUDColumn> columns = new ArrayList&lt;>();\n\n        CRUDColumn column1  = new CRUDColumn(\"codigoProgramaPresupuestario\", getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioCodigo_header\"),      true);\n        CRUDColumn column2  = new CRUDColumn(\"nombreProgramaPresupuestario\", getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioNombre_header\"),      true);         \n        CRUDColumn column3  = new CRUDColumn(\"codigoObjetivoPOAI\",           getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAICodigo_header\"),                true);         \n        CRUDColumn column4  = new CRUDColumn(\"descripcionObjetivoPOAI\",      getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAIDescripcion_header\"),           true);\n        CRUDColumn column5  = new CRUDColumn(\"codigoMetaPOAI\",               getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAICodigo_header\"),                    true);\n        CRUDColumn column6  = new CRUDColumn(\"descripcionMetaPOAI\",          getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAIDescripcion_header\"),               true);\n        CRUDColumn column7  = new CRUDColumn(\"codigoFondo\",                  getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_fondoCodigo_header\"),                       true);\n        CRUDColumn column8  = new CRUDColumn(\"nombreFondo\",                  getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_fondoNombre_header\"),                       true);\n        CRUDColumn column9  = new CRUDColumn(\"codigoCuentaPresupuestaria\",   getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupCodigo_header\"),                true);\n        CRUDColumn column10 = new CRUDColumn(\"nombreCuentaPresupuestaria\",   getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupNombre_header\"),                true);\n        CRUDColumn column11 = new CRUDColumn(\"tipoPresupuesto\",              getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_tipoCuenta_header\"),                        true);\n        CRUDColumn column12 = new CRUDColumn(\"colones\",                      getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoColones_header\"),       true, \"\", true, \"\u00a4#,##0.00\",    \"currency\", monedaService.getSimboloLocal());\n        CRUDColumn column13 = new CRUDColumn(\"millonesColones\",              getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoMillones_header\"),      true, \"\", true, \"\u00a4#,##0.00\",    \"currency\", monedaService.getSimboloLocal());\n        CRUDColumn column14 = new CRUDColumn(\"redondeo\",                     getI18n(\"VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoRedondeo_header\"),      true, \"\", true, \"\u00a4#,##0\",       \"currency\", monedaService.getSimboloLocal());\n\n\n\n        columns.add(column1);\n        columns.add(column2);\n        columns.add(column3);\n        columns.add(column4);\n        columns.add(column5);\n        columns.add(column6);\n        columns.add(column7);\n        columns.add(column8);\n        columns.add(column9);\n        columns.add(column10);\n        columns.add(column11);\n        columns.add(column12);\n        columns.add(column13);\n        columns.add(column14);\n\n        this.setTableColumns(columns);\n    }\n\n    public void initDetails() {\n        if (!isPostBack()) {\n            \/\/ cuando inicia cargamos el primero POAI Activo\n            this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());\n\n            \/\/ Realizar calculo de totales\n            calcularTotales();\n        }\n    }\n    \n    public Page&lt;PlanOperativoAnualInstitucional> completePlanOperativoAnualInstitucional(String query, Pageable pageable) {\n        ArrayList&lt;FilterSpecification> filterSpecifications = new ArrayList&lt;FilterSpecification>();\n        return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);\n    }\n\n    public void handleClearPlanOperativoAnualInstitucional() {\n        \n    }\n\n    public void handlePOAIItemSelectEvent() {\n        \n    }\n\n    public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {\n        return this.planOperativoAnualInstitucional;\n    }\n\n    public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {\n\n        \/\/ Limpiamos la especificaci\u00f3n\n        removeSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());\n\n        \/\/ Si el POAI es diferente de null\n        if (planOperativoAnualInstitucional != null) {\n\n            \/\/ Agregamos la especificaci\u00f3n\n            addSpecification(\"planOperativoAnualInstitucional\", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);\n        }\n\n        \/\/ Actualizamos la variable\n        this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;\n\n        \/\/ Realizar calculo de totales\n        this.calcularTotales();\n\n    }\n   \n    public BigDecimal getColonesProgramaAcademico() {\n        return colonesProgramaAcademico;\n    }\n\n    public void setColonesProgramaAcademico(BigDecimal colonesProgramaAcademico) {\n        this.colonesProgramaAcademico = colonesProgramaAcademico;\n    }\n\n    public BigDecimal getColonesProgramaVidaUniversitaria() {\n        return colonesProgramaVidaUniversitaria;\n    }\n\n    public void setColonesProgramaVidaUniversitaria(BigDecimal colonesProgramaVidaUniversitaria) {\n        this.colonesProgramaVidaUniversitaria = colonesProgramaVidaUniversitaria;\n    }\n\n    public BigDecimal getColonesProgramaAdministrativo() {\n        return colonesProgramaAdministrativo;\n    }\n\n    public void setColonesProgramaAdministrativo(BigDecimal colonesProgramaAdministrativo) {\n        this.colonesProgramaAdministrativo = colonesProgramaAdministrativo;\n    }\n\n    public BigDecimal getTotalColones() {\n        return totalColones;\n    }\n\n    public void setTotalColones(BigDecimal totalColones) {\n        this.totalColones = totalColones;\n    }\n\n    public BigDecimal getMillonesColonesProgramaAcademico() {\n        return millonesColonesProgramaAcademico;\n    }\n\n    public void setMillonesColonesProgramaAcademico(BigDecimal millonesColonesProgramaAcademico) {\n        this.millonesColonesProgramaAcademico = millonesColonesProgramaAcademico;\n    }\n\n    public BigDecimal getMillonesColonesProgramaVidaUniversitaria() {\n        return millonesColonesProgramaVidaUniversitaria;\n    }\n\n    public void setMillonesColonesProgramaVidaUniversitaria(BigDecimal millonesColonesProgramaVidaUniversitaria) {\n        this.millonesColonesProgramaVidaUniversitaria = millonesColonesProgramaVidaUniversitaria;\n    }\n\n    public BigDecimal getMillonesColonesProgramaAdministrativo() {\n        return millonesColonesProgramaAdministrativo;\n    }\n\n    public void setMillonesColonesProgramaAdministrativo(BigDecimal millonesColonesProgramaAdministrativo) {\n        this.millonesColonesProgramaAdministrativo = millonesColonesProgramaAdministrativo;\n    }\n\n    public BigDecimal getTotalMillonesColones() {\n        return totalMillonesColones;\n    }\n\n    public void setTotalMillonesColones(BigDecimal totalMillonesColones) {\n        this.totalMillonesColones = totalMillonesColones;\n    }\n\n    public BigDecimal getRedondeoProgramaAcademico() {\n        return redondeoProgramaAcademico;\n    }\n\n    public void setRedondeoProgramaAcademico(BigDecimal redondeoProgramaAcademico) {\n        this.redondeoProgramaAcademico = redondeoProgramaAcademico;\n    }\n\n    public BigDecimal getRedondeoProgramaVidaUniversitaria() {\n        return redondeoProgramaVidaUniversitaria;\n    }\n\n    public void setRedondeoProgramaVidaUniversitaria(BigDecimal redondeoProgramaVidaUniversitaria) {\n        this.redondeoProgramaVidaUniversitaria = redondeoProgramaVidaUniversitaria;\n    }\n\n    public BigDecimal getRedondeoProgramaAdministrativo() {\n        return redondeoProgramaAdministrativo;\n    }\n\n    public void setRedondeoProgramaAdministrativo(BigDecimal redondeoProgramaAdministrativo) {\n        this.redondeoProgramaAdministrativo = redondeoProgramaAdministrativo;\n    }\n\n    public BigDecimal getTotalRedondeo() {\n        return totalRedondeo;\n    }\n\n    public void setTotalRedondeo(BigDecimal totalRedondeo) {\n        this.totalRedondeo = totalRedondeo;\n    }\n\n    public List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> getListaTotales() {\n        return listaTotales;\n    }\n\n    public void setListaTotales(List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaTotales) {\n        this.listaTotales = listaTotales;\n    }\n\n    private void calcularTotales() {\n        List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaConTotales = new ArrayList();\n        List&lt;VistaPOAIMetaFondoCuentaPresupuestaria> listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional = service.getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(this.planOperativoAnualInstitucional);\n        if (listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional != null &amp;&amp; !listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional.isEmpty()) {\n            List&lt;BigDecimal> totales = service.calcularTotales(listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional);\n            VistaPOAIMetaFondoCuentaPresupuestaria vistaColonesTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();\n            vistaColonesTemporal.setTextoColones(\"Colones\");\n            vistaColonesTemporal.setProgramaAcademico(totales.get(0).toString(),false);\n            vistaColonesTemporal.setProgramaVidaUniversitaria(totales.get(3).toString(),false);\n            vistaColonesTemporal.setProgramaAdministrativo(totales.get(6).toString(),false);\n            vistaColonesTemporal.setProgramaTotal(totales.get(9).toString(),false);\n            listaConTotales.add(vistaColonesTemporal);\n\n            VistaPOAIMetaFondoCuentaPresupuestaria vistaMillonesTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();\n            vistaMillonesTemporal.setTextoMillones(\"Millones de Colones\");\n            vistaMillonesTemporal.setProgramaAcademico(totales.get(1).toString(),false);\n            vistaMillonesTemporal.setProgramaVidaUniversitaria(totales.get(4).toString(),false);\n            vistaMillonesTemporal.setProgramaAdministrativo(totales.get(7).toString(),false);\n            vistaMillonesTemporal.setProgramaTotal(totales.get(10).toString(),false);\n            listaConTotales.add(vistaMillonesTemporal);\n\n\n            VistaPOAIMetaFondoCuentaPresupuestaria vistaRedondeoTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();\n            vistaRedondeoTemporal.setTextoRedondeo(\"Redondeo\");\n            vistaRedondeoTemporal.setProgramaAcademico(totales.get(2).toString(),true);\n            vistaRedondeoTemporal.setProgramaVidaUniversitaria(totales.get(5).toString(),true);\n            vistaRedondeoTemporal.setProgramaAdministrativo(totales.get(8).toString(),true);\n            vistaRedondeoTemporal.setProgramaTotal(totales.get(11).toString(),true);\n            listaConTotales.add(vistaRedondeoTemporal);\n            \n            setListaTotales(listaConTotales);\n            \n\n        } else {\n            this.colonesProgramaAcademico = this.colonesProgramaVidaUniversitaria = this.colonesProgramaAdministrativo = this.totalColones = this.millonesColonesProgramaAcademico = this.millonesColonesProgramaVidaUniversitaria = this.millonesColonesProgramaAdministrativo = this.totalMillonesColones = this.redondeoProgramaAcademico = this.redondeoProgramaVidaUniversitaria = this.redondeoProgramaAdministrativo = this.totalRedondeo = BigDecimal.ZERO;\n        }\n    }\n    \n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">vistaPOAIMetaFondoCuentaPresupuestariaListForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Despues del panelGrid de autocomplete y antes de la vista agregamos un nuevo panel que presente la informaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--Sumatorias de los FUCC-->\n        &lt;p:panelGrid columns=\"1\" styleClass=\"una-panelgrid\">        \n            &lt;p:outputPanel id=\"VistaPOAIMetaFondoCuentaPresupuestariaOutputPanel\"> \n                 &lt;p:dataTable var=\"vista\" value=\"#{VistaPOAIMetaFondoCuentaPresupuestariaBean.listaTotales}\">\n                     &lt;p:column>\n                         &lt;h:outputText value=\"#{vista.indicador}\" \/>\n                     &lt;\/p:column>\n\n                     &lt;p:column headerText=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_programaAcademico_label}\" style=\"font-weight:bold\">\n                         &lt;h:outputText value=\"#{vista.programaAcademico}\" \/>\n                     &lt;\/p:column>\n\n                     &lt;p:column headerText=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_programaVidaUniversitaria_label}\" style=\"font-weight:bold\">\n                         &lt;h:outputText value=\"#{vista.programaVidaUniversitaria}\" \/>\n                     &lt;\/p:column>\n\n                     &lt;p:column headerText=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_programaAdministrativo_label}\" style=\"font-weight:bold\">\n                         &lt;h:outputText value=\"#{vista.programaAdministrativo}\" \/>\n                     &lt;\/p:column>\n\n                     &lt;p:column headerText=\"#{i18n.VistaPOAIMetaFondoCuentaPresupuestaria_total_label}\" style=\"font-weight:bold\">\n                         &lt;h:outputText value=\"#{vista.programaTotal}\" \/>  \n                     &lt;\/p:column>\n                 &lt;\/p:dataTable>\n\n             &lt;\/p:outputPanel>\n        &lt;\/p:panelGrid><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Descripci\u00f3n Notas: VistaPOAIMetaFondoCuentaPresupuestariaCreate.sql VistaPOAIMetaFondoCuentaPresupuestariaI18n.sql DOMAIN JPA: VistaPOAIMetaFondoCuentaPresupuestaria.java VistaPOAIMetaFondoCuentaPresupuestariaRepository.java Service: VistaPOAIMetaFondoCuentaPresupuestariaService.java Notas VistaPOAIMetaFondoCuentaPresupuestariaServiceImpl.java Notas VistaPOAIMetaFondoCuentaPresupuestariaBean.java Notas ListForm: vistaPOAIMetaFondoCuentaPresupuestariaListForm.xhtml Registramos el recurso en SIGESA en Desarrollo y Producci\u00f3n PENDIENTE: PRODUCCI\u00d6N Creamos el men\u00fa Vista visible Agregar filtro 1.Cargar el Primer POAI Activo 2: Crear Autocomplete NOTAS: 3. Crear LOV NOTAS: Continuamos 4. filtrar vista Tabla de Totales [&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":[572,445],"class_list":["post-15759","post","type-post","status-publish","format-standard","hentry","category-sigesa","tag-con-filtro","tag-vista"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/15759","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=15759"}],"version-history":[{"count":31,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/15759\/revisions"}],"predecessor-version":[{"id":15799,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/15759\/revisions\/15799"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}