Diferencia entre revisiones de «SIU-Guarani/Version3.11.0/personalizaciones/impresiones»

De SIU
Saltar a: navegación, buscar
(Reemplazar la constancia o certificado provisto por el sistema por uno nuevo)
m (Gfranz movió la página SIU-Guarani/Version3.11.0/personalizaciones/constancias a SIU-Guarani/Version3.11.0/personalizaciones/impresiones: Generalización de la personalización de constancias a impresiones)
(Sin diferencias)

Revisión del 13:00 15 oct 2015

Personalizar impresiones

Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando JASPER, un motor de generación de reportes basado en JAVA soportado por SIU-Toba.

La personalización de cualquier impresión en Guarani 3 dependerá de lo que se quiera personalizar, aunque comúnmente comprende desarrollar una plantilla JASPER para la impresión del formato deseado. Para esto se utiliza iReports para la edición de las mismas, en archivos .jrxml, que luego se compilan generando sus correspondientes archivos .jasper En términos generales, tanto agregar como modificar una plantilla existente, implicará que se agreguen los archivos .jrxml y .jasper propios correspondientes a la misma, en el path: $guarani_dir/personalizacion/exportaciones/jasper. Si se trata de un comprobante nuevo tendrá su nombre propio, en caso de estar personalizando uno existente, tendrá el mismo nombre que el provisto por Guaraní. De esta forma, el sistema al intentar levantar el archivo asociado al comprobante que se desea imprimir, verifica en primera instancia si existe un archivo con ese nombre en la carpeta indicada de personalizaciones, con lo cual se imprimirá la versión propia. En otro caso, utilizará la plantilla asociada en Guaraní para la impresión.

Dentro de todas las impresiones que se realizan en Jasper en el sistema: Constancias de solicitud manual, Certificados de Egreso, Actas, Reportes, etc, en Guaraní se utilizaron dos tipos de .jrxml diferentes, en cuanto a la forma en que se envían y recuperan los datos a mostrar:

  • Lenguaje Sql:
    En esta alternativa, en el archivo .jrxml se realiza una consulta sql a la BD de negocios de Guaraní para obtener los datos a mostrar en el reporte o constancia, a partir de los parámetros recibidos. Editando el jrxml desde el iReports, en la Report Query se define el query language como Sql y se especifica la consulta con los campos que se desean recuperar.
  • Lenguaje Xml:
    En este caso, además de los parámetros básicos que se envían, se pasan los datos desde el código php a Jasper en formato xml, para lo cual Toba crea un archivo temporal (en $guarani_dir/temp), que se elimina una vez generado el pdf. En la Report Query, se define el query language como XPath y se especifica dónde se ubicará el contenido ('/tabla/datos/fila'). Esto permite definir los diferentes campos a utilizar para mostrar en el contenido de la plantilla, con valores como por ej: para el campo: id_clave, valor: dato[@clave="id_clave"]/@valor.

Esta alternativa se utiliza generalmente cuando en la operación del sistema desde la cual se realiza la impresión, se previsualizan en pantalla los mismos datos que desean mostrarse en el pdf. Por ejemplo, para el caso de un reporte básico, o en Actas, tanto de Exámenes como Cursadas, donde en la operación se visualiza el cuadro de Alumnos con sus datos asociados.

Dentro del código de la clase php en la cual se implementa la impresión (asociada al componente Toba que define el evento), se encontrará el método: vista_jasperreports, dónde se codifican los detalles de la misma. En dicho método se incluirá la asociación con la plantilla .jrmxl correspondiente, a partir de las sentencias:

$path = guarani::get_path_reporte_jasper('plantilla.jasper');
$report->set_path_reporte($path);

(Observar que en el método get_path_reporte_jasper de la clase guarani_nucleo.php es dónde se define el mecanismo de buscar primero el archivo .jrmxl en la carpeta de personalizaciones, o tomar la plantilla brindada por Guaraní, en caso de no existir la propia.)

Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo:

$report->set_parametros($params); dónde $params es un arreglo asociativo

Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:

