personalizacion acta de examen

Hola

Tengo que personalizar el acta de examen y estaba tratando de modificarla.
Una cosa simple, que me aparezca el legajo del alumno en lugar del dni.
No lo logré. Como se hace?

Emilio

Hola Emilio,
personalizar el acta de exámen con el cambio que mencionás involucraría la creación de un reporte jasper propio. Además deberías verificar si es necesario modificar la clase donde se genera la impresión para agregar el dato nuevo que querés visualizar, y el metadato (cuadro) a partir del cual se obtiene la información enviada al jasper para agregar esa columna, de ser necesario.
En este caso en particular, revisando las condiciones anteriores, los pasos serían:

  1. Generar un archivo jasper propio, a partir del archivo: $path_instalacion_guarani\exportaciones\jasper\ActaExamenes.jrxml. Abriendo este acta desde el iReports deberías cambiar la columna Identificación y el campo $F{documento} por los correspondientes al legajo, asociándolo además como field del reporte. Este nuevo archivo lo guardarás en tu carpeta de personalizaciones con el mismo nombre, compilándolo para generar el .jasper asociado ($path_instalacion_guarani\personalizacion\exportaciones\jasper\ActaExamenes.jrxml).
  2. Al revisar la clase \php\operaciones\examenes\actas\imprimir_acta\ci_edi_imprimir_acta_examen.php podrás ver que en el método vista_jasperreports, los datos del listado de alumnos se toman desde el cuadro. Lo que deberías revisar entonces es si este cuadro tiene esa columna Legajo. En este caso particular, el objeto 38000500 (alumnos) ya posee dicha columna, por lo que no deberás realizar ninguna modificación. Si no fuera este el caso, deberías personalizar ese metadato para agregarla.
  3. Por último, en caso de haber tenido que modificar ese cuadro, deberías revisar la sql con la que se carga, para asegurarte que incluya el campo deseado en el select (y modificarla personalizando dicha clase co de ser necesario).

Para el caso que consultás entonces, bastaría con generar el reporte jasper como se indicó en el primer paso.

Saludos,
Gabriela.

Hola

Si yo cambio en ese reporte F{documento} por F{legajo} habiendo agregado legajo como field, me aparece null en el pdf.

En el xml donde pasan los datos está legajo.

Emilio

Hola Emilio,
con los pasos que te mencioné anteriormente debería visualizarse correctamente el cambio.
Deberías revisar lo siguiente:

  1. Cómo definiste el valor del field en el iReports? Te quedó igual que el campo documento?
  2. Tenés seteado algún valor de Legajo para ese alumno? O puede ser que venga en Null?
  3. Definiste algún valor para ese textfield en el iReports para los casos en que sea Null? (por ejemplo ‘Blank When Null’ como está definido en otros expresiones para evitar que en el pdf aparezca un null y se muestre el espacio en blanco).
    Saludos,
    Gabriela.

no. no se visualiza correctamente.

1.- mas tarde te mando la captura de pantalla del ireport. no tengo mucha idea de esto. Lo que hice fue clickear en donde decía documento y reemplacé por legajo. Por ahi ese es el error.

2.- si. los alumnos tienen legajo. estoy imprimiento actas viejas.

3.- No. Si no no aparecería null.

Emilio

la adjunta es la pantalla de ireport5.0 que tengo a mano.
para hacerlo usé 3.5.3 (o cercana).


legajo.JPG

legajo.JPG_thumb.png

Emilio,
la captura de imagen mucho no nos sirve porque no puedo saber cómo está definido el field, sólo veo el textfield. El campo legajo lo tenés que agregar con valores análogos a los restantes: Name: legajo, Field Class: java.lang.String, Description: dato[@clave=“legajo”]/@valor.
Para que no aparezcan los Null en caso de no tener valor, en las propiedades asociadas al textfield que muestra el legajo tenés que tildar el checkbox: Blank When Null.
Si aún así no lográs visualizarlo correctamente, te pido que me envies el archivo jrxml.

Saludos,
Gabriela.

Era esto

Description: dato[@clave="legajo"]/@valor.

Gracias.

Seguiré jugando con el formato.

Emilio

Buen día,

Estoy tratando de personalizar las actas de examen y cursado, me encuentro con el inconveniente que no se en que ruta se encuentra el XML que se genera por aplicación al momento de imprimirla, si es que lo genera el Guaraní.

Por lo que estuve viendo en el php de la clase, guarda los datos en un cuadro de toba. Pero lo que yo necesito es poder traerme los datos en algún XML para utilizarlo como datasource en mi host local de desarrollo y hacer los preview con el ireport para ver como va quedando, sin tener que commitear el archivo .jrxml en la aplicacion y generar la solicitud correspondiente.

