PPI-372:Crear reporte de avance de acciones estratégicas

Tarea:

Yo como usuario del sistema de Planificación institucional requiero crear el reporte que muestre el grado de avance de las acciones estratégicas por facultad, centro, sede, sección regional, vicerrectorías, rectoría para valorar evolución de la planificación mediano plazo y toma de decisiones para su futura rendición de cuentas

Criterios de aceptación:

  • Los parámetros a utilizar son:
    • Etapa de planificación
      • Obligatorio
      • Debe que tener autocomplete y LOV
      • Solo debe mostrar las que son de tipo etapa de evaluación
    • Unidad ejecutora
      • Solamente debe mostrar las que tienen acciones estratégicas
      • Tiene que tener autocomplete y LOV
      • Filtrar por unidad que tenga acciones.
      • Mostrar el código en el autocomplete
      • Debe tener ACL
      • Obligatorio
  • El reporte debe indicar los siguientes campos:
    • Título: Grado de Avance de los Acciones Estratégicas
    • Encabezado de pagina
      • Etapa de planificación
      • Periodo Anual
      • Unidad ejecutora (facultad, centro, sede, sección regional, vicerrectorías, rectoría)
    • Detalle:
      • Meta Estratégica
      • Acción Estratégica
        • Grado de Avance (Sumatoria de la ejecución del o de los aportes por instancia por año, vinculados a esa acción estratégica)
        • Gráfico de barra de carga
      • Unidad Ejecutora
      • Aporte Estratégico
      • Grado de Avance Acumulado (suma de las ejecuciones por año)
    • Pie de página
      • Grado de vance general (Promedio del grado de avance de las acciones por facultad…)
  • El reporte debe ser como la imagen que se muestra a continuación:

BD:

  • Las tablas necesarias para la tarea entonces son:

SELECT

  • Por lo tanto el SELCT necesario es:
SELECT
    PEPMP.CODIGO || '.' || OEPMP.CODIGO || '.' || MPMP.CODIGO || '.' || ' ' || MPMP.DESCRIPCION AS META_PMP,
    XE.CODIGO || '.' || ' ' || XE.DESCRIPCION AS ACCION_ESTRATEGICA,
    UE.CODIGO AS CODIGO_UE,
    UE.NOMBRE AS NOMBRE_UE,
    AE.CODIGO || '.' ||  ' ' ||  AE.DESCRIPCION AS APORTE_ESTRATEGICO,
    ROUND( AVG(MPE.EJECUCION),2) AS AVANCE_ACUMULADO
FROM META_POA_EVALUACION MPE
INNER JOIN META_POA MP ON MP.ID_META_POA = MPE.META_POA
INNER JOIN META_POA_APORTE MPA ON MPA.META_POA = MP.ID_META_POA
INNER JOIN APORTE_ESTRATEGICO AE ON AE.ID_APORTE_ESTRATEGICO = MPA.APORTE_ESTRATEGICO
INNER JOIN PLAN_APORTE_ESTRATEGICO PAE ON PAE.ID_PLAN_APORTE_ESTRATEGICO = AE.PLAN_APORTE_ESTRATEGICO
INNER JOIN UNIDAD_EJECUTORA UE ON UE.ID_UNIDAD_EJECUTORA = PAE.UNIDAD_EJECUTORA
INNER JOIN ACCION_ESTRATEGICA XE ON XE.ID_ACCION_ESTRATEGICA = AE.ACCION_ESTRATEGICA
INNER JOIN PLAN_ACCION_ESTRATEGICA PXE ON PXE.ID_PLAN_ACCION_ESTRATEGICA = XE.PLAN_ACCION_ESTRATEGICA
INNER JOIN META_PMP MPMP ON MPMP.ID_META_PMP = XE.META_PMP
INNER JOIN DETALLE_PMP DPMP ON DPMP.ID_DETALLE_PMP = MPMP.DETALLE_PMP
INNER JOIN PRIORIDAD_ESTRATEGICA_PMP PEPMP ON PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP = DPMP.PRIORIDAD_ESTRATEGICA_PMP
INNER JOIN OBJETIVO_ESTRATEGICO_PMP OEPMP ON OEPMP.ID_OBJETIVO_ESTRATEGICO_PMP = DPMP.OBJETIVO_ESTRATEGICO_PMP
WHERE PXE.UNIDAD_EJECUTORA = :UNIDADEJECUTORA AND MPE.ETAPA_PLAN = :ETAPAPLAN
GROUP BY PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, MPMP.DESCRIPCION, XE.CODIGO, XE.DESCRIPCION, UE.CODIGO, UE.NOMBRE, AE.CODIGO, AE.DESCRIPCION
ORDER BY PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, XE.CODIGO, UE.CODIGO, UE.NOMBRE, AE.CODIGO;

Creación de reporte

  • Creamos reporte
  • New Jasper Report
  • Seleccionamos el folder y le damos el nombre R-PPI-PPE-AVANCEACCIONESTRATEGICA.jrxml
  • Le damos siguiente y nos solicita el Data Source
  • Luego para este punto podriamos agregarle la consulta SQL si la tenemos en la siguiente sección
  • NOTA IMPORTANTE: si contamos ya con la consulta la podemos pegar aquí, sin embargo es importante indicar que la consulta se pega sin el punto y coma “;”, por que si no nos da error de consulta
  • Pero otra opción es hacer clic en el botón de “Finish” y luego agregarle al consulta cuando la tengamos
  • Ahora que tenemos la consulta la vamos a agregar al reporte
  • Para esto ubicamos el icono
  • Y pergamos la consulta
SELECT
    PEPMP.CODIGO || '.' || OEPMP.CODIGO || '.' || MPMP.CODIGO || '.' || ' ' || MPMP.DESCRIPCION AS META_PMP,
    XE.CODIGO || '.' || ' ' || XE.DESCRIPCION AS ACCION_ESTRATEGICA,
    UE.CODIGO AS CODIGO_UE,
    UE.NOMBRE AS NOMBRE_UE,
    AE.CODIGO || '.' ||  ' ' ||  AE.DESCRIPCION AS APORTE_ESTRATEGICO,
    ROUND( AVG(MPE.EJECUCION),2) AS AVANCE_ACUMULADO
