Personalización Jasper (RESPONDIDO)

Buenas tardes.

Quiero hacerles una consulta. Hice una instalación limpia de Diaguita 3.0, le hice unas personalizaciones en php y metadatos que están funcionando bien. Entre esas personalicé el archivo ci_ficha_solicitud_suministro.php con un nuevo archivo ci_ficha_solicitud_suministro_pers.php

El tema es cuando quiero personalizar el reporte de jasper solicitud_suministro, me aparece el error: No existe el template para la salida solicitada. Esto pasa aunque no realicé ninguna modificación en los jrxml todavía. Solamente copié los originales.

Estuve tratando de loggear qué archivo está buscando, así que agregué en php/extension_toba/componentes/diaguita_ci.php, en la línea 176, justo antes del error, un par de líneas para que muestre los valores de las variables. Eso me llamó la atención porque según me muestra ahí los valores son:
$archivo_original = [ruta_diaguita]/jasper/solicitud_suministro/ci_ficha_solicitud_suministro_pers.jasper
$archivo_personalizado = [ruta_diaguita]/personalizacion/jasper/solicitud_suministro/ci_ficha_solicitud_suministro_pers.jasper

Mi pregunta es: por qué busca que el .jasper se llame igual que mi archivo php personalizado, aún en el caso del .jasper original? Además, estuve buscando en la documentación y no encuentro que diga que mi archivo personalizado debe tener algún nombre particular, distinto del original.

Quiero aclarar que ya he hecho personalizaciones de los reportes en otras versiones de diaguita y no he tenido este problema. Cambió algo en este aspecto respecto a las versiones anteriores que deba tener en cuenta?

Desde ya les agradezco la ayuda que brindan continuamente.

Saludos,
Débora

Hola, buenas tardes Débora: te comento que seguimos utilizando la misma lógica desde Diaguita en esta versión,
Lo que te sugiero es que primero revises esto:

  • Corroborar que el archivo diaguita_estilo.jrtx este dentro de la carpeta …/personalizacion/jasper/
  • Nosotros para realizar las personalizaciones sugerimos que copien los originales y luego editen la información de los reportes, diseñando la salida que necesitan.

No hace falta modificar los nombres ya que sino tienen que modificar y personalizar donde se llama a los reportes y los nombres de los reportes propiamente.
Al copiar los archivos originales dentro de esta carpeta (…/personalizaciones/jasper/…) las modificaciones que se realicen no se van a perder con las siguientes versiones y siempre podrán mantenerlas.

Avísanos si pudiste resolverlo sino lo seguimos viendo.
Saludos.
Maria.

Sí, justamente por eso me parece extraño que esté buscando un nombre distinto al original del .jasper. Tengo el diaguita_estilo.jrtx en la carpeta personalizacion/jasper. Y copié los originales sin cambiar nada. De hecho, todavía no personalicé el reporte. Está tal cual como en la carpeta original y eso es lo que falla. Porque en vez de buscar un archivo que se llame ci_ficha_solicitud_suministro.jasper busca uno con el nombre ci_ficha_solicitud_suministro_pers.jasper
Y lo busca en ambas carpetas con ese nombre.

Te consulto hiciste una actualización de 2.7.0 a 3.0.0?
Porque puede ser que tenías algún archivo que no esta tomando la personalización que tenías en 2.7.0.
Lo que te pediría es que realices una búsqueda a nivel de proyecto al nombre del archivo que te esta dando el error (ci_ficha_solicitud_suministro_pers), yo lo hice en una versión local que tengo instalada con la 3.0.0. y no encontré nada que haga referencia a este nombre y además realice una personalización en la solicitud y no tuve inconvenientes.
Deberías revisar si en algún lado hay algo que haga referencia a este nombre de archivo para volverlo a dejar como el original.

Por otro lado les consulto ¿están usando colab para las personalizaciones de php y metadatos?

Seguimos en contacto, y avísanos cualquier cosa.
Saludos.
Maria

La actualización sí la hice de la 2.7 a la 3.0. Estuve buscando y me parece que tiene que ser alguna cosa en la personalización de los metadatos porque empieza a fallar cuando hago el personalización importar. Además que el único lugar donde se definió ese nombre fue en toba_editor cuando se agregó la personalización del php. Pero bueno, estoy rastreando a ver qué puedo hacer.

Gracias por su ayuda

Creo que ya me di cuenta de por qué tengo este problema. Resulta que en la versión 2.7, yo personalicé el archivo ci_ficha_solicitud_suministro.php con otro archivo ci_ficha_solicitud_suministro_pers.php. Obviamente lo agregué en toba_editor. Al terminar la personalización y correr toba personalizacion exportar se me generó el archivo [ruta_diaguita]/personalizacion/metadatos/componentes/modificados/toba_ci/comp_200000008.xml

<componente id="200000008" descripcion="toba_ci">
<tabla nombre="apex_objeto">
<registro estado="2" clave="proyecto:diaguita;objeto:200000008">
<columna nombre="punto_montaje" valor="109000001" valor_original="1"/>
<columna nombre="subclase" valor="ci_ficha_solicitud_suministro_pers" valor_original="ci_ficha_solicitud_suministro"/>
<columna nombre="subclase_archivo" valor="solicitud_suministro/ci_ficha_solicitud_suministro_pers.php" valor_original="solicitud_suministro/ci_ficha_solicitud_suministro.php"/>
</registro>
</tabla>
</componente>

Buscando me di cuenta que en la versión 3.0, cuando yo corro toba personalización importar se guarda en la tabla apex_objeto del schema desarrollo, la siguiente línea

"diaguita";200000008;"";"";;"toba";"toba_ci";109000001;"ci_ficha_solicitud_suministro_pers";"solicitud_suministro/ci_ficha_solicitud_suministro_pers.php";"";"";"Ficha de solicitud de bienes y servicios";"";0;"";"";"";;"";"";"";"";"";"";"";"";"";"2008-10-26 14:12:18";"abajo"

En la versión 2.7, con las personalizaciones hechas la línea era

"diaguita";200000008;"";"";;"toba";"toba_ci";1;"ci_ficha_solicitud_suministro";"solicitud_suministro/ci_ficha_solicitud_suministro.php";"";"";"Ficha de solicitud de bienes y servicios";"";0;"";"";"";;"";"";"";"";"";"";"";"";"";"2008-10-26 14:12:18";"abajo"

Como ven, cambiaron los valores de subclase y subclase_archivo por el nombre personalizado. Si no me equivoco, este es el valor que se usa en diaguita_ci.php, en la función get_reporte_template, en la línea 135 para obtener el nombre del jasper que corresponde al reporte que se pidió.

$ci = $this->_info['subclase_archivo'];

Puede ser que esto sea correcto?