Datos Accesibles desde reporte jasper (SOLUCIONADO)

Mi consulta es saber que datos son accesibles desde un reporte jasper, yo entiendo que las variables que aparecen en “Ver datos XSL disponibles” son los que luego podre acceder desde iReport en el jasper no?

Como podria hacer para agregar el dato de fecha de autorización de una SBS en el jasper PDF, siendo que este dato no esta disponible en “Ver datos XSL disponibles” de SBS.

Muchas GRacias

Saludos

Ulises

Hola Ulises,

Efectivamente, lo que ves en la operación Ver datos XSL disponibles es lo que se puede acceder y usar desde jasper.

La forma de hacerlo es personalizar el sistema para agregar ese campo extra a la salida de los datos. Existen dos maneras, pero por ahora es solo posible personalizar (editar del sistema mismo) los PHP para agregar esa información extra. En la próxima versión hay mejoras respecto a este punto. A continuación detallo los archivos que hay que editar y adaptar para agregar el campo.

En el archivo php/solicitud_suministro/zona_solicitud_suministro2.php editar el método get_parametros_url en la línea 105 para agregar al final de la clave “ver_solicitud” la llamada a un nuevo método y recopilar los datos requeridos (el … es para resumir por espacio nada más):


	$vinculos = array(
		'ver_solicitud' => "...&XSL__dao_solicitud_suministro__get_autorizacion_actual=id_registro||{$identificador}",
		'ver_anexo'     => "$base&xsl_archivo_plantilla=solicitud_suministro_anexo",
	);

Luego agregar al archvo php/solicitud_suministro/dao_solicitud_suministro.php el siguiente método:


	function get_autorizacion_actual($filtro)
	{
		// suponemos no existen niveles de autorización, de lo contrario buscar por usuario y filtrarlo.
		$filtro['id_tabla'] = constantes::get('ID_TABLA_SOLICITUDES');

		$autorizacion = dao_consultas()->get_autorizacion_actual($filtro);

		return $autorizacion;
	}

Con esto, estarías en condiciones de visualizar en la operación Ver datos XSL disponibles una nueva entrada bajo el índice get_autorizacion_actual. Solo resta consumirlo desde la salida JasperReports, personalizandola adecuadamente (esto lo dejo como tarea para el hogar :smiley: ).

Espero sea de ayuda, saludos!!


ver_datos_xsl_disponibles.png

ver_datos_xsl_disponibles.png

Hola Sergio,

Segui los pasos que me indicaste y llegue perfectamente hasta donde me mostras.

El tema que intento acceder desde jasper ireport al nuevo parametro “fecha_cambio” tal cual como esta accedido ya “fecha_creacion” y no me funciona, lo que noto es que los datos accedidos desde jasper estan en la estrucutra mostrada en datos XSL como “@attributes” y este nuevo agregado no, tiene relacion?

Muchas Gracias

Saludos

Ulises

Justamente, estan en otra ubicación del árbol XML y para ello es necesario usar una ruta XPATH acorde. Te mencionaba que tenes que usar el indice get_autorizacion_actual porque los datos estaban en ese nodo XML. La propiedad description para el field fecha_cambio debería quedarte algo así:

/solicitudes/get_autorizacion_actual/registro/@fecha_cambio

Un consejo, si tienen configurado el XML como datasource entonces los campos los pueden agregar desde el Report query (el ícono de base de datos con una flechita). Esto les facilita el manejo de XPATH.

Saludos!

Hola Sergio,

Finalmente pude mostrar el dato. Tuve que cambiar lo que devolvia la funcion por

return array($autorizacion);

para que la estructura fuera igual al resto y pudiera tomarlo con

/solicitudes/get_autorizacion_actual/registro/@fecha_cambio

Muchas Gracias por la información.

Saludos

Ulises

Antes que nada muy claro y útil el aporte!

Tengo la siguiente situación:

Un consejo, si tienen configurado el XML como datasource entonces los campos los pueden agregar desde el Report query (el ícono de base de datos con una flechita). Esto les facilita el manejo de XPATH.

El reporte “…/patrimonio/alta_bien_patrimonial/ci_ficha_alta_bien_patrimonial/datos_bienes.jrxml” tiene configurado el XPATH así: /solicitudes/datos_consulta/registro.

Preciso cambiarlo, pero al realizar modificaciones del mismo, no se ven los cambios en el reporte, incluso, borré la líena, añadí texto aleatorios #%&$%#$#$ y nada, pese a que guardé los cambios, compilé, etc.
La configuración del XPATH quiero reemplazarla por /solicitud/solicitud_detalle/registro

Saludos!

Hola Hernan,

Te comento, ese XPATH seteado en el subreporte, sirve solo cuando se quiere previsualizar individualmente el subreporte (o sea, no desde el reporte maestro). Lo agregamos en ese punto para que sea posible depurar los subreportes de forma individual…

El XPATH para los subreportes viene definido en el reporte maestro (en tu caso puntual, el reporte ci_ficha_alta_bien_patrimonial.jrxml). Tenes que revisar la propiedad Data Source Expression que continene la consulta con la cual el reporte maestro extrae un subconjunto de los datos XML para proporcionarselo al subreporte en cuestión.

Saludos!

Me sirvió un montón Sergio!
Modifiqué la propiedad Data Source Expression quedando así:

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource(“/solicitudes/solicitud/solicitud_detalle/registro”)

De esta manera no me imprime todos los registros de un mismo tipo, por defecto si un ítem tenia cantidad = 30, me imprimía los 30 registros. Luego de la modificación, me imprime solo un registro con cantidad = 30.

Gacias y saludos!