FROM META_POA_EVALUACION MPE
INNER JOIN META_POA MP ON MP.ID_META_POA = MPE.META_POA
INNER JOIN META_POA_APORTE MPA ON MPA.META_POA = MP.ID_META_POA
INNER JOIN APORTE_ESTRATEGICO AE ON AE.ID_APORTE_ESTRATEGICO = MPA.APORTE_ESTRATEGICO
INNER JOIN PLAN_APORTE_ESTRATEGICO PAE ON PAE.ID_PLAN_APORTE_ESTRATEGICO = AE.PLAN_APORTE_ESTRATEGICO
INNER JOIN UNIDAD_EJECUTORA UE ON UE.ID_UNIDAD_EJECUTORA = PAE.UNIDAD_EJECUTORA
INNER JOIN ACCION_ESTRATEGICA XE ON XE.ID_ACCION_ESTRATEGICA = AE.ACCION_ESTRATEGICA
INNER JOIN PLAN_ACCION_ESTRATEGICA PXE ON PXE.ID_PLAN_ACCION_ESTRATEGICA = XE.PLAN_ACCION_ESTRATEGICA
INNER JOIN META_PMP MPMP ON MPMP.ID_META_PMP = XE.META_PMP
INNER JOIN DETALLE_PMP DPMP ON DPMP.ID_DETALLE_PMP = MPMP.DETALLE_PMP
INNER JOIN PRIORIDAD_ESTRATEGICA_PMP PEPMP ON PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP = DPMP.PRIORIDAD_ESTRATEGICA_PMP
INNER JOIN OBJETIVO_ESTRATEGICO_PMP OEPMP ON OEPMP.ID_OBJETIVO_ESTRATEGICO_PMP = DPMP.OBJETIVO_ESTRATEGICO_PMP
WHERE PXE.UNIDAD_EJECUTORA = $P{unidadEjecutora} AND MPE.ETAPA_PLAN = $P{etapaPlan}
GROUP BY PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, MPMP.DESCRIPCION, XE.CODIGO, XE.DESCRIPCION, UE.CODIGO, UE.NOMBRE, AE.CODIGO, AE.DESCRIPCION
ORDER BY PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, XE.CODIGO, UE.CODIGO, UE.NOMBRE, AE.CODIGO
  • Asi debe reconocer los campos

Configuración del reporte

  • Ahora vamos a configurar el reporte
  • Seleccionamos el nombre del reporte
  • Y se nos muestra las propiedades
  • Agregamos la descripción
Reporte de Avance de Acciones Estratégicas
  • Establecemos la propiedad «When No Data type» -> «No data Section»
  • Bajamos hasta encontrar Page Format le damos editar

  • Nos abre una ventana donde definimos las siguientes propiedades
    • Format: LETTER
    • Margenes 20px

Encabezado

  • Para el encabezado ubicamos la sección de «Title»
  • Y le agregamos un «Static Text»
  • Para PPI debemos establecer las siguientes propiedades
    • Altura : 15px
  • Y en Static Text
  • Centrado Vertical y horizontal
  • Font: DejaVuSans
  • size: 12
  • Negrita
  • Hacemos lo mismo con los demas textos

titulo estandar PPI

  • Como parte del estandar de PPI ahora todos los reportes tendrán las etapa y el periodo dentro del título
  • Para esto dentro de PPO se creó el sub reporte R-PPI-PPO-SUB-PERIODOANUALNOMBRE-VARIABLE.jasper
  • Que retorna:
  • Esto lo podemos copiar del reporte
R-PPI-PPO-EVALUACIONOPERATIVA.jrxml
  • Lo copiamos son 3

R-PPI-PPO-SUB-ETAPAPLANNOMBRE-VARIABLE.jasper
R-PPI-PPO-SUB-PERIODOANUALNOMBRE-VARIABLE.jasper
Y Text Field que los une
  • Y los pegamos uno encima del otro con las variables arriba
  • Y esto para que funciones debemos hacer lo siguiente
  • Declarar una variable «etapaPlan_nombre» que va almacenar el nombre de la etapa devuelta por el subreporte
  • Y otra variable «periodoAnual_nombre» que almacena el periodo

sub etapaPlan

$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-ETAPAPLANNOMBRE-VARIABLE.jasper"
  • En el subreporte de etapa (se explica mas abajo) le indicamos que que vamos enviar la etapa que se envía como parametro
  • Luego esta esta sencillo por que la etapa se pasa como parametro
  • Pero ahora debemos indicarle que le vamos a pasar al subreporte el parametro etapaPlan
  • Le damos agregar uno

Valor de retorno

  • Ahora debemos indicar que que el valor que retorna debe se alamacenado en la variable etapaPLan
  • Le damos

Sub Report: Periodo Anual

  • Ahora para este resporte tenemos un problema y es que el periodoAnual no es pasado como parametro
  • por tanto tenemos que ver de donbde sqacamos el valor
  • Una posibilidad es hacer un subreporte variable que le pasamos la etapaPlan y esta nos retorne el periodo
  • U otra opción es modificar el SQL para que traiga el periodo y se lo pasemos de un Field y no un parametros
  • Esta es la que vamos aplicar
  • Modificamos el SQL
SELECT
    EP.PERIODO_ANUAL,
    PEPMP.CODIGO || '.' || OEPMP.CODIGO || '.' || MPMP.CODIGO || '.' || ' ' || MPMP.DESCRIPCION AS META_PMP,
    XE.CODIGO || '.' || ' ' || XE.DESCRIPCION AS ACCION_ESTRATEGICA,
    UE.CODIGO AS CODIGO_UE,
    UE.NOMBRE AS NOMBRE_UE,
    AE.CODIGO || '.' ||  ' ' ||  AE.DESCRIPCION AS APORTE_ESTRATEGICO,
    ROUND( AVG(MPE.EJECUCION),2) AS AVANCE_ACUMULADO
