Pantalla en blanco - TED1f - jasper

Buenas tardes!
Estamos teniendo un inconveniente al querer imprimir el reporte de egreso “ted_1f” (emitir disposición), que luego de cargar los datos de la fecha y el nro de disposición, queda la pantalla en blanco (cuando debería descargar el pdf):
image

En el circuito de egreso, se define de la siguiente manera, solicitando esos dos datos:

Lo raro es que si bien de esta forma queda la pantalla en blanco, si vamos a la opción de egresados -> Actualizar trámites de egreso -> imprimir formularios, el ted_1f se imprime bien sin problemas.

Estamos en la versión 3.21.1, y este formulario esta personalizado. Probé el query de archivo jasper, y funciona sin problemas. También me fije el query del jasper sin personalizar (<path_guarani>/exportaciones/jasper/ted_1f.jasper) y también me funciona. Por último, en una virtual de desarrollo copié el jasper compilado de la sección de sin personalizaciones a las personalizaciones y sigue la pantalla en blanco. También probé borrar el archivo personalizado de "personalizacion/exportaciones/jasper" (para que tome el original) pero hace lo mismo. 

Adjunto el log de Guarani, más la salida del comando jasper que vio en otros posteos del foro:  java -Duser.language=es -Duser.country=AR -Djava.awt.headless=true -jar <path_guarani>/guarani/vendor/siu-toba/jasper/JavaBridge/WEB-INF/lib/JavaBridge.jar SERVLET_LOCAL:8081 5 /tmp/jasper.log &>/dev/null & 

espero cualquier comentario de ayuda o comando que pueda probar para saber porque no esta cargando el pdf. Aclaro es el único que no esta funcionando, el resto si se generan bien. Desde ya muchas gracias!

jasper.log (2,0 KB)
sistema.log.txt (4,0 KB)

Hola @nfern

En la ejecución de Jasper veo el siguiente error:

java.lang.RuntimeException: java.net.BindException: La dirección ya se está usando (Bind failed)

Veo que lo estas corriendo en el puerto 8081, los logs en realidad quedan en el archivo /tmp/jasper.log, revisa estos dos hilos para saber del tema:

Saludos.
2

Hola!

disculpas la demora, estaba probando algunas cosas. Bueno, luego de detener el proceso automático en /etc/rc.local, y correrlo manual, puedo ver bien el log de jasper. El tema es que sale error al procesar el TED1f desde la opción "Actualizar Trámites de Certificación" -> "Emitir Disposición" (queda la pantalla en blanco), pero si busco el mismo egresado desde la opción "Actualizar Trámites de Certificación" -> "Imprimir Formularios" lo hace perfectamente.

Adjunto el pdf generado por la 2da opción, el log del sistema, y el log de jasper (agregué el generador del /tmp/jasper.log en el archivo de inicio /etc/rc.local para que quede el log), y también el jasper y jrxml que usamos personalizado.

En algunas pruebas salía error de java al querer convertir el nro_disposición_decano en entero, aunque en el jasper esta como string (ésto cuando corria jasper manualmente y no el del rc.local). Seguí otros posteos, revise la tabla mce_campos, probe cambiar el tipo_de_dato, y no logro que funcione el ted1f en ambas opciones ("emitir disposición" e "imprimir formularios") .

Como digo, actualmente lo genera bien en la opción de “imprimir formularios”. El query del jasper devuelve bien el resultado en pgadmin. La verdad que no sé que puede estar pasando, gracias!

PD: (quitar la extensión “.txt” del rar, lo agregué porque no me dejaba adjuntarlo)

jasper.log (9,2 KB)
sistema.log (79,6 KB)
TED1f_personalizado.rar.txt (17,1 KB)

Hola @nfern , gracias por los logs!!!

El error que arroja Jasper es el siguiente:

Apr 12 10:44:03 VMBridge ERROR: An exception occured: java.lang.NumberFormatException: Character / is neither a decimal digit number, decimal point, nor "e" n>
java.lang.NumberFormatException: Character / is neither a decimal digit number, decimal point, nor "e" notation exponential mark.

