{"id":15614,"date":"2023-09-13T13:27:09","date_gmt":"2023-09-13T19:27:09","guid":{"rendered":"https:\/\/sada.services\/?p=15614"},"modified":"2023-09-20T10:57:48","modified_gmt":"2023-09-20T16:57:48","slug":"sigesa-crear-datable-para-presupuestos-formulados","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=15614","title":{"rendered":"SIGESA: Crear Datable Para Presupuestos Formulados"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">PlanOperativoAnualInstitucionalService.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se crean las definiciones de las funciones que obtienen los programas presupuestarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n         * Retorna el Programa Presupuestario Academico\n         * \n         * @author Gustavo Matamoros Gonz\u00e1lez\n         * @issue BTPPI-276 11\/09\/2023\n         * @return {@link ProgramaPresupuestario}\n         *\/\n        public ProgramaPresupuestario findProgramaPresupuestarioAcademico();\n\n        \/**\n         * Retorna el Programa Presupuestario Vida Estudiantil\n         * \n         * @author Gustavo Matamoros Gonz\u00e1lez\n         * @issue BTPPI-276 11\/09\/2023\n         * @return {@link ProgramaPresupuestario}\n         *\/\n        public ProgramaPresupuestario findProgramaPresupuestarioVidaUniversitaria();\n\n        \/**\n         * Retorna el Programa Presupuestario Administrativo\n         * \n         * @author Gustavo Matamoros Gonz\u00e1lez\n         * @issue BTPPI-276 11\/09\/2023\n         * @return {@link ProgramaPresupuestario}\n         *\/\n        public ProgramaPresupuestario findProgramaPresupuestarioAdministrativo();<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PlanOperativoAnualInstitucionalServiceImpl.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se crean los servicios necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**     \n     * Ver {@link PlanOperativoAnualInstitucionalService#findProgramaPresupuestarioAcademico()} \n     *\/\n    @Override\n    public ProgramaPresupuestario findProgramaPresupuestarioAcademico() {\n        return programaPresupuestarioService.getProgramaPresupuestarioAcademico();\n    }\n\n    \/**     \n    * Ver {@link PlanOperativoAnualInstitucionalService#findProgramaPresupuestarioVidaUniversitaria()} \n    *\/\n    @Override\n    public ProgramaPresupuestario findProgramaPresupuestarioVidaUniversitaria() {\n        return programaPresupuestarioService.getProgramaPresupuestarioVidaEstudiantil();\n    }\n\n    \/**     \n    * Ver {@link PlanOperativoAnualInstitucionalService#findProgramaPresupuestarioAdministrativo()} \n    *\/\n    @Override\n    public ProgramaPresupuestario findProgramaPresupuestarioAdministrativo() {\n        return programaPresupuestarioService.getProgramaPresupuestarioAdministrativo();\n    }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">PlanOperativoAnualInstitucionalBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Primero al final de documento creamos un objeto especial para que sea mostrado en el datatable<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * Objeto para almacenar los Totales de los Presupuestos Formulados\n     * \n     * @author Gustavo Matamoros Gonz\u00e1lez\n     * @issue BTPPI-276 13\/09\/2023\n     * @return {@link ProgramaPresupuestario}\n     *\/\n    static public class TotalPresupuestoFormuladoModel implements Serializable {\n\n        private String titulo;\n        private BigDecimal colones;\n        private BigDecimal millones;\n        private BigDecimal redondeo;\n\n       \n        public TotalPresupuestoFormuladoModel() {\n\n        }\n\n        public TotalPresupuestoFormuladoModel(String titulo, BigDecimal colones) {\n            this.titulo = titulo;\n            this.colones = colones;\n            this.millones = colones.divide(new BigDecimal(\"1000000\"));\n            this.redondeo = colones.setScale(0, RoundingMode.HALF_UP);\n\n            \n        }\n\n        public void setTitulo(String titulo) {\n            this.titulo = titulo;\n        }\n\n        public String getTitulo() {\n            return titulo;\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 getMillones() {\n            return millones;\n        }\n\n        public void setMillones(BigDecimal millones) {\n            this.millones = millones;\n        }\n\n        public BigDecimal getRedondeo() {\n            return redondeo;\n        }\n\n        public void setRedondeo(BigDecimal redondeo) {\n            this.redondeo = redondeo;\n        }\n\n\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos los imports necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.math.RoundingMode;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos las variables necesarias<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Programas Presupuestarios\n    private ProgramaPresupuestario programaPresupuestarioAcademico;\n    private ProgramaPresupuestario programaPresupuestarioVidaUniversitaria;\n    private ProgramaPresupuestario programaPresupuestarioAdministrativo;\n\n    \/\/ Totales de Presupuestos Formulados\n    private BigDecimal totalPresupuestoFormulado;\n    private BigDecimal totalPresupuestoFormuladoAcademico;\n    private BigDecimal totalPresupuestoFormuladoVidaUniversitaria;\n    private BigDecimal totalPresupuestoFormuladoAdministrativo;\n    \n    \n    \/\/ Lista para desplegar en el data table de presupuestos formulados\n    private List&lt;TotalPresupuestoFormuladoModel&gt; listaDeTotalesPresupuestosFormulados;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y los set y gets necesarios<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code> public List&lt;TotalPresupuestoFormuladoModel&gt; getListaDeTotalesPresupuestosFormulados() {\n        return listaDeTotalesPresupuestosFormulados;\n    }\n\n    public void setListaDeTotalesPresupuestosFormulados(List&lt;TotalPresupuestoFormuladoModel&gt;listaDeTotalesPresupuestosFormulados) {\n        this.listaDeTotalesPresupuestosFormulados = listaDeTotalesPresupuestosFormulados;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora en el initDetails en la secci\u00f3n despu\u00e9s de isPostBack para que se repita siempre agregamos <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*****************************************************************************\/\n        \/\/ Calculo de totales de Presupuestos Formulados\n        \/*****************************************************************************\/\n\n        \/\/ Inicialiar variables\n        this.programaPresupuestarioAcademico = service.findProgramaPresupuestarioAcademico();\n        this.programaPresupuestarioVidaUniversitaria = service.findProgramaPresupuestarioVidaUniversitaria();\n        this.programaPresupuestarioAdministrativo = service.findProgramaPresupuestarioAdministrativo();\n\n        this.totalPresupuestoFormuladoAcademico = new BigDecimal(0);\n        this.totalPresupuestoFormuladoVidaUniversitaria = new BigDecimal(0);\n        this.totalPresupuestoFormuladoAdministrativo = new BigDecimal(0);\n        this.totalPresupuestoFormulado = new BigDecimal(0);\n        \n        \/\/ Recorrer las metas para sumar los presupuestos dependiendo del programa presupuestario\n        for (ObjetivoPoai objetivo : this.getEntity().getListaObjetivosPoai()) {\n            if (this.getProgramaPresupuestario().getId() != null) {\n                for (MetaPOAI meta : objetivo.getListaMetasPoai()) {\n                    if(objetivo.getProgramaPresupuestario().equals(this.programaPresupuestarioAcademico) &amp;&amp;  meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormuladoAcademico = this.totalPresupuestoFormuladoAcademico.add(meta.getPresupuestoFormulado());\n                    }else if(objetivo.getProgramaPresupuestario().equals(this.programaPresupuestarioVidaUniversitaria)  &amp;&amp;  meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormuladoVidaUniversitaria = this.totalPresupuestoFormuladoVidaUniversitaria.add(meta.getPresupuestoFormulado());\n                    }else if(objetivo.getProgramaPresupuestario().equals(this.programaPresupuestarioAdministrativo) &amp;&amp;  meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormuladoAdministrativo = this.totalPresupuestoFormuladoAdministrativo.add(meta.getPresupuestoFormulado());\n                    }\n                    \/\/ Total\n                    if(meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormulado = this.totalPresupuestoFormulado.add(meta.getPresupuestoFormulado());\n                    }\n                }\n            }\n        }\n\n        \/\/ agregar lso totales a la lista de ListaDeTotalesPresupuestosFormulados\n        this.setListaDeTotalesPresupuestosFormulados(new ArrayList());\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(this.getI18n(\"planOperativoAnualInstitucional_presupuestoFormuladoTabla_Total\"),this.totalPresupuestoFormulado));\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(programaPresupuestarioAcademico.getNombre(),this.totalPresupuestoFormuladoAcademico));\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(programaPresupuestarioVidaUniversitaria.getNombre(),this.totalPresupuestoFormuladoVidaUniversitaria));\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(programaPresupuestarioAdministrativo.getNombre(),this.totalPresupuestoFormuladoAdministrativo));<\/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>public void initDetails() {\n        if (!isPostBack()) {\n            \n            this.setListaEscenarioPresupuestarioSeleccionados(new ArrayList());\n            this.setListaAllEscenarioPresupuestarios(this.obtieneAllEscenarioPresupuestariosByPeriodoAnual());\n            \n            \/\/QUITAR ESTE SET DE ESTADO CUANDO EXISTA UN FLUJO\n            EstadoFormulacionPOAI estadoBorrador = service.obtenerEstadoFormulacionPOAIBorrador();\n            this.getEntity().setEstadoFormulacionPOAI(estadoBorrador);\n            \n            \n            this.getEntity().setListaPOAIEscenarios(pOAIEscenarioBean.setDetails(this.getEntity().getListaPOAIEscenarios()));\n            for (POAIEscenario poaiEscenario : this.getEntity().getListaPOAIEscenarios()) {\n                this.listaEscenarioPresupuestarioSeleccionados.add(poaiEscenario.getEscenarioPresupuestario());\n            }\n            pOAIEscenarioBean.init();\n            \n            \n        }\n\n        \/*****************************************************************************\/\n        \/\/ Calculo de totales de Presupuestos Formulados\n        \/*****************************************************************************\/\n\n        \/\/ Inicialiar variables\n        this.programaPresupuestarioAcademico = service.findProgramaPresupuestarioAcademico();\n        this.programaPresupuestarioVidaUniversitaria = service.findProgramaPresupuestarioVidaUniversitaria();\n        this.programaPresupuestarioAdministrativo = service.findProgramaPresupuestarioAdministrativo();\n\n        this.totalPresupuestoFormuladoAcademico = new BigDecimal(0);\n        this.totalPresupuestoFormuladoVidaUniversitaria = new BigDecimal(0);\n        this.totalPresupuestoFormuladoAdministrativo = new BigDecimal(0);\n        this.totalPresupuestoFormulado = new BigDecimal(0);\n        \n        \/\/ Recorrer las metas para sumar los presupuestos dependiendo del programa presupuestario\n        for (ObjetivoPoai objetivo : this.getEntity().getListaObjetivosPoai()) {\n            if (this.getProgramaPresupuestario().getId() != null) {\n                for (MetaPOAI meta : objetivo.getListaMetasPoai()) {\n                    if(objetivo.getProgramaPresupuestario().equals(this.programaPresupuestarioAcademico) &amp;&amp;  meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormuladoAcademico = this.totalPresupuestoFormuladoAcademico.add(meta.getPresupuestoFormulado());\n                    }else if(objetivo.getProgramaPresupuestario().equals(this.programaPresupuestarioVidaUniversitaria)  &amp;&amp;  meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormuladoVidaUniversitaria = this.totalPresupuestoFormuladoVidaUniversitaria.add(meta.getPresupuestoFormulado());\n                    }else if(objetivo.getProgramaPresupuestario().equals(this.programaPresupuestarioAdministrativo) &amp;&amp;  meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormuladoAdministrativo = this.totalPresupuestoFormuladoAdministrativo.add(meta.getPresupuestoFormulado());\n                    }\n                    \/\/ Total\n                    if(meta.getPresupuestoFormulado() != null){\n                        this.totalPresupuestoFormulado = this.totalPresupuestoFormulado.add(meta.getPresupuestoFormulado());\n                    }\n                }\n            }\n        }\n\n        \/\/ agregar lso totales a la lista de ListaDeTotalesPresupuestosFormulados\n        this.setListaDeTotalesPresupuestosFormulados(new ArrayList());\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(this.getI18n(\"planOperativoAnualInstitucional_presupuestoFormuladoTabla_Total\"),this.totalPresupuestoFormulado));\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(programaPresupuestarioAcademico.getNombre(),this.totalPresupuestoFormuladoAcademico));\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(programaPresupuestarioVidaUniversitaria.getNombre(),this.totalPresupuestoFormuladoVidaUniversitaria));\n        this.getListaDeTotalesPresupuestosFormulados().add(new TotalPresupuestoFormuladoModel(programaPresupuestarioAdministrativo.getNombre(),this.totalPresupuestoFormuladoAdministrativo));\n        \n    }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">planOperativoAnualInstitucionalEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eliminamos el c\u00f3digo anterior de presupuestos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- Presupuesto Formulado--&gt;\n                    &lt;p:outputLabel id=\"presupuestoFormuladoOutputLabel\" for=\"presupuestoFormuladoInputNumber\"\n                        value=\"#{i18n.planOperativoAnualInstitucional_presupuestoFormulado_label}\" \/&gt;\n                    &lt;p:outputPanel id=\"presupuestoFormuladoOutputPanel\"&gt;\n                        &lt;una:inputNumber id=\"presupuestoFormuladoInputNumber\"\n                            value=\"#{planOperativoAnualInstitucionalBean.entity.presupuestoFormulado}\"\n                            maxValue=\"9223372036854775807\" minValue=\"-9223372036854775807\" dir=\"RTL\" maxlength=\"50\"\n                            decimalPlaces=\"2\" overrideProperties=\"true\"&gt;\n                        &lt;\/una:inputNumber&gt;\n                        &lt;p:message id=\"presupuestoFormuladoMessage\" for=\"presupuestoFormuladoInputNumber\" \/&gt;\n                    &lt;\/p:outputPanel&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y agregamos el nuevo c\u00f3digo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>!-- Presupuesto Formulado-->\n            &lt;p:outputPanel id=\"presupuestoFormulado2OutputPanel\" >\n                &lt;p:fieldset legend=\"Presupuesto Formulado\" toggleable=\"false\" toggleSpeed=\"500\">\n                    &lt;p:ajax event=\"toggle\" \/>\n                        &lt;p:dataTable var=\"total\" id=\"presupuestoFormuladoDataTable\" value=\"#{planOperativoAnualInstitucionalBean.listaDeTotalesPresupuestosFormulados}\" styleClass=\"una-dataTablePresupuesto\">\n                                &lt;p:column headerText=\"#{i18n.planOperativoAnualInstitucional_presupuestoFormuladoTabla_descripcion}\" >\n                                    &lt;h:outputText value=\"#{total.titulo}\"\/>\n                                &lt;\/p:column>\n                                &lt;p:column headerText=\"#{i18n.planOperativoAnualInstitucional_presupuestoFormuladoTabla_colones}\">\n                                    &lt;h:outputText value=\"#{total.colones}\">\n                                        &lt;f:convertNumber pattern=\"\u20a1###,###.###\"\/>\n                                    &lt;\/h:outputText>\n                                &lt;\/p:column>\n                                &lt;p:column headerText=\"#{i18n.planOperativoAnualInstitucional_presupuestoFormuladoTabla_millonesColones}\">\n                                    &lt;h:outputText value=\"#{total.millones}\">\n                                        &lt;f:convertNumber pattern=\"\u20a1###,###.###\"\/>\n                                    &lt;\/h:outputText>\n                                &lt;\/p:column>\n                                &lt;p:column headerText=\"#{i18n.planOperativoAnualInstitucional_presupuestoFormuladoTabla_redondeo}\">\n                                    &lt;h:outputText value=\"#{total.redondeo}\">\n                                        &lt;f:convertNumber  pattern=\"\u20a1#,##0\"\/>\n                                    &lt;\/h:outputText>\n                                &lt;\/p:column>\n                            &lt;\/p:dataTable>\n                &lt;\/p:fieldset>\n                &lt;p:message id=\"presupuestoFormulado2Message\" for=\"presupuestoFormuladoDataTable\" \/>\n            &lt;\/p:outputPanel><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Finalmente agregamos las siguientes clases para darle el estilo necesario<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;style&gt;\n            .una-selectManyMenu{\n                width: 600px;\n            }\n            .una-dataTablePresupuesto table tr th {\n                background-color: #cdcdce;\n                font-weight: 600;\n                text-align: right;\n            }\n            .una-dataTablePresupuesto table tr th:first-child {\n                text-align: left;\n            }\n            .una-dataTablePresupuesto table tr td:first-child {\n                text-align: left;\n            }\n            .una-dataTablePresupuesto table tr td {\n                text-align: right;\n            }\n        &lt;\/style&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>PlanOperativoAnualInstitucionalService.java PlanOperativoAnualInstitucionalServiceImpl.java PlanOperativoAnualInstitucionalBean.java planOperativoAnualInstitucionalEditForm.xhtml<\/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":[562,560],"class_list":["post-15614","post","type-post","status-publish","format-standard","hentry","category-sigesa","tag-datable","tag-objeto"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/15614","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=15614"}],"version-history":[{"count":5,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/15614\/revisions"}],"predecessor-version":[{"id":15687,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/15614\/revisions\/15687"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}