FROM META_POA_EVALUACION MPE
INNER JOIN META_POA MP ON MP.ID_META_POA = MPE.META_POA
INNER JOIN META_POA_APORTE MPA ON MPA.META_POA = MP.ID_META_POA
INNER JOIN APORTE_ESTRATEGICO AE ON AE.ID_APORTE_ESTRATEGICO = MPA.APORTE_ESTRATEGICO
INNER JOIN PLAN_APORTE_ESTRATEGICO PAE ON PAE.ID_PLAN_APORTE_ESTRATEGICO = AE.PLAN_APORTE_ESTRATEGICO
INNER JOIN UNIDAD_EJECUTORA UE ON UE.ID_UNIDAD_EJECUTORA = PAE.UNIDAD_EJECUTORA
INNER JOIN ACCION_ESTRATEGICA XE ON XE.ID_ACCION_ESTRATEGICA = AE.ACCION_ESTRATEGICA
INNER JOIN PLAN_ACCION_ESTRATEGICA PXE ON PXE.ID_PLAN_ACCION_ESTRATEGICA = XE.PLAN_ACCION_ESTRATEGICA
INNER JOIN META_PMP MPMP ON MPMP.ID_META_PMP = XE.META_PMP
INNER JOIN DETALLE_PMP DPMP ON DPMP.ID_DETALLE_PMP = MPMP.DETALLE_PMP
INNER JOIN PRIORIDAD_ESTRATEGICA_PMP PEPMP ON PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP = DPMP.PRIORIDAD_ESTRATEGICA_PMP
INNER JOIN OBJETIVO_ESTRATEGICO_PMP OEPMP ON OEPMP.ID_OBJETIVO_ESTRATEGICO_PMP = DPMP.OBJETIVO_ESTRATEGICO_PMP
INNER JOIN ETAPA_PLAN EP ON (MPE.ETAPA_PLAN = EP.ID_ETAPA_PLAN)
WHERE PXE.UNIDAD_EJECUTORA = :UNIDADEJECUTORA AND MPE.ETAPA_PLAN = :ETAPAPLAN 
GROUP BY EP.PERIODO_ANUAL, PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, MPMP.DESCRIPCION, XE.CODIGO, XE.DESCRIPCION, UE.CODIGO, UE.NOMBRE, AE.CODIGO, AE.DESCRIPCION
ORDER BY EP.PERIODO_ANUAL, PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, XE.CODIGO, UE.CODIGO, UE.NOMBRE, AE.CODIGO;
  • Y el de reporte
SELECT
    EP.PERIODO_ANUAL,
    PEPMP.CODIGO || '.' || OEPMP.CODIGO || '.' || MPMP.CODIGO || '.' || ' ' || MPMP.DESCRIPCION AS META_PMP,
    XE.CODIGO || '.' || ' ' || XE.DESCRIPCION AS ACCION_ESTRATEGICA,
    UE.CODIGO AS CODIGO_UE,
    UE.NOMBRE AS NOMBRE_UE,
    AE.CODIGO || '.' ||  ' ' ||  AE.DESCRIPCION AS APORTE_ESTRATEGICO,
    ROUND( AVG(MPE.EJECUCION),2) AS AVANCE_ACUMULADO
FROM META_POA_EVALUACION MPE
INNER JOIN META_POA MP ON MP.ID_META_POA = MPE.META_POA
INNER JOIN META_POA_APORTE MPA ON MPA.META_POA = MP.ID_META_POA
INNER JOIN APORTE_ESTRATEGICO AE ON AE.ID_APORTE_ESTRATEGICO = MPA.APORTE_ESTRATEGICO
INNER JOIN PLAN_APORTE_ESTRATEGICO PAE ON PAE.ID_PLAN_APORTE_ESTRATEGICO = AE.PLAN_APORTE_ESTRATEGICO
INNER JOIN UNIDAD_EJECUTORA UE ON UE.ID_UNIDAD_EJECUTORA = PAE.UNIDAD_EJECUTORA
INNER JOIN ACCION_ESTRATEGICA XE ON XE.ID_ACCION_ESTRATEGICA = AE.ACCION_ESTRATEGICA
INNER JOIN PLAN_ACCION_ESTRATEGICA PXE ON PXE.ID_PLAN_ACCION_ESTRATEGICA = XE.PLAN_ACCION_ESTRATEGICA
INNER JOIN META_PMP MPMP ON MPMP.ID_META_PMP = XE.META_PMP
INNER JOIN DETALLE_PMP DPMP ON DPMP.ID_DETALLE_PMP = MPMP.DETALLE_PMP
INNER JOIN PRIORIDAD_ESTRATEGICA_PMP PEPMP ON PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP = DPMP.PRIORIDAD_ESTRATEGICA_PMP
INNER JOIN OBJETIVO_ESTRATEGICO_PMP OEPMP ON OEPMP.ID_OBJETIVO_ESTRATEGICO_PMP = DPMP.OBJETIVO_ESTRATEGICO_PMP
INNER JOIN ETAPA_PLAN EP ON (MPE.ETAPA_PLAN = EP.ID_ETAPA_PLAN)
WHERE PXE.UNIDAD_EJECUTORA = $P{unidadEjecutora} AND MPE.ETAPA_PLAN = $P{etapaPlan} 
GROUP BY EP.PERIODO_ANUAL, PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, MPMP.DESCRIPCION, XE.CODIGO, XE.DESCRIPCION, UE.CODIGO, UE.NOMBRE, AE.CODIGO, AE.DESCRIPCION
ORDER BY EP.PERIODO_ANUAL, PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, XE.CODIGO, UE.CODIGO, UE.NOMBRE, AE.CODIGO
  • Ahora le indicamos a sub reoprte que utilice como parametro el filed
  • Y ya nos queda así

Fecha y paginación: Page Header

  • Esta sección tambien la podemos copiar y pegar en Pag Header

Encabezado: Unidad Ejecutora

  • Este tambien lo podemos copiar
  • Ademas copiamos la variable «unidadEjecutora_codigo_nombre»
  • Modificamos el Filed x param
  • Y los valores de retorno
  • }

Page Header:no repeat

  • Si lo dejamos así este título se va a repetir en todas las paginas
  • Para evitar esto
  • Marcamos el «Page HEader» y en la propiedades en «Print When Expresion» digitamos ara que solo se imprima en la primera página
$V{PAGE_NUMBER}.equals(1)

Excel: Eliminar fondo blanco cuando se exporta

  • Cuando exportamos a excel siempre lo hace con el fondo blanco
  • Para eliminar esto ingresamos a:
  • Menu->Preferences->Jasper Studio->Exporters->Excel Exporter
  • Y desmarcamos la opción de «White Page Backgroud»

Creación de Grupo Metas_PMP y Accion estrategica

  • Como vemos en el reporte necesitamos agrupar por metas pero tambien por acciones
  • Por tanto en la parte de «Outline» hacemos clic derecho «Create Group»
  • Aquí nos solicita que le pongamos un nombre y seleccionamos por cual campo deseamos agrupar, para este caso META_PMP y ACCION_ESTRATEGICA
  • Le indicamos las secciones que deseamos agregar y finalizamos
  • Ahora esto nos crea una sección de header que se va a comportar como un encabezado que se va a generar cada vez que cambien en el listado de datos, por esta razón es que viene agrupado por estos campos la consulta
  • Y ademas en el detalle es donde colocamos los datos que le pertenecen en este caso a una meta y que llevan su propio ciclo de impresión