Emilio si no entendí mal vos encontraste estos archivos XML?

Gracias.
Saludos

Hola Gabriel,
no sé si te estoy entendiendo bien a qué archivos te referís, pero te comento cómo se manejan estos reportes en Guaraní, para ver si te ayuda con lo que necesitás hacer.
En general, tenemos dos formas en las que se realizan las impresiones Jasper en Guaraní, o dos tipos de archivos .jrxml (que se encuentran en <path_guarani>/exportaciones/jasper). En una se realiza una consulta sql a la BD de negocios para obtener los datos a mostrar en el reporte o constancia, a partir de los parámetros recibidos. En la otra, se pasan los datos desde el código php a Jasper en formato xml, para lo cual Toba genera un archivo temporal (en <path_guarani>/temp), que se elimina una vez generado el pdf.

En el caso de las Actas, tanto de Exámenes como de Cursadas, se utilizó este segundo método. En la pantalla de previsualización se ve el cuadro de Alumnos, con todos los datos asociados, que serán los mismos que se mostrarán en la impresión. Si vas al código php, por ej. en la clase: ci_edi_imprimir_acta_examen.php, en el método ‘vista_jasperreports’ podés ver que se pasan los parámetros, datos de encabezado, etc. y en las últimas líneas el xml, con sentencias del estilo:
$xml = $this->dep(‘alumnos’)->vista_xml();
$report->set_xml(utf8_e_seguro($xml));
Luego en el archivo jrxml correspondiente (ActaExamenes.jrxml), si lo abrís con el iReports, vas a ver que en la Report Query, en lugar de definirse un lenguaje sql y una consulta a la bd de guaraní, tenés algo del estilo:



que define que tomará los datos de ese archivo xml temporal que se definió y pasó al reporte. Esto te permite definir los diferentes fields que podés utilizar para mostrar en los componentes y texto, con valores como por ej: dato[@clave=“nota”]/@valor para el campo ‘nota’.

La forma más simple para realizar personalizaciones depende siempre tanto del tipo de reporte, como de cuáles son los datos o los formatos de visualización que deseen modificar.
Si quieren personalizar los datos que se muestran para cada fila, por Alumno, lo más conveniente sería que personalicen el cuadro (metadato) de alumnos en en Editor de Toba, usando el mismo código php para el método vista_jasperreports, y luego modifiquen el jrxml para agregar esos nuevos campos. Pueden realizar todas las pruebas que quieran de manera local, sin necesidad de commitear el archivo jrxml, simplemente volviendo a generar la impresión desde la operación correspondiente.

Saludos,
Gabriela.

Buen día Gabriela,

Nosotros no vamos a agregar ningún dato en el cuadro. Necesitamos personalizar el formato del acta de acuerdo a los parámetros definidos por la universidad.

Lo que necesitamos es el archivo XML temporal, que no se genera en la ruta que me indicas, pero seguro se genera bien en algún directorio porque la impresión del acta se realiza sin problemas.
Luego cuando estamos probando en la personalización abrimos el jrxml (copiado en nuestra maquina local, no en la aplicación), cargamos como datasource ese archivo XML en el ireport para probar los cambios en el reporte sin tener que acceder a la aplicación de Guaraní para generar los datos.

Es posible que ese archivo temporal XML se este guardando en otra ruta o como deberiamos hacer para obtenerlo antes que se elimine?

Buen día Gabriel,
como te mencionaba anteriormente el archivo xml lo genera Toba de manera temporal para poder pasarlo a Jasper en la ruta especificada, pero se elimina de forma inmediata, una vez que ya lo levantó y se generó el pdf. Por ese motivo no van a verlos en ningún path del sistema.
Lo más aconsejable para probar esas impresiones es modificar lo que deseen en el jrmxl, compilarlo y volver a imprimir desde el sistema.
Como decías: “hacer los preview con el ireport para ver como va quedando, sin tener que commitear el archivo .jrxml en la aplicacion”, te aclaraba que no hace falta que commitees nada, y podés realizar estas pruebas de forma local.

Si no quieren realizar la impresión desde el sistema, lo que deberían hacer es modificar localmente el código de Toba para comentar en la clase:
<path_guarani>/lib/toba/php/nucleo/lib/salidas/toba_vista_jasperreports
la línea: unlink($this->xml_path); del método generar_salida.
De esa forma no se eliminará el archivo xml y les irán quedando almacenados los archivos temporales generados.

Saludos,
Gabriela.

Buenísimo Gabriela,
Exactamente eso era lo que necesitábamos, perdón si no me supe expresar con claridad, vamos a probar comentar esa linea en la clase para utilizar los archivos temporales en la personalización. Luego la volvemos a comentar.

Muchas gracias por todo.
Saludos