Se requiere crear una consulta que muestre la distribución presupuestaria distribuida por el presupuesto institucional de las metas POAI.
Debe mostrar los siguientes campos:
Código programa presupuestario
Nombre Programa Presupuestario
Código de Objetivo POAI
Compuesto por la siguiente concatenación:
Código del programa presupuestario.
Para los códigos de objetivo y meta POAI debe usarse obligatoriamente 2 dígitos, rellenando con un cero a la izquierda los casos que sólo cuenten con un dígito.
Ejemplos: ACAD01, VID_U01 y ADM01
Descripción Objetivo POAI
Código de Meta POAI
Compuesto por la siguiente concatenación:
Código del programa presupuestario.
Código de objetivo POAI
Código de meta POAI
Para los códigos de objetivo y meta POAI debe usarse obligatoriamente 2 dígitos, rellenando con un cero a la izquierda los casos que sólo cuenten con un dígito.
Ejemplos: ACAD0101, VID_U0101 y ADM0101
Descripción Meta POAI
Código de fondo
Nombre de Fondo
Código de Cuenta Presupuestaria
Nombre de Cuenta Presupuestaria
Tipo de Presupuesto
Colones
Millones de Colones
Redondeo
La consulta debe indicar obligatoriamente la fecha y hora en que se generó y generarse en cualquier momento.
El único parámetro a utilizar es el Plan Operativo Anual Institucional.
Debe poder seleccionarse por una lista o directamente por el código
Usa el o los escenarios del POAI seleccionado para filtrar la información.
Debe aparecer debajo del parámetro las sumatorias de los presupuestos en los espacios:
Total en Colones
Total en Millones de Colones
Total Redondeado
Los montos deben estar justificados a la derecha con el siguiente formato ₡55 408,89 a excepción de los redondeados que no llevan decimales
Debe ser una tabla que permita seleccionar sus datos
Debe tener en negrita los Títulos de las columnas y las filas
Los montos no deben estar en negrita
Toda la consulta debe poder descargarse en excel.
Ver prototipo:
Se requiere crear una consulta que muestre todos los programas presupuestarios con su respectiva asignación de objetivos y metas POAI y distribución presupuestaria indicada en el prototipo.
Que tenga todos los campos que aparecen en el prototipo.
Debe mostrar el presupuesto formulado tanto en colones como en miles de colones (los miles de colones corresponde a los colones / 1000).
Debe mostrar una sumatoria de presupuesto formulado total general.
Se puede generar la consulta en cualquier momento.
La consulta debe indicar obligatoriamente la fecha y hora en que se generó.
El único parámetro a utilizar es el Plan Operativo Anual Institucional.
Toda la consulta debe poder descargarse en excel como muestra el prototipo.
Ver prototipo:
Creamos la consulta SQL
NOTA IMPORTANTE: las vista no llevan parámetros obtienen todos los datos a nivel de código se filtran
SELECT
ROWNUM AS ID,
POAI.ID_PLAN_OPERATIVO_ANUAL_INST AS PLAN_OPERATIVO_ANUAL_INST,
PP.CODIGO AS CODIGO_PROGRAMA_PRESUPUESTARIO,
PP.NOMBRE AS NOMBRE_PROGRAMA_PRESUPUESTARIO,
CONCAT(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,
OP.DESCRIPCION AS DESCRIPCION_OBJETIVO_POAI,
CONCAT(
CONCAT(
PP.CODIGO,
CASE WHEN OP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(OP.CODIGO),2,'0') ELSE TO_CHAR(OP.CODIGO) END),
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,
MP.DESCRIPCION AS DESCRIPCION_META_POAI,
F.CODIGO AS CODIGO_FONDO,
F.NOMBRE AS NOMBRE_FONDO,
CP.CODIGO AS CODIGO_CUENTA_PRESUPUESTARIA,
CP.NOMBRE AS NOMBRE_CUENTA_PRESUPUESTARIA,
TP.NOMBRE AS TIPO_PRESUPUESTO,
MPP.MONTO AS COLONES,
ROUND((MPP.MONTO/1000000),2) AS MILLONES_COLONES,
CEIL(MPP.MONTO) AS REDONDEO
FROM PPI.META_POAI MP
INNER JOIN PPI.OBJETIVO_POAI OP ON(OP.ID_OBJETIVO_POAI = MP.OBJETIVO_POAI)
INNER JOIN PPI.PLAN_OPERATIVO_ANUAL_INST POAI ON(POAI.ID_PLAN_OPERATIVO_ANUAL_INST = OP.PLAN_OPERATIVO_ANUAL_INST)
INNER JOIN EPF.PROGRAMA_PRESUPUESTARIO PP ON(PP.ID_PROGRAMA_PRESUPUESTARIO = OP.PROGRAMA_PRESUPUESTARIO)
INNER JOIN PPI.META_POAI_PRESUPUESTO MPP ON(MPP.META_POAI = MP.ID_META_POAI)
INNER JOIN EPF.FONDO F ON(F.ID_FONDO = MPP.FONDO)
INNER JOIN EPF.CUENTA_PRESUPUESTARIA CP ON(CP.ID_CUENTA_PRESUPUESTARIA = MPP.CUENTA_PRESUPUESTARIA)
INNER JOIN EPF.TIPO_PRESUPUESTO TP ON(TP.ID_TIPO_PRESUPUESTO = CP.TIPO_PRESUPUESTO)
ORDER BY
PP.CODIGO,
PP.NOMBRE,
OP.CODIGO,
OP.DESCRIPCION,
MP.CODIGO,
MP.DESCRIPCION,
F.CODIGO,
F.NOMBRE,
CP.CODIGO,
CP.NOMBRE,
TP.NOMBRE;
Notas:
Podemos observar que estamos agregando el numero de fila para que funcione como ID
ROWNUM AS ID,
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
POAI.ID_PLAN_OPERATIVO_ANUAL_INST AS PLAN_OPERATIVO_ANUAL_INST,
VistaPOAIMetaFondoCuentaPresupuestariaCreate.sql
Ahora debemos crear el siguiente archivo
Ubicación: PPI-PPO-> service -> src -> main -> resources -> sql
Para almacenar el respaldo de la creación de la vista
Le agregamos
/*
* Copyright (C) 2022.
*
* Centro de Gestion Informatica
* Direccion de Tecnologias de la Informacion y Comunicacion
* Universidad Nacional - Costa Rica
* http://www.una.ac.cr
*
*/
/********************************************************/
/********************************************************/
/* DOCUMENTACIÓN */
/********************************************************/
/********************************************************/
/**
* @author: Gustavo Matamoros González
* @since: 27/09/2023
* @bug: PPI-432
* @funcion: Obtener los programas presupuestarios, objetivos, metas, fondos, cuentas presupuestarias y presupuestos según un Plan Operativo Anual Institucional
*/
--MP: PPI.META_POAI
--OP: PPI.OBJETIVO_POAI
--POAI: PPI.PLAN_OPERATIVO_ANUAL_INST
--PP: EPF.PROGRAMA_PRESUPUESTARIO
--MPP: PPI.META_POAI_PRESUPUESTO
--F: EPF.FONDO
--CP: EPF.CUENTA_PRESUPUESTARIA
--TP: EPF.TIPO_PRESUPUESTO
/********************************************************/
/********************************************************/
/* ELIMINAR LA VISTA */
/********************************************************/
/********************************************************/
DROP PUBLIC SYNONYM VISTA_POAI_META_FONDO_CODIGO_PRESUP;
DROP VIEW PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP;
/********************************************************/
/********************************************************/
/* CREACIÓN DE LA VISTA */
/********************************************************/
/********************************************************/
CREATE OR REPLACE FORCE EDITIONABLE VIEW PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP AS
SELECT
ROWNUM AS ID,
POAI.ID_PLAN_OPERATIVO_ANUAL_INST AS PLAN_OPERATIVO_ANUAL_INST,
PP.CODIGO AS CODIGO_PROGRAMA_PRESUPUESTARIO,
PP.NOMBRE AS NOMBRE_PROGRAMA_PRESUPUESTARIO,
CONCAT(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,
OP.DESCRIPCION AS DESCRIPCION_OBJETIVO_POAI,
CONCAT(
CONCAT(
PP.CODIGO,
CASE WHEN OP.CODIGO BETWEEN 1 AND 9 THEN LPAD(TO_CHAR(OP.CODIGO),2,'0') ELSE TO_CHAR(OP.CODIGO) END),
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,
MP.DESCRIPCION AS DESCRIPCION_META_POAI,
F.CODIGO AS CODIGO_FONDO,
F.NOMBRE AS NOMBRE_FONDO,
CP.CODIGO AS CODIGO_CUENTA_PRESUPUESTARIA,
CP.NOMBRE AS NOMBRE_CUENTA_PRESUPUESTARIA,
TP.NOMBRE AS TIPO_PRESUPUESTO,
MPP.MONTO AS COLONES,
ROUND((MPP.MONTO/1000000),2) AS MILLONES_COLONES,
CEIL(MPP.MONTO) AS REDONDEO
FROM PPI.META_POAI MP
INNER JOIN PPI.OBJETIVO_POAI OP ON(OP.ID_OBJETIVO_POAI = MP.OBJETIVO_POAI)
INNER JOIN PPI.PLAN_OPERATIVO_ANUAL_INST POAI ON(POAI.ID_PLAN_OPERATIVO_ANUAL_INST = OP.PLAN_OPERATIVO_ANUAL_INST)
INNER JOIN EPF.PROGRAMA_PRESUPUESTARIO PP ON(PP.ID_PROGRAMA_PRESUPUESTARIO = OP.PROGRAMA_PRESUPUESTARIO)
INNER JOIN PPI.META_POAI_PRESUPUESTO MPP ON(MPP.META_POAI = MP.ID_META_POAI)
INNER JOIN EPF.FONDO F ON(F.ID_FONDO = MPP.FONDO)
INNER JOIN EPF.CUENTA_PRESUPUESTARIA CP ON(CP.ID_CUENTA_PRESUPUESTARIA = MPP.CUENTA_PRESUPUESTARIA)
INNER JOIN EPF.TIPO_PRESUPUESTO TP ON(TP.ID_TIPO_PRESUPUESTO = CP.TIPO_PRESUPUESTO)
ORDER BY
PP.CODIGO,
PP.NOMBRE,
OP.CODIGO,
OP.DESCRIPCION,
MP.CODIGO,
MP.DESCRIPCION,
F.CODIGO,
F.NOMBRE,
CP.CODIGO,
CP.NOMBRE,
TP.NOMBRE;
/********************************************************/
/********************************************************/
/* CREACIÓN DE SINONIMO */
/********************************************************/
/********************************************************/
CREATE PUBLIC SYNONYM VISTA_POAI_META_FONDO_CODIGO_PRESUP FOR PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP;
/********************************************************/
/********************************************************/
/* GRANT'S */
/********************************************************/
/********************************************************/
--GRANT TAB EPF TO PPI
GRANT SELECT, REFERENCES ON EPF.PROGRAMA_PRESUPUESTARIO TO PPI WITH GRANT OPTION;
GRANT SELECT, REFERENCES ON EPF.FONDO TO PPI WITH GRANT OPTION;
GRANT SELECT, REFERENCES ON EPF.CUENTA_PRESUPUESTARIA TO PPI WITH GRANT OPTION;
GRANT SELECT, REFERENCES ON EPF.TIPO_PRESUPUESTO TO PPI WITH GRANT OPTION;
--GRANT WWW_SIGESA / ANALISTA / ANALISTA_SIGESA
GRANT SELECT, REFERENCES ON PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP TO WWW_SIGESA;
GRANT SELECT, REFERENCES ON PPI.VISTA_POAI_META_FONDO_CODIGO_PRESUP TO ANALISTA, ANALISTA_SIGESA;
/********************************************************/
/********************************************************/
/* CONSULTAR VISTA */
/********************************************************/
/********************************************************/
SELECT * FROM VISTA_POAI_META_FONDO_CODIGO_PRESUP;
VistaPOAIMetaFondoCuentaPresupuestariaI18n.sql
Ahora debemos crear un script que inserte la internacionalización
/*
* Copyright (c) 2022.
*
* Centro de Gestion Informatica
* Direccion de Tecnologias de la Informacion y Comunicacion
* Universidad Nacional - Costa Rica
* http://www.una.ac.cr
*
*/
/**********************************************************************/
/********************* PACKAGE ******************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppo.repository;
/**********************************************************************/
/********************* IMPORT'S ******************************/
/**********************************************************************/
import java.util.List;
import org.springframework.stereotype.Repository;
import cr.ac.una.cgi.sdkuna.generic.GenericRepository;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;
/**********************************************************************/
/********************* DOCUMENTACIÓN ******************************/
/**********************************************************************/
/**
* Repository para la administración de la vista {@link VistaPOAIMetaFondoCuentaPresupuestaria}
*
* @author Gustavo Matamoros González
* @since: 28/09/2023
* @Version: 1.0.0
*/
/**********************************************************************/
/**************** DEFINICIÓN DE INTERFACE ************************/
/**********************************************************************/
@Repository
public interface VistaPOAIMetaFondoCuentaPresupuestariaRepository extends GenericRepository<VistaPOAIMetaFondoCuentaPresupuestaria> {
public List<VistaPOAIMetaFondoCuentaPresupuestaria> findByPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);
}
NOTA: aquí podemos observa que estamos agregando la funcion findByPlanOperativoAnualInstitucional para avanzar con el filtro
public List<VistaPOAIMetaFondoCuentaPresupuestaria> findByPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);
/*
* Copyright (c) 2022.
*
* Centro de Gestion Informatica
* Direccion de Tecnologias de la Informacion y Comunicacion
* Universidad Nacional - Costa Rica
* http://www.una.ac.cr
*
*/
/**********************************************************************/
/********************* PACKAGE ******************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppo.service;
/**********************************************************************/
/********************* IMPORT'S ******************************/
/**********************************************************************/
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import cr.ac.una.cgi.sdkuna.api.service.EntityService;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;
/**********************************************************************/
/********************* DOCUMENTACIÓN ******************************/
/**********************************************************************/
/**
* Interface para la administración de la vista {@link VistaPOAIMetaFondoCuentaPresupuestaria}
*
* @author Gustavo Matamoros González
* @since: 28/09/2023
* @Version: 1.0.0.
*/
/**********************************************************************/
/**************** DEFINICIÓN DE INTERFACE ************************/
/**********************************************************************/
public interface VistaPOAIMetaFondoCuentaPresupuestariaService extends EntityService<VistaPOAIMetaFondoCuentaPresupuestaria> {
/**
* Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.
* @return {@link PlanOperativoAnualInstitucional}
*/
public PlanOperativoAnualInstitucional primerPOAIActivo();
/**
* Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.
* @param query
* @param filterSpecifications
* @param pageable
* @return {@link Page<PlanOperativoAnualInstitucional>}
*/
public Page<PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable);
/**
* Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por parámetro.
*
* @param planOperativoAnualInstitucional
* @return List<VistaPOAIMetaFondoCuentaPresupuestaria>
*/
public List<VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);
}
Notas
Estamos agregando un método 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í los resgistros no se muestren todos cada vez que ingresa el usuario
/**
* Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.
* @return {@link PlanOperativoAnualInstitucional}
*/
public PlanOperativoAnualInstitucional primerPOAIActivo();
Creamos ademas un complete que obtenga todos los POAI que esten activos y los agrege al combobox
/**
* Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.
* @param query
* @param filterSpecifications
* @param pageable
* @return {@link Page<PlanOperativoAnualInstitucional>}
*/
public Page<PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable);
Y finalmente estamos agregando un método que va realizar el el filtro de los datos de la vista según el parametro del POAI
/**
* Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por parámetro.
*
* @param planOperativoAnualInstitucional
* @return List<VistaPOAIMetaFondoCuentaPresupuestaria>
*/
public List<VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);
/*
* Copyright (c) 2022.
*
* Centro de Gestion Informatica
* Direccion de Tecnologias de la Informacion y Comunicacion
* Universidad Nacional - Costa Rica
* http://www.una.ac.cr
*
*/
/**********************************************************************/
/********************* PACKAGE ******************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppo.service;
/**********************************************************************/
/********************* IMPORT'S ******************************/
/**********************************************************************/
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;
import cr.ac.una.cgi.sigesa.ppi.ppo.repository.VistaPOAIMetaFondoCuentaPresupuestariaRepository;
/**********************************************************************/
/********************* DOCUMENTACIÓN ******************************/
/**********************************************************************/
/**
* Clase que implementa el servicio {@link VistaPOAIMetaFondoCuentaPresupuestaria}
*
* @author: Gustavo Matamoros González
* @since: 28/09/2023
* @version: 1.0.0
*/
/**********************************************************************/
/**************** DEFINICIÓN DE CLASE *****************************/
/**********************************************************************/
@Service
@Transactional
public class VistaPOAIMetaFondoCuentaPresupuestariaServiceImpl extends EntityServiceImpl<VistaPOAIMetaFondoCuentaPresupuestaria, VistaPOAIMetaFondoCuentaPresupuestariaRepository> implements VistaPOAIMetaFondoCuentaPresupuestariaService {
/**********************************************************************/
/**************** AUTOWIRED'S *****************************/
/**********************************************************************/
@Autowired
PlanOperativoAnualInstitucionalService planOperativoAnualInstitucionalService;
/**********************************************************************/
/**************** MÉTODOS *****************************/
/**********************************************************************/
/**
* Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#primerPOAIActivo()}
* Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.
*/
@Override
public PlanOperativoAnualInstitucional primerPOAIActivo(){
return planOperativoAnualInstitucionalService.primerPOAIActivo();
}
/**
* Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#completePlanOperativoAnualInstitucional()}
* Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.
*/
@Override
public Page<PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable){
return planOperativoAnualInstitucionalService.obtenerPOAISinAnulados(query, filterSpecifications, pageable);
}
/**
* Ver
* {@link VistaPOAIMetaFondoCuentaPresupuestariaService#getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional)}
* Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por parámetro.
*/
@Override
public List<VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
return repository.findByPlanOperativoAnualInstitucional(planOperativoAnualInstitucional);
}
}
Notas
Ahora creamos ademas los métodos que utilizan el autowired de planOperativoAnualInstitucionalService y que obtiene el primerPOAIActivo y todos los POAI activos
/**
* Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#primerPOAIActivo()}
* Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.
*/
@Override
public PlanOperativoAnualInstitucional primerPOAIActivo(){
return planOperativoAnualInstitucionalService.primerPOAIActivo();
}
/**
* Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#completePlanOperativoAnualInstitucional()}
* Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.
*/
@Override
public Page<PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable){
return planOperativoAnualInstitucionalService.obtenerPOAISinAnulados(query, filterSpecifications, pageable);
}
Y el que utiliza el repository de la vista para filtrar los datos por POAI
/**
* Ver
* {@link VistaPOAIMetaFondoCuentaPresupuestariaService#getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional)}
* Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por parámetro.
*/
@Override
public List<VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
return repository.findByPlanOperativoAnualInstitucional(planOperativoAnualInstitucional);
}
VistaPOAIMetaFondoCuentaPresupuestariaBean.java
Ahora debemos crear el Bean
/*
* Copyright (c) 2022.
*
* Centro de Gestion Informatica
* Direccion de Tecnologias de la Informacion y Comunicacion
* Universidad Nacional - Costa Rica
* http://www.una.ac.cr
*
*/
/**********************************************************************/
/********************* PACKAGE ******************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppo.view.model;
/**********************************************************************/
/********************* IMPORT'S ******************************/
/**********************************************************************/
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import org.springframework.context.annotation.Scope;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import cr.ac.una.cgi.sdkuna.api.filter.LogicFunction;
import cr.ac.una.cgi.sdkuna.api.filter.Operator;
import cr.ac.una.cgi.sdkuna.view.commons.CRUD;
import cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;
import cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;
import cr.ac.una.cgi.sigesa.epf.bco.service.MonedaService;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;
import cr.ac.una.cgi.sigesa.ppi.ppo.service.VistaPOAIMetaFondoCuentaPresupuestariaService;
import org.springframework.beans.factory.annotation.Autowired;
/**********************************************************************/
/********************* DOCUMENTACIÓN ******************************/
/**********************************************************************/
/**
* Spring Bean Session para la administración de la entidad {@link VistaPOAIMetaFondoCuentaPresupuestaria}
*
* @author Gustavo Matamoros González
* @since 28/09/2023
* @version: 1.0.0
* @bug: PPI-432
*/
/**********************************************************************/
/**************** DEFINICIÓN DE CLASE *****************************/
/**********************************************************************/
@Component
@Scope("session")
public class VistaPOAIMetaFondoCuentaPresupuestariaBean extends CRUDImpl<VistaPOAIMetaFondoCuentaPresupuestaria, VistaPOAIMetaFondoCuentaPresupuestariaService> implements CRUD {
/**********************************************************************/
/**************** AUTOWIRED'S *****************************/
/**********************************************************************/
@Autowired
MonedaService monedaService;
/**********************************************************************/
/**************** VARIABLES *****************************/
/**********************************************************************/
private PlanOperativoAnualInstitucional planOperativoAnualInstitucional;
/**********************************************************************/
/**************** MÉTODOS *****************************/
/**********************************************************************/
@PostConstruct
public void init() {
List<CRUDColumn> columns = new ArrayList<>();
CRUDColumn column1 = new CRUDColumn("codigoProgramaPresupuestario", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioCodigo_header"), true);
CRUDColumn column2 = new CRUDColumn("nombreProgramaPresupuestario", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioNombre_header"), true);
CRUDColumn column3 = new CRUDColumn("codigoObjetivoPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAICodigo_header"), true);
CRUDColumn column4 = new CRUDColumn("descripcionObjetivoPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAIDescripcion_header"), true);
CRUDColumn column5 = new CRUDColumn("codigoMetaPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAICodigo_header"), true);
CRUDColumn column6 = new CRUDColumn("descripcionMetaPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAIDescripcion_header"), true);
CRUDColumn column7 = new CRUDColumn("codigoFondo", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_fondoCodigo_header"), true);
CRUDColumn column8 = new CRUDColumn("nombreFondo", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_fondoNombre_header"), true);
CRUDColumn column9 = new CRUDColumn("codigoCuentaPresupuestaria", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupCodigo_header"), true);
CRUDColumn column10 = new CRUDColumn("nombreCuentaPresupuestaria", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupNombre_header"), true);
CRUDColumn column11 = new CRUDColumn("tipoPresupuesto", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_tipoCuenta_header"), true);
CRUDColumn column12 = new CRUDColumn("colones", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoColones_header"), true, "", true, "¤#,##0.00", "currency", monedaService.getSimboloLocal());
CRUDColumn column13 = new CRUDColumn("millonesColones", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoMiles_header"), true, "", true, "¤#,##0.00", "currency", monedaService.getSimboloLocal());
CRUDColumn column14 = new CRUDColumn("redondeo", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoRedondeo_header"), true, "", true, "¤#,##0", "currency", monedaService.getSimboloLocal());
columns.add(column1);
columns.add(column2);
columns.add(column3);
columns.add(column4);
columns.add(column5);
columns.add(column6);
columns.add(column7);
columns.add(column8);
columns.add(column9);
columns.add(column10);
columns.add(column11);
columns.add(column12);
columns.add(column13);
columns.add(column14);
this.setTableColumns(columns);
}
public void initDetails() {
if (!isPostBack()) {
// cuando inicia cargamos el primero POAI Activo
this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());
}
}
public Page<PlanOperativoAnualInstitucional> completePlanOperativoAnualInstitucional(String query, Pageable pageable) {
ArrayList<FilterSpecification> filterSpecifications = new ArrayList<FilterSpecification>();
return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);
}
public void handleClearPlanOperativoAnualInstitucional() {
}
public void handlePOAIItemSelectEvent() {
}
public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {
return this.planOperativoAnualInstitucional;
}
public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
// Limpiamos la especificación
removeSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());
// Si el POAI es diferente de null
if (planOperativoAnualInstitucional != null) {
// Agregamos la especificación
addSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);
}
// Actualizamos la variable
this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;
}
}
Notas
Aquí en initDetails() estamos estableciendo que el primer POAI se va ser el primer POAI Activo
public void initDetails() {
if (!isPostBack()) {
this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());
}
}
Aquí estamos creando el metodo para manejar el complete del POAI
public Page<PlanOperativoAnualInstitucional> completePlanOperativoAnualInstitucional(String query, Pageable pageable) {
ArrayList<FilterSpecification> filterSpecifications = new ArrayList<FilterSpecification>();
return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);
}
Aquí 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
public void handleClearPlanOperativoAnualInstitucional() {
}
Aquí actualizamos la variable POAI
public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {
return this.planOperativoAnualInstitucional;
}
public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
// Limpiamos la especificación
removeSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());
// Si el POAI es diferente de null
if (planOperativoAnualInstitucional != null) {
// Agregamos la especificación
addSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);
}
// Actualizamos la variable
this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;
}
Nombre: /pages/vistaPOAIMetaFondoCuentaPresupuestariaListForm.xhtml
Tipo de recurso: Página
Visible: true
Secuencia: 1
Notas: PPI-PPO-POAI: Vista de POAI que presenta las metas con Fondo y Cuenta Presupuestaria
Estado: Activo
Le asignamos los roles de:
UNA_PPI_PPO_ANALISTA
UNA_PPI_PPO_CONSULTA
UNA_PPI_PPO_ADMIN
Creamos el menú
Buscamos
Lista de Menú
Datos:
Tipo de Menú: Crear menú de un menú padre
Menú: PPO - Consultas
Recurso: /pages/vistaPOAIMetaFondoCuentaPresupuestariaListForm.xhtml
Nombre: Consulta POAI: Fondos y Cuentas Presupuestarias por Metas POAI
Notas: PPI-PPO-POAI: Vista de POAI que presenta las metas con Fondo y Cuenta Presupuestaria
Estado: Activo
Secuencia: 1
Vista visible
Y con esto ya tendremos la vista funcionando
Agregar filtro
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
1.Cargar el Primer POAI Activo
SERVICE: Para esto el el service tenemos
/**
* Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.
* @return {@link PlanOperativoAnualInstitucional}
*/
public PlanOperativoAnualInstitucional primerPOAIActivo();
IMPLEMENT: tenemos
/**
* Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#primerPOAIActivo()}
* Retorna el primer Plan Operativo Anual Institucional que se encuentre guardado en estado Activo.
*/
@Override
public PlanOperativoAnualInstitucional primerPOAIActivo(){
return planOperativoAnualInstitucionalService.primerPOAIActivo();
}
BEAN: tenemos
public void initDetails() {
if (!isPostBack()) {
// cuando inicia cargamos el primero POAI Activo
this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());
}
}
XHTML:
Debemos agrega la siguiente instrucción que invoca a la función initDetails para que cargue el primer POAI Activo
/**
* Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.
* @param query
* @param filterSpecifications
* @param pageable
* @return {@link Page<PlanOperativoAnualInstitucional>}
*/
public Page<PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable);
IMPLEMENT: tenemos
/**
* Ver {@link VistaPOAIMetaFondoCuentaPresupuestariaService#completePlanOperativoAnualInstitucional()}
* Retorna los Planes Operativos Anuales Institucionales que no esten en Estado Anulado.
*/
@Override
public Page<PlanOperativoAnualInstitucional> completePOAISinAnulados(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable){
return planOperativoAnualInstitucionalService.obtenerPOAISinAnulados(query, filterSpecifications, pageable);
}
BEAN: tenemos la funcion que relaciona la pagina con el bean y servicio
public Page<PlanOperativoAnualInstitucional> completePlanOperativoAnualInstitucional(String query, Pageable pageable) {
ArrayList<FilterSpecification> filterSpecifications = new ArrayList<FilterSpecification>();
return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);
}
Que va a relacionar el autocomplete con la variable del Bean planOperativoAnualInstitucional
Y esto hacer que cuando se seleccione un dato se aplique el set de la variable en este caso
public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
// Limpiamos la especificación
removeSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());
// Si el POAI es diferente de null
if (planOperativoAnualInstitucional != null) {
// Agregamos la especificación
addSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);
}
// Actualizamos la variable
this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;
}
Ahora en el repository tenemos la función que revise el POAI y obtiene sus datos
public List<VistaPOAIMetaFondoCuentaPresupuestaria> findByPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);
Tenemos la definición del metdo que utiliza el repository para obtener los datos del plan
/**
* Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por parámetro.
*
* @param planOperativoAnualInstitucional
* @return List<VistaPOAIMetaFondoCuentaPresupuestaria>
*/
public List<VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional);
Agregamos
/**
* Retorna una lista de valores tipo BigDecimal con el cálculo de los valores para los totales
* de los Programas Académico, Vida Universitaria y Administrativo.
* @param listaVistaPOAIMetaFondoCuentaPresupuestaria
* @return List<BigDecimal>
*/
public List<BigDecimal> calcularTotales(List<VistaPOAIMetaFondoCuentaPresupuestaria> listaVistaPOAIMetaFondoCuentaPresupuestaria);
/**
* Ver
* {@link VistaPOAIMetaFondoCuentaPresupuestariaService#getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional)}
* Retorna una lista de elementos VistaPOAIMetaFondoCuentaPresupuestaria obtenida por la busqueda con PlanOperativoAnualInstitucional por parámetro.
*/
@Override
public List<VistaPOAIMetaFondoCuentaPresupuestaria> getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
return repository.findByPlanOperativoAnualInstitucional(planOperativoAnualInstitucional);
}
Agregamos la implementación del metodo que realiza el calculo
Y en initDetails indicamos que se realice el calculo
public void initDetails() {
if (!isPostBack()) {
// cuando inicia cargamos el primero POAI Activo
this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());
// Realizar calculo de totales
calcularTotales();
}
}
Y tambien cuando se seta el POAI
public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
// Limpiamos la especificación
removeSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());
// Si el POAI es diferente de null
if (planOperativoAnualInstitucional != null) {
// Agregamos la especificación
addSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);
}
// Actualizamos la variable
this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;
// Realizar calculo de totales
this.calcularTotales();
}
RESULTADO
/*
* Copyright (c) 2022.
*
* Centro de Gestion Informatica
* Direccion de Tecnologias de la Informacion y Comunicacion
* Universidad Nacional - Costa Rica
* http://www.una.ac.cr
*
*/
/**********************************************************************/
/********************* PACKAGE ******************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppo.view.model;
/**********************************************************************/
/********************* IMPORT'S ******************************/
/**********************************************************************/
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import org.springframework.context.annotation.Scope;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;
import cr.ac.una.cgi.sdkuna.api.filter.FilterSpecification;
import cr.ac.una.cgi.sdkuna.api.filter.LogicFunction;
import cr.ac.una.cgi.sdkuna.api.filter.Operator;
import cr.ac.una.cgi.sdkuna.view.commons.CRUD;
import cr.ac.una.cgi.sdkuna.view.commons.CRUDColumn;
import cr.ac.una.cgi.sdkuna.view.commons.CRUDImpl;
import cr.ac.una.cgi.sigesa.epf.bco.service.MonedaService;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.PlanOperativoAnualInstitucional;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaFUCCMetaPOAI;
import cr.ac.una.cgi.sigesa.ppi.ppo.domain.VistaPOAIMetaFondoCuentaPresupuestaria;
import cr.ac.una.cgi.sigesa.ppi.ppo.service.VistaPOAIMetaFondoCuentaPresupuestariaService;
import org.springframework.beans.factory.annotation.Autowired;
/**********************************************************************/
/********************* DOCUMENTACIÓN ******************************/
/**********************************************************************/
/**
* Spring Bean Session para la administración de la entidad {@link VistaPOAIMetaFondoCuentaPresupuestaria}
*
* @author Gustavo Matamoros González
* @since 28/09/2023
* @version: 1.0.0
* @bug: PPI-432
*/
/**********************************************************************/
/**************** DEFINICIÓN DE CLASE *****************************/
/**********************************************************************/
@Component
@Scope("session")
public class VistaPOAIMetaFondoCuentaPresupuestariaBean extends CRUDImpl<VistaPOAIMetaFondoCuentaPresupuestaria, VistaPOAIMetaFondoCuentaPresupuestariaService> implements CRUD {
/**********************************************************************/
/**************** AUTOWIRED'S *****************************/
/**********************************************************************/
@Autowired
MonedaService monedaService;
/**********************************************************************/
/**************** VARIABLES *****************************/
/**********************************************************************/
private PlanOperativoAnualInstitucional planOperativoAnualInstitucional;
private BigDecimal colonesProgramaAcademico, colonesProgramaVidaUniversitaria, colonesProgramaAdministrativo, totalColones, millonesColonesProgramaAcademico, millonesColonesProgramaVidaUniversitaria, millonesColonesProgramaAdministrativo, totalMillonesColones, redondeoProgramaAcademico, redondeoProgramaVidaUniversitaria, redondeoProgramaAdministrativo, totalRedondeo;
List<VistaPOAIMetaFondoCuentaPresupuestaria> listaTotales = new ArrayList();
/**********************************************************************/
/**************** MÉTODOS *****************************/
/**********************************************************************/
@PostConstruct
public void init() {
List<CRUDColumn> columns = new ArrayList<>();
CRUDColumn column1 = new CRUDColumn("codigoProgramaPresupuestario", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioCodigo_header"), true);
CRUDColumn column2 = new CRUDColumn("nombreProgramaPresupuestario", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_programaPresupuestarioNombre_header"), true);
CRUDColumn column3 = new CRUDColumn("codigoObjetivoPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAICodigo_header"), true);
CRUDColumn column4 = new CRUDColumn("descripcionObjetivoPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_objetivoPOAIDescripcion_header"), true);
CRUDColumn column5 = new CRUDColumn("codigoMetaPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAICodigo_header"), true);
CRUDColumn column6 = new CRUDColumn("descripcionMetaPOAI", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_metaPOAIDescripcion_header"), true);
CRUDColumn column7 = new CRUDColumn("codigoFondo", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_fondoCodigo_header"), true);
CRUDColumn column8 = new CRUDColumn("nombreFondo", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_fondoNombre_header"), true);
CRUDColumn column9 = new CRUDColumn("codigoCuentaPresupuestaria", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupCodigo_header"), true);
CRUDColumn column10 = new CRUDColumn("nombreCuentaPresupuestaria", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_cuentaPresupNombre_header"), true);
CRUDColumn column11 = new CRUDColumn("tipoPresupuesto", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_tipoCuenta_header"), true);
CRUDColumn column12 = new CRUDColumn("colones", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoColones_header"), true, "", true, "¤#,##0.00", "currency", monedaService.getSimboloLocal());
CRUDColumn column13 = new CRUDColumn("millonesColones", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoMillones_header"), true, "", true, "¤#,##0.00", "currency", monedaService.getSimboloLocal());
CRUDColumn column14 = new CRUDColumn("redondeo", getI18n("VistaPOAIMetaFondoCuentaPresupuestaria_presupuestoFormuladoRedondeo_header"), true, "", true, "¤#,##0", "currency", monedaService.getSimboloLocal());
columns.add(column1);
columns.add(column2);
columns.add(column3);
columns.add(column4);
columns.add(column5);
columns.add(column6);
columns.add(column7);
columns.add(column8);
columns.add(column9);
columns.add(column10);
columns.add(column11);
columns.add(column12);
columns.add(column13);
columns.add(column14);
this.setTableColumns(columns);
}
public void initDetails() {
if (!isPostBack()) {
// cuando inicia cargamos el primero POAI Activo
this.setPlanOperativoAnualInstitucional(service.primerPOAIActivo());
// Realizar calculo de totales
calcularTotales();
}
}
public Page<PlanOperativoAnualInstitucional> completePlanOperativoAnualInstitucional(String query, Pageable pageable) {
ArrayList<FilterSpecification> filterSpecifications = new ArrayList<FilterSpecification>();
return this.service.completePOAISinAnulados(query, filterSpecifications, pageable);
}
public void handleClearPlanOperativoAnualInstitucional() {
}
public void handlePOAIItemSelectEvent() {
}
public PlanOperativoAnualInstitucional getPlanOperativoAnualInstitucional() {
return this.planOperativoAnualInstitucional;
}
public void setPlanOperativoAnualInstitucional(PlanOperativoAnualInstitucional planOperativoAnualInstitucional) {
// Limpiamos la especificación
removeSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression());
// Si el POAI es diferente de null
if (planOperativoAnualInstitucional != null) {
// Agregamos la especificación
addSpecification("planOperativoAnualInstitucional", LogicFunction.AND.getExpression(), Operator.EQUAL.getExpression(), planOperativoAnualInstitucional);
}
// Actualizamos la variable
this.planOperativoAnualInstitucional = planOperativoAnualInstitucional;
// Realizar calculo de totales
this.calcularTotales();
}
public BigDecimal getColonesProgramaAcademico() {
return colonesProgramaAcademico;
}
public void setColonesProgramaAcademico(BigDecimal colonesProgramaAcademico) {
this.colonesProgramaAcademico = colonesProgramaAcademico;
}
public BigDecimal getColonesProgramaVidaUniversitaria() {
return colonesProgramaVidaUniversitaria;
}
public void setColonesProgramaVidaUniversitaria(BigDecimal colonesProgramaVidaUniversitaria) {
this.colonesProgramaVidaUniversitaria = colonesProgramaVidaUniversitaria;
}
public BigDecimal getColonesProgramaAdministrativo() {
return colonesProgramaAdministrativo;
}
public void setColonesProgramaAdministrativo(BigDecimal colonesProgramaAdministrativo) {
this.colonesProgramaAdministrativo = colonesProgramaAdministrativo;
}
public BigDecimal getTotalColones() {
return totalColones;
}
public void setTotalColones(BigDecimal totalColones) {
this.totalColones = totalColones;
}
public BigDecimal getMillonesColonesProgramaAcademico() {
return millonesColonesProgramaAcademico;
}
public void setMillonesColonesProgramaAcademico(BigDecimal millonesColonesProgramaAcademico) {
this.millonesColonesProgramaAcademico = millonesColonesProgramaAcademico;
}
public BigDecimal getMillonesColonesProgramaVidaUniversitaria() {
return millonesColonesProgramaVidaUniversitaria;
}
public void setMillonesColonesProgramaVidaUniversitaria(BigDecimal millonesColonesProgramaVidaUniversitaria) {
this.millonesColonesProgramaVidaUniversitaria = millonesColonesProgramaVidaUniversitaria;
}
public BigDecimal getMillonesColonesProgramaAdministrativo() {
return millonesColonesProgramaAdministrativo;
}
public void setMillonesColonesProgramaAdministrativo(BigDecimal millonesColonesProgramaAdministrativo) {
this.millonesColonesProgramaAdministrativo = millonesColonesProgramaAdministrativo;
}
public BigDecimal getTotalMillonesColones() {
return totalMillonesColones;
}
public void setTotalMillonesColones(BigDecimal totalMillonesColones) {
this.totalMillonesColones = totalMillonesColones;
}
public BigDecimal getRedondeoProgramaAcademico() {
return redondeoProgramaAcademico;
}
public void setRedondeoProgramaAcademico(BigDecimal redondeoProgramaAcademico) {
this.redondeoProgramaAcademico = redondeoProgramaAcademico;
}
public BigDecimal getRedondeoProgramaVidaUniversitaria() {
return redondeoProgramaVidaUniversitaria;
}
public void setRedondeoProgramaVidaUniversitaria(BigDecimal redondeoProgramaVidaUniversitaria) {
this.redondeoProgramaVidaUniversitaria = redondeoProgramaVidaUniversitaria;
}
public BigDecimal getRedondeoProgramaAdministrativo() {
return redondeoProgramaAdministrativo;
}
public void setRedondeoProgramaAdministrativo(BigDecimal redondeoProgramaAdministrativo) {
this.redondeoProgramaAdministrativo = redondeoProgramaAdministrativo;
}
public BigDecimal getTotalRedondeo() {
return totalRedondeo;
}
public void setTotalRedondeo(BigDecimal totalRedondeo) {
this.totalRedondeo = totalRedondeo;
}
public List<VistaPOAIMetaFondoCuentaPresupuestaria> getListaTotales() {
return listaTotales;
}
public void setListaTotales(List<VistaPOAIMetaFondoCuentaPresupuestaria> listaTotales) {
this.listaTotales = listaTotales;
}
private void calcularTotales() {
List<VistaPOAIMetaFondoCuentaPresupuestaria> listaConTotales = new ArrayList();
List<VistaPOAIMetaFondoCuentaPresupuestaria> listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional = service.getListaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional(this.planOperativoAnualInstitucional);
if (listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional != null && !listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional.isEmpty()) {
List<BigDecimal> totales = service.calcularTotales(listaVistaPOAIMetaFondoCuentaPresupuestariabyPlanOperativoAnualInstitucional);
VistaPOAIMetaFondoCuentaPresupuestaria vistaColonesTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();
vistaColonesTemporal.setTextoColones("Colones");
vistaColonesTemporal.setProgramaAcademico(totales.get(0).toString(),false);
vistaColonesTemporal.setProgramaVidaUniversitaria(totales.get(3).toString(),false);
vistaColonesTemporal.setProgramaAdministrativo(totales.get(6).toString(),false);
vistaColonesTemporal.setProgramaTotal(totales.get(9).toString(),false);
listaConTotales.add(vistaColonesTemporal);
VistaPOAIMetaFondoCuentaPresupuestaria vistaMillonesTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();
vistaMillonesTemporal.setTextoMillones("Millones de Colones");
vistaMillonesTemporal.setProgramaAcademico(totales.get(1).toString(),false);
vistaMillonesTemporal.setProgramaVidaUniversitaria(totales.get(4).toString(),false);
vistaMillonesTemporal.setProgramaAdministrativo(totales.get(7).toString(),false);
vistaMillonesTemporal.setProgramaTotal(totales.get(10).toString(),false);
listaConTotales.add(vistaMillonesTemporal);
VistaPOAIMetaFondoCuentaPresupuestaria vistaRedondeoTemporal = new VistaPOAIMetaFondoCuentaPresupuestaria();
vistaRedondeoTemporal.setTextoRedondeo("Redondeo");
vistaRedondeoTemporal.setProgramaAcademico(totales.get(2).toString(),true);
vistaRedondeoTemporal.setProgramaVidaUniversitaria(totales.get(5).toString(),true);
vistaRedondeoTemporal.setProgramaAdministrativo(totales.get(8).toString(),true);
vistaRedondeoTemporal.setProgramaTotal(totales.get(11).toString(),true);
listaConTotales.add(vistaRedondeoTemporal);
setListaTotales(listaConTotales);
} else {
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;
}
}
}