Creación de Grado de Avance

  • Ya hemos acomodado los campos con los quie contamos teniendo un resultado así:
  • Donde tenemos:
    • Una meta
      • una accion
        • Y los aportes con un avance
  • Por tanto ahora vamos a la sección de variables y arrastramos a «Avance_acumulado» y lo arrastramos a en el «Group Footer»
  • Nos sale un ventana donde vamos a seleccionar:
  • Esta nos crea una variable que utilizara el el avance_acumulado para sacar un promedio
  • Este promedio puede dar con muchos decimales, para evitar esto lo vamos a redondear con
$V{AVANCE_ACUMULADO1}.setScale(2, RoundingMode.HALF_UP)+"%"
  • Aquí es importante en el campo que se crear en «Evaluation_time» pornerle band para que se evalue cuando se esta en la banda
  • Con esto ya tenemos el «Grado de Avance»

Grado de vanace general

  • Ahora vamos hacer lo mismo para generar el acumulado general
  • Para esto lo vamos hacer en la sección de SUMMARY
  • Arrastramos y creamos promedio
  • Aqupi es importante que la «Evaluation Time» se a «Report» ya que este debe sumar todos los aportes
  • Y por supuesto redondear
$V{AVANCE_ACUMULADO2}.setScale(2, RoundingMode.HALF_UP)+"%"
  • Ahora le agregamos bordes
  • Listo nos queda así

Sub reporte variable

  • Ahora para obtrener los datos de lo parametros debemos hacer un subreporte variable

EtapaPlan

  • Lo primero que vamos hacer es agregar un componente de Subreporte

  • Y en su configuración vamos a indicarle
  • expression: establece cual es el reporte que vamos a invocar
$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-ETAPAPLANNOMBRE-VARIABLE.jasper"
  • Connection Expression
$P{REPORT_CONNECTION}
  • Como vemos requerimos un «Parametro» de nombre
SUBREPORT_DIR
  • Por tanto debemos crearla
  • Ahora para recibir el nombre de la etapa que que nos retornara el subreporte vamos a crear una variable que almacene el nombre de la etapa
  • Ahora arrastramos esta variable y la colocamos encima del subreporte
  • Y la vamos a configurar con la propiedad
  • Evaluation Time: Band

Parametros hacia reporte

  • Y ahora le vamos a indicar que parametros le vamos a pasar
  • Nos abre una ventana donde le decimos que vamos a agregar un parametro
  • Le damos un nombre
  • Y en expresion la damos al boton
  • nos abre un ventana donde podemos seleccionar el parametro que nos pasan
  • Quedando Así:
  • Con esto configuramos el envió de parametros hacia el subreporte

parametros de retorno de subreporte

  • ahora vamos a configurar lo0 que nos va a devolver el subreporte
  • Lo primero es ubicarse en el sub reporte y darle «Edit Return Values»
  • Nos abre una ventana donde podemos configurar los valores de retorno
  • Y lo que vamos hacer es indicarle que que lo quye devuelva la variable «etapaPlan_nombre» del sub reporte lo guarde en la variable «etapaPlan_nombre» del reporte

Subreporte

  • Este subreporte debe estar configurado así
  • Y lo que debe tener es un parametro de tipo long que será el id del elemento a consulta
  • Y a nivel de SQL lo que va tener es la consulta del elemento por ID
SELECT NOMBRE FROM ETAPA_PLAN WHERE ID_ETAPA_PLAN = $P{etapaPlan}
  • Es decir que vamos a recibir un parametro llamado «etapaPlan» y el nos retornará un valor a través de una variable que la declramos de la siguiente forma
  • Name: etapaPlan_nombre
  • Class: java.lang.String
  • Calculation: No Calculation Function
  • Expresion: $F{NOMBRE}
  • Initial Vaslue Expresion: «»
  • Reset Type: Report