$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro
$report->set_xml(utf8_e_seguro($xml));

Personalizar Certificados y Constancias

Para el caso particular de las impresiones de Constancias y Certificados solicitados desde Guaraní, o generados de forma automática por el mismo, como consecuencia de algún cambio de estado del alumno, además de generar el archivo .jasper correspondiente al formato deseado para la impresión, pueden requerirse algunos pasos adicionales de configuración desde el sistema. Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.

Los pasos a seguir son:

  1. Desarrollar una plantilla JASPER en iReports para el certificado en cuestión. Para realizar esta tarea se recomienda tomar como partida alguna de las plantillas proporcionadas por el sistema y realizar todas las modificaciones deseadas. Tener en cuenta las siguientes cuestiones:
    • Guardar la constancia con un nombre diferente de los existentes en el directorio : $guarani_dir/personalizaciones/exportaciones/jasper
    • La constancia (plantilla JASPER) recibe como parámetros fijos siempre el logo (path) y el nro. de solicitud (registro de la tabla sga_constancias_solicitud). Este último se puede utilizar en una consulta de BD para obtener datos a mostrar en la constancia (ver constancias existentes). Alternativamente se puede utilizar un xml asociado. Recordar que además de los provistos, se pueden enviar mas parámetros que los anteriormente mencionados.
    • No hay restricción con ninguno de los objetos ni funcionalidades soportadas por la versión anteriormente mencionada de iReports (v5.6). Es importante utilizar ese editor y versión para el desarrollo del reporte, de lo contrario pueden ocurrir errores.
  2. Agregar la plantilla generada en el punto anterior al sistema a través de la operación "Administrar Plantillas". En el nombre del archivo no incluir el PATH.
    IMPORTANTE: Poner "Si" (valor por defecto) en el combo que indica si se permite asociar esta plantilla a una constancia para solicitud 'manual'. Como ejemplo, se recomienda analizar las constancias ya existentes en la instalación del sistema.
  3. Una Constancia o Certificado puede tener asociado un formulario donde se pidan mas datos de los que se le pasan por defecto (en caso de que sea necesario) o validaciones sobre las actividades académicas del alumno, etc. Para esto, se debe desarrollar un componente (CI) TOBA y agregar el código correspondiente. Anexo.
  4. Agregar la Constancia o Certificado nuevo asociándole la plantilla desarrollada y creada en el punto anterior en la operación "Administrar Constancias y Certificados" del sistema. Si se desarrollo un formulario especifico para este fin, asociarlo también mediante la operación mencionada.

CASO 2: Personalizar un certificado existente

Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en 3 sub-casos.
IMPORTANTE: Si bien como el título de esta sección indica, la idea de realizar ésto es cambiar un certificado provisto por el sistema dándole otro formato o utilidad, para todos los casos especificados próximamente se recomienda en lugar de realizar los cambios sobre las plantillas enviadas, modificarlas desde el editor (iReport) pero grabarlas con otro nombre y agregarlas como una nueva plantilla del sistema a través de la opción "Administrar Plantillas". De esta forma se evitan conflictos con futuras versiones y actualizaciones del sistema que incluyan un cambio en las plantillas estándares.

Reemplazar la constancia o certificado provisto por el sistema por uno nuevo

Este proceso implica simplemente:

  1. Desarrollar una plantilla JASPER en iReports para el certificado en cuestión. Para realizar esto se recomienda tomar como base la plantilla proporcionada por Guaraní para dicho certificado y, a partir de esta, realizar todas las modificaciones deseadas.
  2. Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: $guarani_dir/personalizaciones/exportaciones/jasper.
  3. Compilarla para generar el archivo .jasper que utiliza el sistema para la impresión de la constancia.
    ATENCIÓN: Si la plantilla original tiene un Formulario asociado, la nueva plantilla deberá tener como parámetros los que pase el formulario dinámicamente y envía a JASPER para la generación del PDF de la Constancia. Adicionalmente, si no se agrega algún parámetro, deberá personalizarse también la clase php correspondiente para codificar su pasaje.

Cambiar el logo o el texto de una constancia o certificado provisto por el sistema