Apr 12 10:44:03 VMBridge DEBUG: unref: FATAL: UNDECLARED RuntimeException PASSED TO PHP. java.lang.Exception: CreateInstance failed: new java.math.BigDecimal(>

Es parecido a lo que pasa en estos hilos:

Revisa en la función vista_jasperreports de php/operaciones/_lib/ci_imprimir_formulario.php que no haya ningún parámetro con valor NULL, agrega lo siguiente para que escriba en los logs:

		toba::logger()->debug('=== parametros ===');
		toba::logger()->var_dump($this->parametros);
		foreach ($this->parametros as $param) {

Preguntas:
¿existe la imagen /usr/local/proyectos/guarani/personalizacion/www/img/logo_institucion.jpg?

Veo que tenes personalizado el TED1f.jrxml, ¿que pasa si probas con el TED1f.jrxml original?

Saludos.
2

Hola!

Bueno, estuve probando las opciones que me dijiste:

Preguntas:
¿existe la imagen /usr/local/proyectos/guarani/personalizacion/www/img/logo_institucion.jpg ?

Si, existe el archivo, esta desde otras versiones anteriores, y además en la opción de "reimprimir formularios" lo imprime sin problemas.

Tengo una virtual de prueba local, por lo que reinicié varias veces el servicio de jasper, pero no cambia nada. Agregué las lineas:
	toba::logger()->debug('=== parametros ===');
	toba::logger()->var_dump($this->parametros);
Adjunto la salida.


Para agregar información: Probé desactivando las personalizaciones y hace lo mismo: en "reimprimir formularios" funciona bien, pero si voy a "emitir disposición" queda la pantalla en blanco. 
Otro dato: fui al circuito de egresados, quité la fecha de disposición del formulario, y probé con el "nro disposición" asi: "41/UDC-ME 2024" seguía saliendo error, aunque ahora marcaba que **no se podía convertir a entero el nro_disposición**. Lo que hice fue dejar solo el número "41" y **sí funcionó** (con el TED1f personalizado y sin personalizar, **sin la fecha** y con el **número siendo solo un número**).

Por último: Una vez agregada la información de la "fecha disposición" por el formulario, y guardado el dato en la base, quito esa opción desde el circuito de egreso, y voy a "revisar disposición" y luego "emitir disposición" nuevamente, y genera perfectamente el pdf sin problemas con la personalización que hicimos. Por lo que deduzco que el tema está en que no se puede formatear la fecha ingresada para mostrarla por jasper, o algo así esta pasando. 

Ahora, lo que yo necesito es que en el formulario de "emitir disposición" se pueda ingresar la fecha (porque muchas veces no es la fecha actual), y que el número de disposición tenga ese formato ("nro/año-SAC-UDC").

No sé cual es el problema con la fecha y el formato del número de disposición, sólo se modificó el jasper, el resto no se personalizó nada de esta operación.

sistema.log (679,4 KB)
query_jasper_ted1f.sql.txt (4,6 KB)
jasper.log (558,1 KB)

Hola @nfern

El problema esta con nro_disposicion_decano, fíjate:

[DEBUG][guarani] === parametros ===
[DEBUG][guarani] array (
  0 => 
  array (
    'nombre' => 'nro_disposicion_decano',
    'valor' => '4100',
    'tipo_de_dato' => 'E',
  ),
  1 => 
  array (
    'nombre' => 'fecha_disposicion_decano',
    'valor' => '2024-02-19',
    'tipo_de_dato' => 'F',
  ),
  2 => 
  array (
    'nombre' => 'nro_solicitud',
    'tipo_de_dato' => 'E',
    'valor' => 348,
  ),
)


[DEBUG][guarani] === parametros ===
[DEBUG][guarani] array (
  0 => 
  array (
    'nombre' => 'nro_disposicion_decano',
    'valor' => '4141',
    'tipo_de_dato' => 'E',
  ),
  1 => 
  array (
    'nombre' => 'fecha_disposicion_decano',
    'valor' => '2024-02-19',
    'tipo_de_dato' => 'F',
  ),
  2 => 
  array (
    'nombre' => 'nro_solicitud',
    'tipo_de_dato' => 'E',
    'valor' => 348,
  ),
)

Se esta pasando como 'tipo_de_dato' => 'E' (numero entero), pero la columna sga_certificados_otorg.nro_disposicion_decano es VARCHAR(30).

¿eso es personalización de ustedes?

Saludos.
2

Ademas de este error:

VMBridge ERROR: An exception occured: java.lang.NumberFormatException: Character / is neither a decimal digit number, decimal point, nor “e” notation exponential mark.

Tenes este otro:

VMBridge ERROR: An exception occured: java.lang.NumberFormatException: For input string: “41/2024-SAC-UDC”

Vamos a probar si ocurre el error en la versión 3.21.3.

Saludos.
2

Hola!

No, no hemos modificado nada mas que el jasper con el iReports. En otro posteo vi que hablan de cambiar ese campo en la tabla mce_campos:

select * from mce_campos where campo = ‘nro_disposicion_decano’;

Igualmente, con el jasper personalizado, en la opción "imprimir formularios" muestra bien el numero de disposición cuando está guardado en la base con el formato que nosotros necesitamos:

image

El problema principal que tenemos en la acción de "emitir disposición", si dejamos la "fecha_disposicion" sale error, y si la quitamos pero ponemos el numero disposición con ese formato, también sale error, no así si generamos todo desde esa opción **pero imprimimos desde "imprimir formularios"**. 

No creo que sea problema de los datos de la base, ni del query, ni de los jasper. Hay algo que no esta funcionando en la opción "emitir disposición", y en esa nunca personalizamos nada nosotros.

Hola @nfern

Ya pude reproducir el error y encontrar una solución al mismo:

En » Egresados » Actualizaciones » Administrar Circuitos de Egreso seguramente agregaste Nro de disposición de Decano y eso te pide dicho Nro de disposición de Decano antes de imprimir.

El problema es que en la tabla mce_campos el campo nro_disposicion_decano quedo como entero cuando en realidad recibe un string, ejecutando la siguiente query se soluciona:

UPDATE mce_campos SET tipo_de_dato = 'S' WHERE campo = 'nro_disposicion_decano';

Saludos.
2

Hola!

Bueno, después de probar lo que mencionaste, si quito la fecha de disposición del formulario “emitir disposicion” funcionaba correctamente, tanto en esa operación como en “imprimir formularios”.

Como lo que yo necesitaba era que aparezca esa fecha en el formulario, y que se pueda mostrar en el PDF, seguí probando y siempre el error me daba con la fecha. Entonces probé cambiar el tipo_de_dato de la tabla mce_campos a “string”:

update mce_campos set tipo_de_dato = ‘S’ where campo = ‘fecha_disposicion_decano’;

Después de esto, quedo funcionando todo correctamente. Debo destacar que en la tabla sga_certificados_otorg, el campo fecha_disposicion_decano sigue siendo de tipo date:

select nro_solicitud, persona, certificado, alumno, plan_version, nro_disposicion_decano, fecha_disposicion_decano from sga_certificados_otorg where nro_solicitud = 348;

En fin, por si a alguien más le sirve, los dos cambios que hice fue:

update mce_campos set tipo_de_dato = ‘S’ where campo = ‘nro_disposicion_decano’;
update mce_campos set tipo_de_dato = ‘S’ where campo = ‘fecha_disposicion_decano’;

De paso actualicé el query del reporte, ya que había algunas diferencias con el original del Guarani 3.21.1 (en la parte del genero del alumno, y el nombre del certificado). Además, en vez de cambiar el valor del campo “fecha_actual”, lo que hice fue agregar el campo “fecha_disposicion_decano” y mostrar ese en el reporte.

Desde ya muchas gracias por la ayuda, saludos!

Perfecto @nfern

Ya creamos el ticket #47812 para resolverlo en una futura versión.

Si en la tabla mce_campos el tipo_de_dato es “E” solo permitirá ingresar números enteros, si necesitas cualquier carácter ponele “S”.

Saludos.
2