Código reporte final

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.20.0.final using JasperReports Library version 5.5.2  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="R-PPI-PPE-AVANCEACCIONESTRATEGICA" pageWidth="792" pageHeight="612" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="752" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d2f576f9-e4ac-445d-8a1d-ddcf62b47751">
	<property name="com.jaspersoft.studio.data.sql.tables" value=""/>
	<property name="com.jaspersoft.studio.data.defaultdataadapter" value="ORACLE-UNA"/>
	<property name="com.jaspersoft.studio.report.description" value="Reporte de Avance de Acciones Estratégicas"/>
	<property name="com.jaspersoft.studio.unit." value="pixel"/>
	<property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
	<property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
	<parameter name="SUBREPORT_DIR" class="java.lang.String">
		<defaultValueExpression><![CDATA[""]]></defaultValueExpression>
	</parameter>
	<parameter name="unidadEjecutora" class="java.lang.Long"/>
	<parameter name="etapaPlan" class="java.lang.Long"/>
	<queryString language="SQL">
		<![CDATA[SELECT
    EP.PERIODO_ANUAL,
    PEPMP.CODIGO || '.' || OEPMP.CODIGO || '.' || MPMP.CODIGO || '.' || ' ' || MPMP.DESCRIPCION AS META_PMP,
    XE.CODIGO || '.' || ' ' || XE.DESCRIPCION AS ACCION_ESTRATEGICA,
    UE.CODIGO AS CODIGO_UE,
    UE.NOMBRE AS NOMBRE_UE,
    AE.CODIGO || '.' ||  ' ' ||  AE.DESCRIPCION AS APORTE_ESTRATEGICO,
    ROUND( AVG(MPE.EJECUCION),2) AS AVANCE_ACUMULADO
FROM META_POA_EVALUACION MPE
INNER JOIN META_POA MP ON MP.ID_META_POA = MPE.META_POA
INNER JOIN META_POA_APORTE MPA ON MPA.META_POA = MP.ID_META_POA
INNER JOIN APORTE_ESTRATEGICO AE ON AE.ID_APORTE_ESTRATEGICO = MPA.APORTE_ESTRATEGICO
INNER JOIN PLAN_APORTE_ESTRATEGICO PAE ON PAE.ID_PLAN_APORTE_ESTRATEGICO = AE.PLAN_APORTE_ESTRATEGICO
INNER JOIN UNIDAD_EJECUTORA UE ON UE.ID_UNIDAD_EJECUTORA = PAE.UNIDAD_EJECUTORA
INNER JOIN ACCION_ESTRATEGICA XE ON XE.ID_ACCION_ESTRATEGICA = AE.ACCION_ESTRATEGICA
INNER JOIN PLAN_ACCION_ESTRATEGICA PXE ON PXE.ID_PLAN_ACCION_ESTRATEGICA = XE.PLAN_ACCION_ESTRATEGICA
INNER JOIN META_PMP MPMP ON MPMP.ID_META_PMP = XE.META_PMP
INNER JOIN DETALLE_PMP DPMP ON DPMP.ID_DETALLE_PMP = MPMP.DETALLE_PMP
INNER JOIN PRIORIDAD_ESTRATEGICA_PMP PEPMP ON PEPMP.ID_PRIORIDAD_ESTRATEGICA_PMP = DPMP.PRIORIDAD_ESTRATEGICA_PMP
INNER JOIN OBJETIVO_ESTRATEGICO_PMP OEPMP ON OEPMP.ID_OBJETIVO_ESTRATEGICO_PMP = DPMP.OBJETIVO_ESTRATEGICO_PMP
INNER JOIN ETAPA_PLAN EP ON (MPE.ETAPA_PLAN = EP.ID_ETAPA_PLAN)
WHERE PXE.UNIDAD_EJECUTORA = $P{unidadEjecutora} AND MPE.ETAPA_PLAN = $P{etapaPlan} 
GROUP BY EP.PERIODO_ANUAL, PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, MPMP.DESCRIPCION, XE.CODIGO, XE.DESCRIPCION, UE.CODIGO, UE.NOMBRE, AE.CODIGO, AE.DESCRIPCION
ORDER BY EP.PERIODO_ANUAL, PEPMP.CODIGO, OEPMP.CODIGO, MPMP.CODIGO, XE.CODIGO, UE.CODIGO, UE.NOMBRE, AE.CODIGO]]>
	</queryString>
	<field name="PERIODO_ANUAL" class="java.math.BigDecimal">
		<property name="com.jaspersoft.studio.field.name" value="PERIODO_ANUAL"/>
		<property name="com.jaspersoft.studio.field.label" value="PERIODO_ANUAL"/>
	</field>
	<field name="META_PMP" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="META_PMP"/>
		<property name="com.jaspersoft.studio.field.label" value="META_PMP"/>
	</field>
	<field name="ACCION_ESTRATEGICA" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="ACCION_ESTRATEGICA"/>
		<property name="com.jaspersoft.studio.field.label" value="ACCION_ESTRATEGICA"/>
	</field>
	<field name="CODIGO_UE" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="CODIGO_UE"/>
		<property name="com.jaspersoft.studio.field.label" value="CODIGO_UE"/>
	</field>
	<field name="NOMBRE_UE" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="NOMBRE_UE"/>
		<property name="com.jaspersoft.studio.field.label" value="NOMBRE_UE"/>
	</field>
	<field name="APORTE_ESTRATEGICO" class="java.lang.String">
		<property name="com.jaspersoft.studio.field.name" value="APORTE_ESTRATEGICO"/>
		<property name="com.jaspersoft.studio.field.label" value="APORTE_ESTRATEGICO"/>
	</field>
	<field name="AVANCE_ACUMULADO" class="java.math.BigDecimal">
		<property name="com.jaspersoft.studio.field.name" value="AVANCE_ACUMULADO"/>
		<property name="com.jaspersoft.studio.field.label" value="AVANCE_ACUMULADO"/>
	</field>
	<variable name="gradoAvanceAccionEstrategica" class="java.math.BigDecimal" resetType="Group" resetGroup="METAS_y_ACCIONES" calculation="Average">
		<variableExpression><![CDATA[$F{AVANCE_ACUMULADO}]]></variableExpression>
	</variable>
	<variable name="AVANCE_ACUMULADO1" class="java.math.BigDecimal" resetType="Group" resetGroup="METAS_y_ACCIONES" calculation="Average">
		<variableExpression><![CDATA[$F{AVANCE_ACUMULADO}]]></variableExpression>
	</variable>
	<variable name="AVANCE_ACUMULADO2" class="java.math.BigDecimal" calculation="Average">
		<variableExpression><![CDATA[$F{AVANCE_ACUMULADO}]]></variableExpression>
	</variable>
	<variable name="etapaPlan_nombre" class="java.lang.String" calculation="System"/>
	<variable name="periodoAnual_nombre" class="java.lang.String" calculation="System"/>
	<variable name="unidadEjecutora_codigo_nombre" class="java.lang.String" calculation="System"/>
	<group name="METAS_y_ACCIONES">
		<groupExpression><![CDATA[$F{META_PMP}+$F{ACCION_ESTRATEGICA}]]></groupExpression>
		<groupHeader>
			<band height="120">
				<property name="com.jaspersoft.studio.unit.height" value="px"/>
				<staticText>
					<reportElement mode="Transparent" x="0" y="0" width="752" height="20" backcolor="#F0F0F0" uuid="7a399b57-22e2-43a8-89ed-1da91053b1ff">
						<property name="com.jaspersoft.studio.unit.width" value="px"/>
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box topPadding="0" leftPadding="0" bottomPadding="0" rightPadding="0">
						<pen lineWidth="0.25" lineColor="#C4C4C4"/>
						<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
						<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
						<bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
						<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
					</box>
					<textElement textAlignment="Left" verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8" isBold="true"/>
					</textElement>
					<text><![CDATA[Meta Estratégica:]]></text>
				</staticText>
				<textField isStretchWithOverflow="true">
					<reportElement x="0" y="20" width="752" height="30" uuid="419cbffd-ff8e-4e6d-903a-718b4b928ca5">
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box topPadding="5" leftPadding="0" bottomPadding="5" rightPadding="0"/>
					<textElement verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{META_PMP}]]></textFieldExpression>
				</textField>
				<textField isStretchWithOverflow="true">
					<reportElement x="0" y="70" width="752" height="30" uuid="369724b0-4c7f-4959-86e3-985fad5b4c5c">
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box topPadding="5" leftPadding="0" bottomPadding="5" rightPadding="0"/>
					<textElement verticalAlignment="Top">
						<font fontName="DejaVu Sans" size="8"/>
						<paragraph lineSpacing="Single"/>
					</textElement>
					<textFieldExpression><![CDATA[$F{ACCION_ESTRATEGICA}]]></textFieldExpression>
				</textField>
				<staticText>
					<reportElement x="0" y="50" width="752" height="20" uuid="a7142e28-c2ab-4464-88fd-4abc8920432c">
						<property name="com.jaspersoft.studio.unit.width" value="px"/>
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box topPadding="5" leftPadding="0" bottomPadding="5" rightPadding="0">
						<pen lineWidth="0.1" lineColor="#777B7D"/>
						<topPen lineWidth="0.0" lineStyle="Solid" lineColor="#BEC5C7"/>
						<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
						<bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#777B7D"/>
						<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
					</box>
					<textElement textAlignment="Left" verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8" isBold="true"/>
					</textElement>
					<text><![CDATA[Acción Estratégica:]]></text>
				</staticText>
				<staticText>
					<reportElement x="0" y="100" width="280" height="20" uuid="8502f95a-ca0b-47a1-935e-a398b1ce7043">
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box topPadding="0" leftPadding="0" bottomPadding="0" rightPadding="0"/>
					<textElement verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8" isBold="true"/>
					</textElement>
					<text><![CDATA[Unidad Ejecutora:]]></text>
				</staticText>
				<staticText>
					<reportElement x="280" y="100" width="300" height="20" uuid="2d2ad03c-965b-4cb0-bdff-760488778e9b">
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box topPadding="0" leftPadding="0" bottomPadding="0" rightPadding="0"/>
					<textElement verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8" isBold="true"/>
					</textElement>
					<text><![CDATA[Aportes Estratégicos:]]></text>
				</staticText>
				<staticText>
					<reportElement x="580" y="100" width="172" height="20" uuid="f95e3e57-d318-4aac-835a-a50269485c03">
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box topPadding="0" bottomPadding="0"/>
					<textElement verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8" isBold="true"/>
					</textElement>
					<text><![CDATA[Grado de Avance Acumulado:]]></text>
				</staticText>
			</band>
		</groupHeader>
		<groupFooter>
			<band height="15">
				<property name="com.jaspersoft.studio.unit.height" value="px"/>
				<textField isStretchWithOverflow="true" evaluationTime="Band">
					<reportElement x="580" y="0" width="172" height="15" uuid="965476e7-c4e3-49ba-a7f2-fc6bb05e8e66">
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<box padding="0">
						<pen lineStyle="Solid"/>
						<topPen lineWidth="0.0" lineStyle="Solid" lineColor="#E1E3E6"/>
						<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#E1E3E6"/>
						<bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#E1E3E6"/>
						<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#E1E3E6"/>
					</box>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8"/>
					</textElement>
					<textFieldExpression><![CDATA[$V{AVANCE_ACUMULADO1}.setScale(2, RoundingMode.HALF_UP)+"%"]]></textFieldExpression>
				</textField>
				<staticText>
					<reportElement x="0" y="0" width="580" height="15" isPrintWhenDetailOverflows="true" uuid="6c09a4ec-17d3-494d-9bf9-3c8408a2eba3">
						<property name="com.jaspersoft.studio.unit.width" value="px"/>
						<property name="com.jaspersoft.studio.unit.height" value="px"/>
					</reportElement>
					<textElement textAlignment="Right" verticalAlignment="Middle">
						<font fontName="DejaVu Sans" size="8" isBold="true"/>
					</textElement>
					<text><![CDATA[Grado de Avance:]]></text>
				</staticText>
			</band>
		</groupFooter>
	</group>
	<background>
		<band splitType="Stretch"/>
	</background>
	<title>
		<band height="60" splitType="Stretch">
			<property name="com.jaspersoft.studio.unit.height" value="px"/>
			<staticText>
				<reportElement x="0" y="0" width="752" height="15" uuid="3c33a882-b415-4aa1-9b8a-1817f08ba095">
					<property name="com.jaspersoft.studio.unit.width" value="px"/>
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[Universidad Nacional]]></text>
			</staticText>
			<staticText>
				<reportElement x="0" y="15" width="752" height="15" uuid="c612af41-d8a3-4001-9de3-9e071da27f98">
					<property name="com.jaspersoft.studio.unit.width" value="px"/>
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[Área de Planificación]]></text>
			</staticText>
			<staticText>
				<reportElement x="0" y="30" width="752" height="15" uuid="bf8be4f5-1ced-47ec-8d8c-8bca975ef901">
					<property name="com.jaspersoft.studio.unit.width" value="px"/>
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[Grado de Avance de las Acciones Estratégicas]]></text>
			</staticText>
			<subreport overflowType="NoStretch">
				<reportElement positionType="Float" x="0" y="45" width="752" height="15" uuid="10b13818-5171-40a5-a0a6-8ad8858c2b69">
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<subreportParameter name="etapaPlan">
					<subreportParameterExpression><![CDATA[$P{etapaPlan}.longValue()]]></subreportParameterExpression>
				</subreportParameter>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<returnValue subreportVariable="etapaPlan_nombre" toVariable="etapaPlan_nombre"/>
				<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-ETAPAPLANNOMBRE-VARIABLE.jasper"]]></subreportExpression>
			</subreport>
			<textField evaluationTime="Band" pattern="">
				<reportElement x="0" y="45" width="752" height="15" uuid="b99fd990-0c99-4883-84c3-3e0110f1f741"/>
				<textElement textAlignment="Center">
					<font fontName="DejaVu Sans" size="10" isBold="true" isPdfEmbedded="false"/>
				</textElement>
				<textFieldExpression><![CDATA["Etapa: " +$V{etapaPlan_nombre} + " " + $V{periodoAnual_nombre}]]></textFieldExpression>
			</textField>
			<subreport>
				<reportElement x="0" y="45" width="752" height="15" uuid="7aaf1203-ca63-488d-adfa-30b0282f9f8d"/>
				<subreportParameter name="periodoAnual">
					<subreportParameterExpression><![CDATA[$F{PERIODO_ANUAL}.longValue()]]></subreportParameterExpression>
				</subreportParameter>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<returnValue subreportVariable="periodoAnual_nombre" toVariable="periodoAnual_nombre"/>
				<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-PERIODOANUALNOMBRE-VARIABLE.jasper"]]></subreportExpression>
			</subreport>
		</band>
	</title>
	<pageHeader>
		<band height="30">
			<property name="com.jaspersoft.studio.unit.height" value="px"/>
			<printWhenExpression><![CDATA[$V{PAGE_NUMBER}.equals(1)]]></printWhenExpression>
			<staticText>
				<reportElement x="0" y="15" width="90" height="15" uuid="c904d035-9fd2-486b-b1cc-8b96734b08a5">
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<textElement verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="8" isBold="true"/>
				</textElement>
				<text><![CDATA[Unidad Ejecutora:]]></text>
			</staticText>
			<textField pattern="dd/MM/yyyy">
				<reportElement x="0" y="0" width="90" height="15" uuid="6642d4f9-2708-4a64-a826-074b4e93d139"/>
				<textElement textAlignment="Left" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="7" isBold="false" isItalic="false"/>
				</textElement>
				<textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="90" y="0" width="626" height="15" uuid="22fe0526-a008-43cf-a0b7-b467094f7a4a"/>
				<textElement textAlignment="Right" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="7" isBold="false"/>
				</textElement>
				<textFieldExpression><![CDATA["Página "+$V{PAGE_NUMBER}+" de"]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Report">
				<reportElement x="716" y="0" width="36" height="15" uuid="a89560aa-1613-4487-9db6-888cef96f1ed"/>
				<textElement textAlignment="Left" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="7" isBold="false"/>
				</textElement>
				<textFieldExpression><![CDATA[" "+$V{PAGE_NUMBER}]]></textFieldExpression>
			</textField>
			<subreport>
				<reportElement x="90" y="15" width="662" height="15" uuid="bf861b5f-a255-4326-8c93-061bbcaffd23"/>
				<subreportParameter name="unidadEjecutora">
					<subreportParameterExpression><![CDATA[$P{unidadEjecutora}.longValue()]]></subreportParameterExpression>
				</subreportParameter>
				<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
				<returnValue subreportVariable="unidadEjecutora_codigo_nombre" toVariable="unidadEjecutora_codigo_nombre"/>
				<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "R-PPI-PPO-SUB-UNIDADEJECUTORA-VARIABLE.jasper"]]></subreportExpression>
			</subreport>
			<textField evaluationTime="Band" pattern="">
				<reportElement x="90" y="15" width="662" height="15" uuid="38d29481-2668-43ef-91d5-d28dacb0699a"/>
				<textElement verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="7" isBold="false" isPdfEmbedded="false"/>
				</textElement>
				<textFieldExpression><![CDATA[$V{unidadEjecutora_codigo_nombre}]]></textFieldExpression>
			</textField>
		</band>
	</pageHeader>
	<detail>
		<band height="20" splitType="Stretch">
			<textField isStretchWithOverflow="true">
				<reportElement stretchType="RelativeToBandHeight" x="0" y="0" width="90" height="20" uuid="185c6078-e0f3-4a1e-8d5b-1cba511cdabe">
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<box topPadding="2" bottomPadding="2"/>
				<textElement verticalAlignment="Top">
					<font fontName="DejaVu Sans" size="8"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{CODIGO_UE}]]></textFieldExpression>
			</textField>
			<textField isStretchWithOverflow="true">
				<reportElement stretchType="RelativeToBandHeight" x="90" y="0" width="190" height="20" uuid="58218cf0-1cb7-4b07-b199-b0b5aa264bc7"/>
				<box topPadding="2" bottomPadding="2"/>
				<textElement>
					<font fontName="DejaVu Sans" size="8"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{NOMBRE_UE}]]></textFieldExpression>
			</textField>
			<textField isStretchWithOverflow="true">
				<reportElement stretchType="RelativeToBandHeight" x="280" y="0" width="300" height="20" printWhenGroupChanges="METAS_y_ACCIONES" uuid="8dc52787-bff2-4d49-9051-7e08db69d5da"/>
				<box topPadding="2" bottomPadding="2"/>
				<textElement>
					<font fontName="DejaVu Sans" size="8"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{APORTE_ESTRATEGICO}]]></textFieldExpression>
			</textField>
			<textField isStretchWithOverflow="true">
				<reportElement stretchType="RelativeToBandHeight" x="580" y="0" width="172" height="20" uuid="d21758f6-de13-455c-9e13-c0b7b24f4099"/>
				<box topPadding="2" bottomPadding="2"/>
				<textElement textAlignment="Center" verticalAlignment="Top">
					<font fontName="DejaVu Sans" size="8"/>
				</textElement>
				<textFieldExpression><![CDATA[$F{AVANCE_ACUMULADO}+"%"]]></textFieldExpression>
			</textField>
		</band>
	</detail>
	<summary>
		<band height="15">
			<property name="com.jaspersoft.studio.unit.height" value="px"/>
			<textField isStretchWithOverflow="true" evaluationTime="Report">
				<reportElement stretchType="RelativeToBandHeight" x="580" y="0" width="172" height="15" uuid="b8aa19eb-9eda-424b-8b00-87a7e4624a3e">
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<box>
					<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
					<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
					<bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
					<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="8"/>
				</textElement>
				<textFieldExpression><![CDATA[$V{AVANCE_ACUMULADO2}.setScale(2, RoundingMode.HALF_UP)+"%"]]></textFieldExpression>
			</textField>
			<staticText>
				<reportElement stretchType="RelativeToBandHeight" x="0" y="0" width="580" height="15" uuid="798c9aeb-72fc-4b41-8d6c-69c825a9fd80">
					<property name="com.jaspersoft.studio.unit.width" value="px"/>
					<property name="com.jaspersoft.studio.unit.height" value="px"/>
				</reportElement>
				<box>
					<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
					<leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
					<bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
					<rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
				</box>
				<textElement textAlignment="Right" verticalAlignment="Middle">
					<font fontName="DejaVu Sans" size="8" isBold="true"/>
				</textElement>
				<text><![CDATA[Grado de Avance General:]]></text>
			</staticText>
		</band>
	</summary>