Cambiar el texto
  1. Abrir la constancia que se desea modificar (archivo .jrxml desde iReport v5.6)
  2. Realizar las modificaciones correspondientes.
  3. Guardar la plantilla con otro nombre.
  4. Compilarla para generar el archivo .jasper que utiliza el sistema para la impresión de la constancia.
  5. Agregar la plantilla generada en el punto anterior al sistema a través de la operación "Administrar Plantillas". En el nombre del archivo no incluir el PATH.
    IMPORTANTE: Poner "Si" (valor por defecto) en el combo que indica si se permite asociar esta plantilla a una constancia para solicitud 'manual'. Como ejemplo, se recomienda analizar las constancias ya existentes en la instalación del sistema.
  6. En la operación "Administrar Constancias y Certificados" del sistema, ubicar la Constancia a remplazar y editarla eligiendo la nueva plantilla desarrollada en lugar de la que tiene asociada actualmente.
    ATENCIÓN: Si la plantilla tiene un Formulario asociado, la nueva plantilla deberá tener como parámetros los que pase el formulario dinámicamente y envía a JASPER para la generación del PDF de la Constancia (lo mismo que lo señalado en el caso anterior).

Existen tres formas de realizar el cambio del logo:

  1. Realizar los mismos pasos enumerados anteriormente ("Para cambiar el texto") y elegir la imagen directamente desde la plantilla en lugar de utilizar el logo como parámetro.
    ATENCIÓN: la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.
  2. Agregar el archivo "logo_institucion.jpg" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/
    ATENCIÓN: Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.
  3. Modificar el método personalizable: get_path_logo_impresion() de la clase "guarani" en el archivo "$toba_dir/proyectos/guarani/personalizacion/php/nucleo/_lib/guarani.php" indicándole el nombre del archivo que contiene la imagen. Este es el menos recomendado de los 3 puntos porque implica una redefinicion del código del sistema, además de contar con las mismas restricciones especificadas en el punto 2 (el tamaño y ubicación)

Agregar más datos a un certificado o constancia existente

Las constancias existentes, obtienen los datos a mostrar partir de consultas SQL. Para esto, si se desea obtener algún campo extra a mostrar en el reporte, se debe modificar la consulta editando el archivo .jrxml de la constancia deseada y agregando el campo a incluir en la misma. También se debe agregar como campo (Field) del reporte y luego incluirlo en la sección deseada del mismo. Si el dato que se desea agregar no fuera posible obtenerlo a partir de la consulta SQL, o se desea solicitar su valor al usuario, etc...se debe desarrollar un formulario y asociarlo a la constancia en cuestión. Para esto, ver el Anexo.
IMPORTANTE:

  • Recordar lo planteado al comienzo de esta sección: Si bien la idea de realizar esto es cambiar un certificado provisto por el sistema añadiendo nuevos campos, se recomienda en lugar de realizar los cambios sobre las plantillas enviadas, modificarlas desde el editor (iReport) pero grabarlas con otro nombre (por ej.: Constancia Alumno Regular - UNS) y agregarlas como una nueva plantilla del sistema a través de la opción "Administrar Plantillas". De esta forma se evitan conflictos con futuras versiones y actualizaciones del sistema que incluyan un cambio en las plantillas estándares. De hecho, si se desea, para limpiar el combo al asociar una plantilla a una constancia nueva o existente que utilice la plantilla recién creada en lugar de la original, se puede setear las constancia enviadas por el sistema y modificada por estas nuevas, como no habilitadas para la asociación a constancias que se permiten solicitarlas manualmente.
  • La constancia (plantilla JASPER) recibe como parámetros fijos siempre el logo (path) y el nro. de solicitud (registro de la tabla sga_constancias_solicitud). La idea seria realizar una consulta (o modificar la existente) obteniendo los datos a partir de cruzar las tablas pertinentes de la BD tomando como base el nro. de solicitud.
  • Una vez realizadas las modificaciones, recordar compilarla para generar el archivo .jasper que utiliza el sistema para la impresión de la constancia.