</jasperReport>

Publicar el reporte en servidor desarrollo

  • Abrimos la terminal
  • Y vamos al directorio
cd /home/tavo/JaspersoftWorkspace/MyReports/
  • Ingresamos al servidor remoto
ssh cgi@10.0.100.30
  • Nos ubicamos a la dirección del reporte
cd /reportes/
  • Lo identificamos
  • Lo enviamos al servidor
//Codigo
scp REPORTE.jasper tomcat8@10.0.2.231:/reportes

// Ejemplo:
scp R-PPI-PPE-AVANCEACCIONESTRATEGICA.jasper tomcat8@10.0.2.231:/reportes

scp R-PPI-PPE-METPORENCMON.jasper tomcat8@10.0.2.231:/reportes
  • pass: user4tomcat
  • RESULTADO
tomcat8@10.0.2.231's password: 
R-PPI-PPE-AVANCEACCIONESTRATEGICA.jasper      100%   43KB 150.2KB/s   00:00 

Desplegar Reporte en SIGESA

  • Luego debemos registrar el nuevo reporte dentro del sistema
  • ingresamos a:
Lista de Reportes
  • Le damos nuevo
  • Completamos:
  • Nombre: R-PPI-PPE-AVANCEACCIONESTRATEGICA
  • Descripción: PPI-PPE: Reporte de Avance de Acciones Estrategicas
  • Tiene subreportes: Si
  • Luego debemos reportar el recurso
Lista de Recursos
  • Nuevo, pero aqupi debemos registrarlo de la siguiente forma
/pages/reporteJobLauncher.xhtml?reporte=R-PPI-PPE-AVANCEACCIONESTRATEGICA
  • Y le debemos asiganar un rol, para PPI UNA_PPE_ADMIN
  • Ahora debemos registrar el recurso en lista de menu
Lista de Menú
  • Agregamos el menú
  • PPE – Reportes
  • /pages/reporteJobLauncher.xhtml?reporte=R-PPI-PPE-AVANCEACCIONESTRATEGICA
  • Reporte Avance Acciones Estratégicas

Parametros

  • Regresamos a la lista de reportes
Lista de reportes
  • Vamos a parametros
  • Agregamos el parametro
  • etapaPlan
  • Etapa Plan
  • Objeto
  • Requerido
  • Luego lo configuramos
  • cr.ac.una.cgi.sigesa.ppi.ppo.domain.EtapaPlan
  • nombre
  • completeEtapaPlanByTipoEtapaEvaluacionReporte
  • planAporteEstrategico_etapaPlan_label
  • EtapaPlanLOVBean
  • etapaPlanByTipoEtapaEvaluacionReporteLOV
  • EtapaPlanBean
  • EtapaPlanService
  • Agregamos el parametro «unidadEjecutora»
  • unidadEjecutora
  • Unidad Ejecutora
  • Requerido
  • Editamos el parametros
    • cr.ac.una.cgi.sigesa.epf.cpr.domain.UnidadEjecutora
    • codigo
    • completePPIUnidadEjecutoraInPAEAclReporte
    • planAporteEstrategico_unidadEjecutora_label
    • UnidadEjecutoraLOVBean
    • unidadesEjecutorasInPAEAclReporteLOV
    • UnidadEjecutoraBean
    • UnidadEjecutoraService
  • Ademas debemos crear estos metodos

UnidadEjecutoraService.java

/**
     * Devuelve una pagina de unidades ejecutoras que tengan un Plan de Acción Estratégica
     * @author Gustavo Matamoros González 
     * @param filterSpecifications
     * @param query
     * @param acl
     * @param pageable
     * @return {link Page<UnidadEjecutora>}
     * @issue PPI-372
     * @sinse 10/05/2023
     */
    public Page<UnidadEjecutora> completePPIUnidadEjecutoraInPAEAclReporte(ArrayList<FilterSpecification> filterSpecifications, String query, String acl, Pageable pageable);

    /**
     * Devuelve una pagina de unidades ejecutoras que tengan un Plan de Acción Estratégica
     * @author Gustavo Matamoros González  
     * @param query
     * @param filterSpecifications
     * @param pageable
     * @return {link Page<UnidadEjecutora>}
     * @issue PPI-372
     * @sinse 10/05/2023
     */
    public Page<UnidadEjecutora> completePPIUnidadEjecutoraInPAEAcl(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable);


    /**
     * Devuelve una pagina de unidades ejecutoras que tengan un Plan de Acción Estratégica
     * @author Gustavo Matamoros González  
     * @param filterSpecifications
     * @param pageable
     * @param filterParams
     * @return {link Page<UnidadEjecutora>}
     * @issue PPI-372
     * @sinse 10/05/2023
     */
    public Page<UnidadEjecutora> unidadesEjecutorasInPAEAclLOV(ArrayList<FilterSpecification> filterSpecifications, Pageable pageable, Map<String, Object> filterParams);

    /**
     * Devuelve una pagina de unidades ejecutoras que tengan un Plan de Acción Estratégica orientado a reportes
     * @author Gustavo Matamoros González  
     * @param filterSpecifications
     * @param pageable
     * @param filterParams
     * @return {link Page<UnidadEjecutora>}
     * @issue PPI-372
     * @sinse 10/05/2023
     */
    public Page<UnidadEjecutora>  unidadesEjecutorasInPAEAclReporteLOV(ArrayList<FilterSpecification> filterSpecifications, Pageable pageable, Map<String, Object> filterParams);

UnidadEjecutoraServiceImpl.java

@Override
    public Page<UnidadEjecutora> completePPIUnidadEjecutoraInPAEAclReporte(ArrayList<FilterSpecification> filterSpecifications, String query, String acl, Pageable pageable) {
        return completePPIUnidadEjecutoraInPAEAcl(query, filterSpecifications, pageable);
    }
  

    @Override
    public Page<UnidadEjecutora> completePPIUnidadEjecutoraInPAEAcl(String query, ArrayList<FilterSpecification> filterSpecifications, Pageable pageable) {
        
        String aclJson = getAclJSON("ppi_ppo_evaluacion_operativa_complete_unidad_ejecutora_acl");

        this.setFilterSpecifications(filterSpecifications);
        this.setAclSecure(aclJson);

        Specification specBusquedaCodigo = UnidadEjecutoraSpecs.BuscarUnidadEjecutoraPorCodigo(query);
        Specification specBusquedaPAE = UnidadEjecutoraSpecs.unidadesEjecutorasInPAE();

        Specification<UnidadEjecutora> specFinal = Specification.where(specBusquedaCodigo).and(specBusquedaPAE).and(this);

        Page<UnidadEjecutora> pagina = repository.findAll(specFinal,pageable);
        this.setAclSecure(null);
        return pagina;

    }

    @Override
    public Page<UnidadEjecutora> unidadesEjecutorasInPAEAclLOV(ArrayList<FilterSpecification> filterSpecifications, Pageable pageable, Map<String, Object> filterParams) {
        
        
        String acl = (String) filterParams.get("aclJson");
        String aclJson = getAclJSON(acl);
        
        Specification specBusquedaPAE = UnidadEjecutoraSpecs.unidadesEjecutorasInPAE();
        
        
        this.setFilterSpecifications(filterSpecifications);
        this.setAclSecure(aclJson);
        Specification<UnidadEjecutora> specFinal = Specification.where(specBusquedaPAE).and(this);
        Page<UnidadEjecutora> pagina = repository.findAll(specFinal,pageable);
        this.setAclSecure(null);
        return pagina;
    }

    @Override
    public Page<UnidadEjecutora>  unidadesEjecutorasInPAEAclReporteLOV(ArrayList<FilterSpecification> filterSpecifications, Pageable pageable, Map<String, Object> filterParams) {
        if (filterParams == null) {
            filterParams = new HashMap();
        }
        if (!filterParams.containsKey("aclJson")) {
            filterParams.put("aclJson", "ppi_ppo_evaluacion_operativa_complete_unidad_ejecutora_acl");
        }
        return unidadesEjecutorasInPAEAclLOV(filterSpecifications, pageable, filterParams);
    }