https://documentacion.siu.edu.ar/wiki/api.php?action=feedcontributions&user=Gfranz&feedformat=atomSIU - Contribuciones del usuario [es]2024-03-28T22:35:12ZContribuciones del usuarioMediaWiki 1.30.0https://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/version3.14.0/actualizacion_con_personalizaciones/gestion&diff=37262SIU-Guarani/version3.14.0/actualizacion con personalizaciones/gestion2017-12-15T19:38:30Z<p>Gfranz: </p>
<hr />
<div>__TOC__<br />
== Actualización del SIU-Guaraní Gestión a la versión 3.14.x en entorno de desarrollo con personalizaciones ==<br />
<br />
{| border=1 class="simple"<br />
! Solicitar en forma previa, mediante una solicitud en el Gestor de Solicitudes (GdS), una carpeta en el repositorio Colab para la institución.<br />
|}<br />
=== Requisitos previos ===<br />
#Que todos los miembros del equipo hayan subido sus cambios al SVN.<br />
<br />
=== Pasos para la actualización ===<br />
Cada actualización del sistema implica modificaciones importantes, por este motivo es primordial que se respeten '''todos los pasos detallados'''. Ante cualquier inconveniente consulte con el equipo SIU-Guaraní (vía foro o GdS).<br><br />
A continuación se diferenciarán las tareas que debe llevar a cabo el '''[[SIU-Guarani/Version3.14.0/concentrador|Concentrador]]''' y las que debe realizar el resto del equipo.<br><br />
'''Importante:''' el resto del equipo de trabajo debe realizar los pasos que le corresponden una vez que el Concentrador terminó de actualizar todo.<br />
<br><br><br />
'''A lo largo de los pasos se deberá reemplazar:'''<br />
* <path proyecto Guaraní>: por el path donde está instalado el proyecto<br />
* <siglas institución>: por las siglas correspondientes al nodo de Colab de la institución que realiza la instalación.<br />
* 3.y.z: por la versión actual del sistema<br />
* 3.14.x: por la versión a la que se quiere actualizar<br />
== Pasos a realizar por el Concentrador ==<br />
#'''Resguardar los datos de la versión actual (backup de las personalizaciones)'''<br />
##Exportar la información local de la instancia <br />
##:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani instancia_exp_local<br />
</source><br />
##Resguardar la base de datos de negocio <br />
##:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani resguardar_base<br />
</source><br />
##Verificar y versionar personalizaciones <br />
###Antes de continuar con la actualización, se deben exportar las personalizaciones existentes en la carpeta ''/guarani/personalizaciones'':<br />
###:<source lang="php" enclose="div"><br />
./guarani esquema_pers exportar<br />
</source><br />
###:'''Importante:''' Controlar los mensajes que surgen de aplicar el comando anterior.<br />
###Desactivar el esquema de personalizaciones para evitar conflictos de SVN <br />
###:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
###:<source lang="php" enclose="div"><br />
./guarani esquema_pers desactivar<br />
</source><br />
###Verificar si hay cambios para subir, ejecutando dentro de la carpeta de Guaraní (<tt><path proyecto Guaraní></tt>)<br />
###:<source lang="php" enclose="div"><br />
svn status<br />
</source><br />
###:Si dentro del directorio de personalizaciones aparece el signo '''?''', se debe ejecutar el siguiente comando para que luego el directorio que tiene el '''?''' sea considerado para subir al SVN:<br />
###:<source lang = "php" enclose="div"><br />
svn add <path del directorio que se tiene que agregar (el que tiene el signo ?)><br />
</source><br />
###Versionar el resultado de los comandos anteriores. Para ello, posicionados en la carpeta de Guaraní (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
###:<source lang="php" enclose="div"><br />
svn commit -m "Se versionan las personalizaciones para cambio de versión"<br />
</source><br />
#'''Actualizar el entorno de desarrollo a la nueva versión'''<br />
##Cambiar la versión del código <br />
##:Dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
##:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.14.x<br />
</source><br />
##:En versiones nuevas de svn puede salir un error:<br />
##:<source lang="php" enclose="div"><br />
svn: E195012: Path '.' does not share common version control ancestry with the requested switch location. Use --ignore-ancestry to disable this check.<br />
</source><br />
##:en este caso Ejecutar el comando anterior siguiendo lo recomendado en el mensaje:<br />
##:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.14.x --ignore-ancestry<br />
</source><br />
##Una vez concluído el switch debemos verificar que el mismo se haya completado correctamente. Para ello, dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
##:<source lang="php" enclose="div"><br />
svn status<br />
</source><br />
##:y verificar que no existan archivos con estado 'S'.<br />
##En caso de existir un conflicto SVN en el archivo personalizacion.ini, resolverlo dejando la opción de la nueva versión del SIU. Una forma de hacerlo es borrando los archivos en conflicto y realizando un svn update de la carpeta <tt><path proyecto Guaraní>/personalizacion</tt>.<br />
##En caso de no tener una configuración anterior de la manera de ver el menú de la aplicación, se puede establecer de la siguiente manera:<br />
##:Para ello, dentro de la carpeta <tt><path proyecto Guaraní></tt> ejecutar:<br />
##:<source lang="php" enclose="div"><br />
cp menu.ini.tmpl menu.ini<br />
</source><br />
##:Completar el archivo [[SIU-Guarani/Version3.14.0/personalizaciones/formas_de_menu| menu.ini]]<br />
##Regenerar la instancia Toba <br />
##:Dentro de la carpeta 'bin' de Toba (<tt><path proyecto Guaraní>/lib/toba/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./toba instancia regenerar -i desarrollo<br />
</source><br />
##:'''Nota''': ante la pregunta "Desea conservar datos locales como usuarios y logs? (Si o No)" responder '''n'''.<br />
##Migrar la base de datos de negocio <br />
##:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani migrar_base<br />
</source><br />
##:'''Nota:''' si al ejecutar el comando de migración se muestra el mensaje ''No pudo resguardarse la base actual. Desea continuar? (Si o No)'', probablemente no se encuentre el directorio 'bin' de PostgreSQL en el path del sistema operativo. Responder '''n''', agregue la carpeta al path y vuelva a intentarlo.<br />
#'''Migrar las personalizaciones''' <br />
#:Luego de seguir los pasos anteriores, se tiene una instalación de la versión 3.14.x del sistema tal como la distribuye el SIU. Ahora es el turno de incorporar las personalizaciones desarrolladas en versiones anteriores. <br><br />
##Mergear la carpeta '''personalizacion''' a la nueva versión <br />
##:En la instancia actual de la actualización, la carpeta '''personalizacion''' tiene únicamente los archivos distribuidos por el SIU. Se debe combinar con las personalizaciones realizadas en la versión anterior, realizando la acción ''svn merge''. Usando la línea de comandos, posicionados en la carpeta raíz del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn merge -r0:HEAD https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.y.z/personalizacion/ ./personalizacion/<br />
</source><br />
##Activar el esquema de personalizaciones <br />
##:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers iniciar <br />
</source><br />
##Chequear conflictos de las personalizaciones con la nueva versión <br />
##:Dado que el sistema Guaraní funciona sobre el framework SIU-Toba, utilizando su esquema de metadatos, es necesario chequear si existe algún conflicto entre las personalizaciones realizadas y la nueva versión. Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers conflictos<br />
</source><br />
##:'''Importante''': si al ejecutar el comando llegara a reportarse algún conflicto irresoluble, consultar con el equipo SIU-Guaraní (vía foro o GdS) para ser guiados en el tratamiento de los mismos. Si los conflictos son solubles, cuando se proceda con el proceso de importación de personalizaciones se preguntará si desea incorporar o no este cambio.<br />
##Importar las personalizaciones <br />
##:A continuación se procede a incorporar las personalizaciones desarrolladas en la versión anterior a la actual. Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers importar<br />
</source><br />
##Agregar al repositorio las personalizaciones importadas<br />
##:Posicionados en la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn commit -m "3.14.x Merge de las personalizaciones realizadas en versiones anteriores" <br />
</source><br />
##Exportar las personalizaciones <br />
##:Deben exportarse las personalizaciones para que las mismas queden disponibles para los demás miembros del equipo (recordar que el único que ejecuta los comandos relativos a personalización es el concentrador). Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani exportar<br />
</source><br />
##Versionar las personalizaciones <br />
##:Posicionados en la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn commit -m "3.14.x Se versionan metadatos exportados de las personalizaciones realizadas en versiones anteriores" <br />
</source><br />
<br />
== Pasos a realizar por el resto del equipo ==<br />
'''Observación:''' Recordar que, tal como se indicó en los '''[[SIU-Guarani/Version3.14.0/actualizacion_con_personalizaciones/gestion#Requisitos_previos| Requisitos Previos]]''', todos los miembros del equipo deberán haber subido sus cambios al SVN, por lo que en las working copies del resto del equipo no habrá cambios locales antes de ejecutar los siguientes pasos. Esto puede verificarse ejecutando un <source lang="php" enclose="div"> svn status</source> sobre la raíz del proyecto. <br><br />
'''Una vez que el Concentrador terminó de actualizar todo''', el resto del equipo deberá realizar los siguientes pasos:<br />
#Exportar la información local de la instancia <br />
#:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./guarani instancia_exp_local<br />
</source><br />
#Cambiar a la nueva versión del sistema<br />
#:Dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
#:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.14.x<br />
</source><br />
#Regenerar la instancia Toba <br />
#:Dentro de la carpeta 'bin' de Toba (<tt><path proyecto Guaraní>/lib/toba/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./toba instancia regenerar -i desarrollo<br />
</source><br />
#Migrar la base de datos de negocio <br />
#:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./guarani migrar_base<br />
</source><br />
#:'''Nota:''' si al ejecutar el comando de migración se muestra el mensaje ''No pudo resguardarse la base actual. Desea continuar? (Si o No)'', probablemente no se encuentre el directorio 'bin' de PostgreSQL en el path del sistema operativo. Responder '''n''', agregue la carpeta al path y vuelva a intentarlo.<br />
<br><br><br />
[[SIU-Guarani/Version3.14.0/instalacion_actualizacion_gestion|Ir al esquema de instalación y actualización de la versión]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/version3.15.0/actualizacion_con_personalizaciones/gestion&diff=38535SIU-Guarani/version3.15.0/actualizacion con personalizaciones/gestion2017-12-15T19:38:30Z<p>Gfranz: </p>
<hr />
<div>__TOC__<br />
== Actualización del SIU-Guaraní Gestión a la versión 3.15.x en entorno de desarrollo con personalizaciones ==<br />
<br />
{| border=1 class="simple"<br />
! Solicitar en forma previa, mediante una solicitud en el Gestor de Solicitudes (GdS), una carpeta en el repositorio Colab para la institución.<br />
|}<br />
=== Requisitos previos ===<br />
#Que todos los miembros del equipo hayan subido sus cambios al SVN.<br />
<br />
=== Pasos para la actualización ===<br />
Cada actualización del sistema implica modificaciones importantes, por este motivo es primordial que se respeten '''todos los pasos detallados'''. Ante cualquier inconveniente consulte con el equipo SIU-Guaraní (vía foro o GdS).<br><br />
A continuación se diferenciarán las tareas que debe llevar a cabo el '''[[SIU-Guarani/Version3.15.0/concentrador|Concentrador]]''' y las que debe realizar el resto del equipo.<br><br />
'''Importante:''' el resto del equipo de trabajo debe realizar los pasos que le corresponden una vez que el Concentrador terminó de actualizar todo.<br />
<br><br><br />
'''A lo largo de los pasos se deberá reemplazar:'''<br />
* <path proyecto Guaraní>: por el path donde está instalado el proyecto<br />
* <siglas institución>: por las siglas correspondientes al nodo de Colab de la institución que realiza la instalación.<br />
* 3.y.z: por la versión actual del sistema<br />
* 3.15.x: por la versión a la que se quiere actualizar<br />
== Pasos a realizar por el Concentrador ==<br />
#'''Resguardar los datos de la versión actual (backup de las personalizaciones)'''<br />
##Exportar la información local de la instancia <br />
##:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani instancia_exp_local<br />
</source><br />
##Resguardar la base de datos de negocio <br />
##:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani resguardar_base<br />
</source><br />
##Verificar y versionar personalizaciones <br />
###Antes de continuar con la actualización, se deben exportar las personalizaciones existentes en la carpeta ''/guarani/personalizaciones'':<br />
###:<source lang="php" enclose="div"><br />
./guarani esquema_pers exportar<br />
</source><br />
###:'''Importante:''' Controlar los mensajes que surgen de aplicar el comando anterior.<br />
###Desactivar el esquema de personalizaciones para evitar conflictos de SVN <br />
###:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
###:<source lang="php" enclose="div"><br />
./guarani esquema_pers desactivar<br />
</source><br />
###Verificar si hay cambios para subir, ejecutando dentro de la carpeta de Guaraní (<tt><path proyecto Guaraní></tt>)<br />
###:<source lang="php" enclose="div"><br />
svn status<br />
</source><br />
###:Si dentro del directorio de personalizaciones aparece el signo '''?''', se debe ejecutar el siguiente comando para que luego el directorio que tiene el '''?''' sea considerado para subir al SVN:<br />
###:<source lang = "php" enclose="div"><br />
svn add <path del directorio que se tiene que agregar (el que tiene el signo ?)><br />
</source><br />
###Versionar el resultado de los comandos anteriores. Para ello, posicionados en la carpeta de Guaraní (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
###:<source lang="php" enclose="div"><br />
svn commit -m "Se versionan las personalizaciones para cambio de versión"<br />
</source><br />
#'''Actualizar el entorno de desarrollo a la nueva versión'''<br />
##Cambiar la versión del código <br />
##:Dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
##:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.15.x<br />
</source><br />
##:En versiones nuevas de svn puede salir un error:<br />
##:<source lang="php" enclose="div"><br />
svn: E195012: Path '.' does not share common version control ancestry with the requested switch location. Use --ignore-ancestry to disable this check.<br />
</source><br />
##:en este caso Ejecutar el comando anterior siguiendo lo recomendado en el mensaje:<br />
##:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.15.x --ignore-ancestry<br />
</source><br />
##Una vez concluído el switch debemos verificar que el mismo se haya completado correctamente. Para ello, dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
##:<source lang="php" enclose="div"><br />
svn status<br />
</source><br />
##:y verificar que no existan archivos con estado 'S'.<br />
##En caso de existir un conflicto SVN en el archivo personalizacion.ini, resolverlo dejando la opción de la nueva versión del SIU. Una forma de hacerlo es borrando los archivos en conflicto y realizando un svn update de la carpeta <tt><path proyecto Guaraní>/personalizacion</tt>.<br />
##En caso de no tener una configuración anterior de la manera de ver el menú de la aplicación, se puede establecer de la siguiente manera:<br />
##:Para ello, dentro de la carpeta <tt><path proyecto Guaraní></tt> ejecutar:<br />
##:<source lang="php" enclose="div"><br />
cp menu.ini.tmpl menu.ini<br />
</source><br />
##:Completar el archivo [[SIU-Guarani/Version3.15.0/personalizaciones/formas_de_menu| menu.ini]]<br />
##Regenerar la instancia Toba <br />
##:Dentro de la carpeta 'bin' de Toba (<tt><path proyecto Guaraní>/lib/toba/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./toba instancia regenerar -i desarrollo<br />
</source><br />
##:'''Nota''': ante la pregunta "Desea conservar datos locales como usuarios y logs? (Si o No)" responder '''n'''.<br />
##Migrar la base de datos de negocio <br />
##:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani migrar_base<br />
</source><br />
##:'''Nota:''' si al ejecutar el comando de migración se muestra el mensaje ''No pudo resguardarse la base actual. Desea continuar? (Si o No)'', probablemente no se encuentre el directorio 'bin' de PostgreSQL en el path del sistema operativo. Responder '''n''', agregue la carpeta al path y vuelva a intentarlo.<br />
#'''Migrar las personalizaciones''' <br />
#:Luego de seguir los pasos anteriores, se tiene una instalación de la versión 3.15.x del sistema tal como la distribuye el SIU. Ahora es el turno de incorporar las personalizaciones desarrolladas en versiones anteriores. <br><br />
##Mergear la carpeta '''personalizacion''' a la nueva versión <br />
##:En la instancia actual de la actualización, la carpeta '''personalizacion''' tiene únicamente los archivos distribuidos por el SIU. Se debe combinar con las personalizaciones realizadas en la versión anterior, realizando la acción ''svn merge''. Usando la línea de comandos, posicionados en la carpeta raíz del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn merge -r0:HEAD https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.y.z/personalizacion/ ./personalizacion/<br />
</source><br />
##Activar el esquema de personalizaciones <br />
##:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers iniciar <br />
</source><br />
##Chequear conflictos de las personalizaciones con la nueva versión <br />
##:Dado que el sistema Guaraní funciona sobre el framework SIU-Toba, utilizando su esquema de metadatos, es necesario chequear si existe algún conflicto entre las personalizaciones realizadas y la nueva versión. Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers conflictos<br />
</source><br />
##:'''Importante''': si al ejecutar el comando llegara a reportarse algún conflicto irresoluble, consultar con el equipo SIU-Guaraní (vía foro o GdS) para ser guiados en el tratamiento de los mismos. Si los conflictos son solubles, cuando se proceda con el proceso de importación de personalizaciones se preguntará si desea incorporar o no este cambio.<br />
##Importar las personalizaciones <br />
##:A continuación se procede a incorporar las personalizaciones desarrolladas en la versión anterior a la actual. Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers importar<br />
</source><br />
##Agregar al repositorio las personalizaciones importadas<br />
##:Posicionados en la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn commit -m "3.15.x Merge de las personalizaciones realizadas en versiones anteriores" <br />
</source><br />
##Exportar las personalizaciones <br />
##:Deben exportarse las personalizaciones para que las mismas queden disponibles para los demás miembros del equipo (recordar que el único que ejecuta los comandos relativos a personalización es el concentrador). Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani exportar<br />
</source><br />
##Versionar las personalizaciones <br />
##:Posicionados en la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn commit -m "3.15.x Se versionan metadatos exportados de las personalizaciones realizadas en versiones anteriores" <br />
</source><br />
<br />
== Pasos a realizar por el resto del equipo ==<br />
'''Observación:''' Recordar que, tal como se indicó en los '''[[SIU-Guarani/Version3.15.0/actualizacion_con_personalizaciones/gestion#Requisitos_previos| Requisitos Previos]]''', todos los miembros del equipo deberán haber subido sus cambios al SVN, por lo que en las working copies del resto del equipo no habrá cambios locales antes de ejecutar los siguientes pasos. Esto puede verificarse ejecutando un <source lang="php" enclose="div"> svn status</source> sobre la raíz del proyecto. <br><br />
'''Una vez que el Concentrador terminó de actualizar todo''', el resto del equipo deberá realizar los siguientes pasos:<br />
#Exportar la información local de la instancia <br />
#:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./guarani instancia_exp_local<br />
</source><br />
#Cambiar a la nueva versión del sistema<br />
#:Dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
#:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.15.x<br />
</source><br />
#Regenerar la instancia Toba <br />
#:Dentro de la carpeta 'bin' de Toba (<tt><path proyecto Guaraní>/lib/toba/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./toba instancia regenerar -i desarrollo<br />
</source><br />
#Migrar la base de datos de negocio <br />
#:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./guarani migrar_base<br />
</source><br />
#:'''Nota:''' si al ejecutar el comando de migración se muestra el mensaje ''No pudo resguardarse la base actual. Desea continuar? (Si o No)'', probablemente no se encuentre el directorio 'bin' de PostgreSQL en el path del sistema operativo. Responder '''n''', agregue la carpeta al path y vuelva a intentarlo.<br />
<br><br><br />
[[SIU-Guarani/Version3.15.0/instalacion_actualizacion_gestion|Ir al esquema de instalación y actualización de la versión]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/version3.14.0/actualizacion_con_personalizaciones/gestion&diff=37261SIU-Guarani/version3.14.0/actualizacion con personalizaciones/gestion2017-12-15T19:36:21Z<p>Gfranz: </p>
<hr />
<div>__TOC__<br />
== Actualización del SIU-Guaraní Gestión a la versión 3.14.x en entorno de desarrollo con personalizaciones ==<br />
<br />
{| border=1 class="simple"<br />
! Solicitar en forma previa, mediante una solicitud en el Gestor de Solicitudes (GdS), una carpeta en el repositorio Colab para la institución.<br />
|}<br />
=== Requisitos previos ===<br />
#Que todos los miembros del equipo hayan subido sus cambios al SVN.<br />
<br />
=== Pasos para la actualización ===<br />
Cada actualización del sistema implica modificaciones importantes, por este motivo es primordial que se respeten '''todos los pasos detallados'''. Ante cualquier inconveniente consulte con el equipo SIU-Guaraní (vía foro o GdS).<br><br />
A continuación se diferenciarán las tareas que debe llevar a cabo el '''[[SIU-Guarani/Version3.14.0/concentrador|Concentrador]]''' y las que debe realizar el resto del equipo.<br><br />
'''Importante:''' el resto del equipo de trabajo debe realizar los pasos que le corresponden una vez que el Concentrador terminó de actualizar todo.<br />
<br><br><br />
'''A lo largo de los pasos se deberá reemplazar:'''<br />
* <path proyecto Guaraní>: por el path donde está instalado el proyecto<br />
* <siglas institución>: por las siglas correspondientes al nodo de Colab de la institución que realiza la instalación.<br />
* 3.y.z: por la versión actual del sistema<br />
* 3.14.x: por la versión a la que se quiere actualizar<br />
== Pasos a realizar por el Concentrador ==<br />
#'''Resguardar los datos de la versión actual (backup de las personalizaciones)'''<br />
##Exportar la información local de la instancia <br />
##:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani instancia_exp_local<br />
</source><br />
##Resguardar la base de datos de negocio <br />
##:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani resguardar_base<br />
</source><br />
##Verificar y versionar personalizaciones <br />
###Antes de continuar con la actualización, se deben exportar las personalizaciones existentes en la carpeta ''/guarani/personalizaciones'':<br />
###:<source lang="php" enclose="div"><br />
./guarani esquema_pers exportar<br />
</source><br />
###:'''Importante:''' Controlar los mensajes que surgen de aplicar el comando anterior.<br />
###Desactivar el esquema de personalizaciones para evitar conflictos de SVN <br />
###:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
###:<source lang="php" enclose="div"><br />
./guarani esquema_pers desactivar<br />
</source><br />
###Verificar si hay cambios para subir, ejecutando dentro de la carpeta de Guaraní (<tt><path proyecto Guaraní></tt>)<br />
###:<source lang="php" enclose="div"><br />
svn status<br />
</source><br />
###:Si dentro del directorio de personalizaciones aparece el signo '''?''', se debe ejecutar el siguiente comando para que luego el directorio que tiene el '''?''' sea considerado para subir al SVN:<br />
###:<source lang = "php" enclose="div"><br />
svn add <path del directorio que se tiene que agregar (el que tiene el signo ?)><br />
</source><br />
###Versionar el resultado de los comandos anteriores. Para ello, posicionados en la carpeta de Guaraní (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
###:<source lang="php" enclose="div"><br />
svn commit -m "Se versionan las personalizaciones para cambio de versión"<br />
</source><br />
#'''Actualizar el entorno de desarrollo a la nueva versión'''<br />
##Cambiar la versión del código <br />
##:Dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
##:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.14.x<br />
</source><br />
##:En versiones nuevas de svn puede salir un error:<br />
##:<source lang="php" enclose="div"><br />
svn: E195012: Path '.' does not share common version control ancestry with the requested switch location. Use --ignore-ancestry to disable this check.<br />
</source><br />
##:en este caso Ejecutar el comando anterior siguiendo lo recomendado en el mensaje:<br />
##:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.14.x --ignore-ancestry<br />
</source><br />
##Una vez concluído el switch debemos verificar que el mismo se haya completado correctamente. Para ello, dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
##:<source lang="php" enclose="div"><br />
svn status<br />
</source><br />
##:y verificar que no existan archivos con estado 'S'.<br />
##En caso de existir un conflicto SVN en el archivo personalizacion.ini, resolverlo dejando la opción de la nueva versión del SIU. Una forma de hacerlo es borrando los archivos en conflicto y realizando un svn update de la carpeta <tt><path proyecto Guaraní>/personalizacion</tt>.<br />
##En caso de no tener una configuración anterior de la manera de ver el menú de la aplicación, se puede establecer de la siguiente manera:<br />
##:Para ello, dentro de la carpeta <tt><path proyecto Guaraní></tt> ejecutar:<br />
##:<source lang="php" enclose="div"><br />
cp menu.ini.tmpl menu.ini<br />
</source><br />
##:Completar el archivo [[SIU-Guarani/Version3.14.0/personalizaciones/formas_de_menu| menu.ini]]<br />
##Regenerar la instancia Toba <br />
##:Dentro de la carpeta 'bin' de Toba (<tt><path proyecto Guaraní>/lib/toba/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./toba instancia regenerar -i desarrollo<br />
</source><br />
##:'''Nota''': ante la pregunta "Desea conservar datos locales como usuarios y logs? (Si o No)" responder '''n'''.<br />
##Migrar la base de datos de negocio <br />
##:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani migrar_base<br />
</source><br />
##:'''Nota:''' si al ejecutar el comando de migración se muestra el mensaje ''No pudo resguardarse la base actual. Desea continuar? (Si o No)'', probablemente no se encuentre el directorio 'bin' de PostgreSQL en el path del sistema operativo. Responder '''n''', agregue la carpeta al path y vuelva a intentarlo.<br />
#'''Migrar las personalizaciones''' <br />
#:Luego de seguir los pasos anteriores, se tiene una instalación de la versión 3.14.x del sistema tal como la distribuye el SIU. Ahora es el turno de incorporar las personalizaciones desarrolladas en versiones anteriores. <br><br />
##Mergear la carpeta '''personalizacion''' a la nueva versión <br />
##:En la instancia actual de la actualización, la carpeta '''personalizacion''' tiene únicamente los archivos distribuidos por el SIU. Se debe combinar con las personalizaciones realizadas en la versión anterior, realizando la acción ''svn merge''. Usando la línea de comandos, posicionados en la carpeta raíz del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn merge -r0:HEAD https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.y.z/personalizacion/ ./personalizacion/<br />
</source><br />
##Activar el esquema de personalizaciones <br />
##:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers iniciar <br />
</source><br />
##Chequear conflictos de las personalizaciones con la nueva versión <br />
##:Dado que el sistema Guaraní funciona sobre el framework SIU-Toba, utilizando su esquema de metadatos, es necesario chequear si existe algún conflicto entre las personalizaciones realizadas y la nueva versión. Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers conflictos<br />
</source><br />
##:'''Importante''': si al ejecutar el comando llegara a reportarse algún conflicto irresoluble, consultar con el equipo SIU-Guaraní (vía foro o GdS) para ser guiados en el tratamiento de los mismos. Si los conflictos son solubles, cuando se proceda con el proceso de importación de personalizaciones se preguntará si desea incorporar o no este cambio.<br />
##Importar las personalizaciones <br />
##:A continuación se procede a incorporar las personalizaciones desarrolladas en la versión anterior a la actual. Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani esquema_pers importar<br />
</source><br />
##Agregar al repositorio las personalizaciones importadas<br />
##:Posicionados en la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn commit -m "3.14.x Merge de las personalizaciones realizadas en versiones anteriores" <br />
</source><br />
##Exportar las personalizaciones <br />
##:Deben exportarse las personalizaciones para que las mismas queden disponibles para los demás miembros del equipo (recordar que el único que ejecuta los comandos relativos a personalización es el concentrador). Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
./guarani exportar<br />
</source><br />
##Versionar las personalizaciones <br />
##:Posicionados en la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar:<br />
##:<source lang="php" enclose="div"><br />
svn commit -m "3.14.x Se versionan metadatos exportados de las personalizaciones realizadas en versiones anteriores" <br />
</source><br />
<br />
== Pasos a realizar por el resto del equipo ==<br />
'''Observación:''' Recordar que, tal como se indicó en los '''[[SIU-Guarani/Version3.14.0//actualizacion_con_personalizaciones/gestion#Requisitos_previos| Requisitos Previos]]''', todos los miembros del equipo deberán haber subido sus cambios al SVN, por lo que en las working copies del resto del equipo no habrá cambios locales antes de ejecutar los siguientes pasos. Esto puede verificarse ejecutando un <source lang="php" enclose="div"> svn status</source> sobre la raíz del proyecto. <br><br />
'''Una vez que el Concentrador terminó de actualizar todo''', el resto del equipo deberá realizar los siguientes pasos:<br />
#Exportar la información local de la instancia <br />
#:Dentro de la carpeta 'bin' de Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./guarani instancia_exp_local<br />
</source><br />
#Cambiar a la nueva versión del sistema<br />
#:Dentro de la carpeta del proyecto (<tt><path proyecto Guaraní></tt>) ejecutar: <br />
#:<source lang="php" enclose="div"><br />
svn switch https://colab.siu.edu.ar/svn/guarani3/nodos/<siglas institución>/gestion/trunk/3.14.x<br />
</source><br />
#Regenerar la instancia Toba <br />
#:Dentro de la carpeta 'bin' de Toba (<tt><path proyecto Guaraní>/lib/toba/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./toba instancia regenerar -i desarrollo<br />
</source><br />
#Migrar la base de datos de negocio <br />
#:Dentro de la carpeta 'bin' del proyecto Guaraní (<tt><path proyecto Guaraní>/bin</tt>) ejecutar:<br />
#:<source lang="php" enclose="div"><br />
./guarani migrar_base<br />
</source><br />
#:'''Nota:''' si al ejecutar el comando de migración se muestra el mensaje ''No pudo resguardarse la base actual. Desea continuar? (Si o No)'', probablemente no se encuentre el directorio 'bin' de PostgreSQL en el path del sistema operativo. Responder '''n''', agregue la carpeta al path y vuelva a intentarlo.<br />
<br><br><br />
[[SIU-Guarani/Version3.14.0/instalacion_actualizacion_gestion|Ir al esquema de instalación y actualización de la versión]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/version3.14.0/instalacion_desde_cero/requisitos_previos/linux&diff=37258SIU-Guarani/version3.14.0/instalacion desde cero/requisitos previos/linux2017-12-14T20:25:01Z<p>Gfranz: </p>
<hr />
<div>== Requisitos previos para la instalación en Linux – Distribuciones Debian o derivados ==<br />
<br />
=== Versiones requeridas ===<br />
A continuación listamos las versiones requeridas para un correcto funcionamiento del sistema:<br />
{| class="wikitable"<br />
|-<br />
| Apache || 2.2.x o 2.4.x<br />
|-<br />
| PHP || 5.6.x<br />
|-<br />
| PostgreSQL || 9.3.x<br />
|-<br />
| yui-compressor || 2.4.2 o superior<br />
|}<br />
<br />
=== Instalación ===<br />
#'''Apache'''<br />
##Ejecutar como superusuario:<br />
##:<source lang="php" enclose="div">apt-get install apache2 libapache2-mod-php5</source><br />
##Habilitar los módulos:<br />
##*rewrite_module<br />
##*setenvif_module<br />
##:Para ello, ejecutar:<br />
##:<source lang="php" enclose="div"><br />
a2enmod rewrite<br />
a2enmod setenvif<br />
</source><br />
#'''PHP'''<br />
##En caso de que los repositorios no tengan una versión actualizada de PHP, cambiar las fuentes de los paquetes.<br />
##:Ejecutar como superusuario:<br />
##:<source lang="php" enclose="div">apt-get install php5-cli php5-pgsql php5-gd php5-curl php5-mcrypt php5-apcu php5-mbstring</source><br />
##:Si se utiliza el manejador de cache Memcached ejecutar:<br />
##:<source lang="php" enclose="div">apt-get install php5-memcached</source><br />
##Para verificar que se hayan instalado los paquetes adecuadamente, ejecutar:<br />
##:<source lang="php" enclose="div">php -m</source><br />
##:En caso de no encontrar los paquetes pdo y pdo_pgsql en el listado, se necesita instalarlos manualmente. Para ello hay que descargar y compilar las extensiones utilizando el comando '''pecl''':<br />
##:<source lang="php" enclose="div"><br />
apt-get install php5-dev php-pear postgresql-server-dev-8.1 build-essential <br />
pecl install pdo<br />
pecl install pdo_pgsql<br />
</source><br />
##Agregar a los archivos '/etc/php5/cli/php.ini' y '/etc/php5/apache2/php.ini':<br />
##:<source lang="php" enclose="div"><br />
extension=pdo.so <br />
extension=pdo_pgsql.so <br />
</source><br />
##:Configurar además en los archivos mencionados previamente:<br />
##:<source lang="php" enclose="div"><br />
;Mínimos<br />
output_buffering = On <br />
<br />
;Recomendados <br />
memory_limit = 256M <br />
upload_max_filesize = 8M<br />
post_max_size = 8M<br />
date.timezone = America/Argentina/Buenos_Aires<br />
default_charset = "ISO-8859-1"<br />
<br />
</source><br />
##*upload_max_filesize: Indica el tamaño máximo del archivo, esto en el sentido de si graba o no. <br />
##*post_max_size: Indica el máximo tamaño que el PHP aceptará para el POST. Sería recomendable que sea mayor a 'upload_max_filesize' porque los mensajes de error sobre el tamaño del archivo se muestran siempre que este tamaño esté entre 'upload_max_filesize' y 'post_max_size' <br />
##:En caso de que los parámetros mencionados previamente no se encuentren en el archivo, agregarlos con la configuración indicada.<br />
##:Reiniciar Apache:<br />
##:<source lang="php" enclose="div"><br />
sudo service apache2 restart<br />
</source><br />
#'''PostgreSQL'''<br />
#:En caso de no contar con un servidor aparte, ejecutar:<br />
#:<source lang="php" enclose="div"><br />
apt-get install postgresql<br />
apt-get install postgresql-contrib-9.3<br />
</source><br />
#:Se sugiere inicializar el cluster y crear la base de datos con encoding UTF8<br />
#:La base de datos de negocio de SIU-Guaraní debe estar en la misma base de datos que la instancia Toba, dentro de un esquema diferente (usualmente 'negocio' y 'desarrollo', respectivamente)<br />
#:Asegurarse que en el archivo '''postgresql.conf''' <br />
#*la variable '''''standard_conforming_strings''''' esté seteada con valor '''''off''''' y que la misma NO esté comentada<br />
#*la variable '''''bytea_output''''' esté seteada con valor '''''escape''''' y que la misma NO esté comentada<br />
#*la variable '''''timezone''''' esté correctamente configurada<br />
#:Reiniciar Postgres:<br />
#:<source lang="php" enclose="div"><br />
sudo service postgresql restart<br />
</source><br />
#'''Subversion'''<br />
#:<source lang="php" enclose="div">apt-get install subversion</source><br />
#'''Git'''<br />
#:<source lang="php" enclose="div">apt-get install git</source><br />
#'''Composer'''<br />
#:[https://getcomposer.org/download/ Descargar Composer]<br />
#:[https://getcomposer.org/doc/00-intro.md#globally Instalarlo globalmente]<br />
#'''Graphviz'''<br />
#:<source lang="php" enclose="div">apt-get install graphviz</source><br />
#'''Java'''<br />
#:<source lang="php" enclose="div"><br />
sudo apt-get install default-jdk<br />
sudo apt-get install default-jre<br />
</source><br />
#'''Suhosin'''<br />
#:Si tiene habilitado el sistema de protección Suhosin deberá configurar los siguientes parámetros (generalmente en '/etc/php5/conf.d/suhosin.ini'):<br />
#:<source lang="php" enclose="div"><br />
suhosin.request.max_varname_length = 128 <br />
suhosin.post.max_name_length = 128 <br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/Novedades_tecnicas&diff=21431SIU-Guarani/Version3.13.0/Novedades tecnicas2017-05-05T20:17:46Z<p>Gfranz: /* Gestión */</p>
<hr />
<div>__NOTOC__<br />
= Principales novedades técnicas =<br />
<div style="clear: both; display: block; float: left; border-left: 3px solid #3399ff; padding: 10px; background-color: #eee; width: 565px;font-size: 13px;"><br />
<p style="margin: 0; padding: 0;">[[SIU-Guarani/Version3.13.0 | Volver]]</p><br />
<p style="margin: 0; padding: 0;">Número de versión: <strong>3.13.0</strong></p><br />
<p style="margin: 0; padding: 0;">Fecha de publicación: <strong>26/04/2017</strong></p><br />
</div><br />
<p style="clear: both;"></p><br />
== Base de Datos ==<br />
* [https://colab.siu.edu.ar/modelo/031300/Guarani_v3_13_0.html Modelo 3.13.0] (Se accede con credenciales de Colab)<br />
<br />
=== Diferencias con versiones anteriores ===<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.11.0&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.11.0]<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.11.1&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.11.1]<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.11.2&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.11.2]<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.12.0&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.12.0]<br />
<br />
== Gestión ==<br />
<br />
* '''Cambios en el esquema de parámetros: '''<br />
<dd>Varios parámetros del sistema pasan a permitir definiciones más específicas, y se unifica la forma en que es recuperado el valor desde el código, independientemente del nivel. Posiblemente haya que revisar las personalizaciones para verificar que los parámetros se consuman con la nueva forma. Para mas información ver [[SIU-Guarani/Version3.13.0/consideraciones_tecnicas/cambios_parametros| el siguiente link]].</dd><br />
* '''Ajuste en los dominios de unidades de gestión'''<br />
<dd>Dejan de estar disponibles los dominios "Ubicaciones" y "Actividades". Se deben revisar las unidades de gestión. Si existe alguna con los dominios antes mencionados se borrará en el proceso de migración de la base de datos. Si además la unidad de gestión estaba vinculada a un perfil de datos activo, el mismo dejará de filtrar.<br />
</dd><br />
* '''Repositorio Digital Integrado:''' se agrega la opción de utilizar RDI para '''Legajo Digital''' en Requisitos Documentales, utilizando la RDILib provista por SIU-Toba. <br />
<dd>Permite mantener los requisitos documentales en forma digital en un ECM (Enterprise Content Management), teniendo en cuenta los siguientes requisitos:<br />
# Instalación de un servidor de Nuxeo.<br />
# Configuración de los Tipos Digitales para documentos.<br />
# Configuración de parámetros de sistema que permiten utilizar la opción en las operaciones que cargan y presentan Requisitos.<br />
Para mas información ver el siguiente [[SIU-Guarani/Version3.13.0/consideraciones_tecnicas/RDI| el siguiente link]].<br />
</dd><br />
<br />
* '''Nuevo comando de toba: '''<br />
<dd>Chequeador de instalación y configuración. Para mas información ver [[SIU-Guarani/Version3.13.0/consideraciones_tecnicas/chequear_configuracion|el siguiente link]]</dd><br />
<br />
== 3W ==<br />
<br />
* '''Modificaciones en el archivo de configuración''': <br />
<dd>Se agregan nuevas directivas en el archivo '''instalacion/config.php''', <br />
recrearlo a partir de '''instalacion/config_template.php'''. Para mas información ver [[SIU-Guarani/Version3.13.0/3w/configuracion|la siguiente referencia]].</dd><br />
* '''Utilización de [https://getcomposer.org/ Composer]''' para la carga de librerías externas. Se comienza a cargar Chulupí a través de dicha herramienta.<br />
* '''Actualización a reCAPTCHA 2'''. Para obtener el par de API keys ('site_key' y 'secret_key') ir [http://www.google.com/recaptcha/admin aquí].</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/consideraciones_tecnicas/RDI&diff=21430SIU-Guarani/Version3.13.0/consideraciones tecnicas/RDI2017-05-05T20:17:14Z<p>Gfranz: Página creada con «= Repositorio Digital Integrado para Legajo Digital = Se incorporó la posibilidad de utilizar RDI para requisitos documentales en la versión 3.13.0. <br /> == Instalac...»</p>
<hr />
<div>= Repositorio Digital Integrado para Legajo Digital =<br />
<br />
Se incorporó la posibilidad de utilizar RDI para requisitos documentales en la versión 3.13.0. <br />
<br /><br />
<br />
== Instalación de Nuxeo ==<br />
Realizar una instalación de un servidor de nuxeo, versión superior o igual a la 7 (compatibles con la RDILib). <br /><br />
[https://doc.nuxeo.com/710/admindoc/installation/ Documentación Nuxeo]<br />
<br /><br />
=== Configuración de los tipos SIU para Nuxeo ===<br />
Debe descargarse el archivo con los tipos definidos por el SIU '''siu-types-1.1.10.jar''' desde el Colab: <br /><br />
[https://colab.siu.edu.ar/svn/guarani3/vendor/RDITipos/%20 https://colab.siu.edu.ar/svn/guarani3/vendor/RDITipos/ ] <br /><br />
y copiarlo en el path de instalación de nuxeo: '''/var/lib/nuxeo/server/nxserver/bundles/<br />
'''<br />
=== Configuración de la instalación de Toba ===<br />
Configurar el archivo <b>rdi.ini</b> en la carpeta de instalación ($path_instalacion_guarani//lib/toba/instalacion)<br />
<br /><br />
<source lang="php" enclose="div"><br />
[guarani]<br />
repositorio='url_de_nuxeo'; (por ej: http://url:8080/nuxeo/atom/cmis ó IP:8080/nuxeo/atom/cmis)<br />
usuario='' (usuario y clave definidas para la instalación de nuxeo)<br />
clave=''<br />
conector='CMIS_ATOM'<br />
</source><br />
== Configuración de Tipos Digitales para Requisitos Documentales ==<br />
<br />
Para poder utilizar la carga de Requisitos Documentales en el Repositorio Digital Integrado, cada uno de los mismos debe tener un <b>Tipo Digital</b> asociado, que se utiliza para su almacenamiento, definición de atributos y recuperación.<br /><br />
Para esto, se debe ingresar en la operación <b>Administrar Requisitos</b> y editar cada requisito de tipo documental, asociándoles el tipo correspondiente:<br />
[[Archivo:TipoDigital.png]]<br />
<br /><br />
Actualmente se cuenta con 4 tipos definidos por el SIU, asociables a estos requisitos:<br />
. Título Secundario <br /><br />
. Documento de la persona <br /><br />
. Foto de la persona <br /><br />
. Documento académico (para los restantes documentos digitales).<br />
<br />
== Configuración de parámetros ==<br />
Finalmente, para poder acceder a la carga y descarga de documentos en las diferentes operaciones que permiten presentar Requisitos Documentales, debe configurarse correctamente el parámetro de sistema <b>usa_repositorio_digital</b><br />
[[Archivo:ParametroRdi.png]]<br />
<br />
[[SIU-Guarani/Version3.13.0/Novedades_tecnicas|< Volver]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/Novedades_tecnicas&diff=21406SIU-Guarani/Version3.13.0/Novedades tecnicas2017-05-04T19:04:47Z<p>Gfranz: </p>
<hr />
<div>__NOTOC__<br />
= Principales novedades técnicas =<br />
<div style="clear: both; display: block; float: left; border-left: 3px solid #3399ff; padding: 10px; background-color: #eee; width: 565px;font-size: 13px;"><br />
<p style="margin: 0; padding: 0;">[[SIU-Guarani/Version3.13.0 | Volver]]</p><br />
<p style="margin: 0; padding: 0;">Número de versión: <strong>3.13.0</strong></p><br />
<p style="margin: 0; padding: 0;">Fecha de publicación: <strong>26/04/2017</strong></p><br />
</div><br />
<p style="clear: both;"></p><br />
== Base de Datos ==<br />
* [https://colab.siu.edu.ar/modelo/031300/Guarani_v3_13_0.html Modelo 3.13.0] (Se accede con credenciales de Colab)<br />
<br />
=== Diferencias con versiones anteriores ===<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.11.0&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.11.0]<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.11.1&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.11.1]<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.11.2&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.11.2]<br />
* [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diff_base/versiones/3.12.0&new=HEAD@/branches/diff_base/versiones/3.13.0 Con versión 3.12.0]<br />
<br />
== Gestión ==<br />
<br />
* '''Cambios en el esquema de parámetros: '''<br />
<dd>Varios parámetros del sistema pasan a permitir definiciones más específicas, y se unifica la forma en que es recuperado el valor desde el código, independientemente del nivel. Posiblemente haya que revisar las personalizaciones para verificar que los parámetros se consuman con la nueva forma. Para mas información ver [[SIU-Guarani/Version3.13.0/consideraciones_tecnicas/cambios_parametros| el siguiente link]].</dd><br />
* '''Ajuste en los dominios de unidades de gestión'''<br />
<dd>Dejan de estar disponibles los dominios "Ubicaciones" y "Actividades". Se deben revisar las unidades de gestión. Si existe alguna con los dominios antes mencionados se borrará en el proceso de migración de la base de datos. Si además la unidad de gestión estaba vinculada a un perfil de datos activo, el mismo dejará de filtrar.<br />
</dd><br />
* '''Repositorio Digital Integrado:''' se agrega la opción de utilizar RDI para '''Legajo Digital''' en Requisitos Documentales, utilizando la RDILib provista por SIU-Toba. <br />
<dd>Permite mantener los requisitos documentales en forma digital en un ECM (Enterprise Content Management), teniendo en cuenta los siguientes requisitos:<br />
# Instalación de un servidor de Nuxeo.<br />
# Configuración de los Tipos Digitales para documentos.<br />
# Configuración de parámetros de sistema que permiten utilizar la opción en las operaciones que cargan y presentan Requisitos.<br />
</dd><br />
<br />
* '''Nuevo comando de toba: '''<br />
<dd>Chequeador de instalación y configuración. Para mas información ver [[SIU-Guarani/Version3.13.0/consideraciones_tecnicas/chequear_configuracion|el siguiente link]]</dd><br />
<br />
== 3W ==<br />
<br />
* '''Modificaciones en el archivo de configuración''': <br />
<dd>Se agregan nuevas directivas en el archivo '''instalacion/config.php''', <br />
recrearlo a partir de '''instalacion/config_template.php'''. Para mas información ver [[SIU-Guarani/Version3.13.0/3w/configuracion|la siguiente referencia]].</dd><br />
* '''Utilización de [https://getcomposer.org/ Composer]''' para la carga de librerías externas. Se comienza a cargar Chulupí a través de dicha herramienta.<br />
* '''Actualización a reCAPTCHA 2'''. Para obtener el par de API keys ('site_key' y 'secret_key') ir [http://www.google.com/recaptcha/admin aquí].</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=Archivo:ParametroRdi.png&diff=20976Archivo:ParametroRdi.png2017-04-27T19:45:05Z<p>Gfranz: </p>
<hr />
<div></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=Archivo:TipoDigital.png&diff=20961Archivo:TipoDigital.png2017-04-27T19:14:23Z<p>Gfranz: </p>
<hr />
<div></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/Novedades_tecnicas&diff=20855SIU-Guarani/Version3.13.0/Novedades tecnicas2017-04-27T15:06:36Z<p>Gfranz: </p>
<hr />
<div><div style="clear: both; display: block; float: left; border-left: 3px solid #3399ff; padding: 10px; background-color: #eee; width: 565px;font-size: 13px;"><br />
<br />
<p style="margin: 0; padding: 0;">[[SIU-Guarani/Version3.13.0 | Volver]]</p><br />
<p style="margin: 0; padding: 0;">Número de versión: <strong>3.13.0</strong></p><br />
<p style="margin: 0; padding: 0;">Fecha de publicación: <strong>26/04/2017</strong></p><br />
</div><br />
<p style="clear: both;"></p><br />
<br><br />
<br><br />
<p style="margin: 0; padding: 0;"><strong>Principales novedades técnicas</strong></p><br />
<br />
<!-- * '''Diferencias de base de datos'''<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.0&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.0]<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.1&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.1]<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.2&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.2]<br />
--><br />
* '''Nuevo comando de toba: '''<br />
<dd>Chequeador de instalación y configuración. Para mas información ver [[SIU-Guarani/Version3.13.0/consideraciones_tecnicas/chequear_configuracion| el siguiente link]]</dd><br />
* '''Modificaciones en el archivo de configuración''': <br />
<dd>Se agregan nuevas directivas en el archivo '''instalacion/config.php''', <br />
recrearlo a partir de '''instalacion/config_template.php'''. Para mas información ver [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/3w/configuracion la siguiente referencia].</dd><br />
* '''Repositorio Digital Integrado:''' se agrega la opción de utilizar RDI para '''Legajo Digital''' en Requisitos Documentales, utilizando la RDILib provista por SIU-Toba. <br />
<dd>Permite mantener los requisitos documentales en forma digital en un ECM (Enterprise Content Management), teniendo en cuenta los siguientes requisitos:<br />
# Instalación de un servidor de Nuxeo.<br />
# Configuración de los Tipos Digitales para documentos.<br />
# Configuración de parámetros de sistema que permiten utilizar la opción en las operaciones que cargan y presentan Requisitos.<br />
</dd><br />
<dd>Para más información consultar el siguiente [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/Gestion/RDI link]</dd><br />
* '''Utilización de [https://getcomposer.org/ Composer]''' para la carga de librerías externas. Se comienza a cargar Chulupí a través de dicha herramienta.<br />
* '''Actualización a reCAPTCHA 2'''. Para obtener el par de API keys ('site_key' y 'secret_key') ir [http://www.google.com/recaptcha/admin aquí].<br />
* '''Ajuste en los dominios de unidades de gestión'''<br />
<dd>Dejan de estar disponibles los dominios "Ubicaciones" y "Actividades". Se deben revisar las unidades de gestión. Si existe alguna con los dominios antes mencionados se borrará en el proceso de migración de la base de datos. Si además la unidad de gestión estaba vinculada a un perfil de datos activo, el mismo dejará de filtrar.<br />
</dd></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/Novedades_tecnicas&diff=20826SIU-Guarani/Version3.13.0/Novedades tecnicas2017-04-27T14:13:52Z<p>Gfranz: </p>
<hr />
<div><div style="clear: both; display: block; float: left; border-left: 3px solid #3399ff; padding: 10px; background-color: #eee; width: 565px;font-size: 13px;"><br />
<br />
<p style="margin: 0; padding: 0;">[[SIU-Guarani/Version3.13.0 | Volver]]</p><br />
<p style="margin: 0; padding: 0;">Número de versión: <strong>3.13.0</strong></p><br />
<p style="margin: 0; padding: 0;">Fecha de publicación: <strong>26/04/2017</strong></p><br />
</div><br />
<p style="clear: both;"></p><br />
<br><br />
<br><br />
<p style="margin: 0; padding: 0;"><strong>Principales novedades técnicas</strong></p><br />
<br />
<!-- * '''Diferencias de base de datos'''<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.0&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.0]<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.1&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.1]<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.2&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.2]<br />
--><br />
* '''Nuevo comando de toba: '''<br />
<dd>Chequeador de instalación y configuración. Para mas información ver [[SIU-Guarani/Version3.13.0/consideraciones_tecnicas/chequear_configuracion| el siguiente link]]</dd><br />
* '''Modificaciones en el archivo de configuración''': <br />
<dd>Se agregan nuevas directivas en el archivo '''instalacion/config.php''', <br />
recrearlo a partir de '''instalacion/config_template.php'''. Para mas información ver [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/3w/configuracion la siguiente referencia].</dd><br />
* '''Repositorio Digital Integrado:''' se agrega la opción de utilizar RDI para '''Legajo Digital''' en Requisitos Documentales, utilizando la RDILib provista por SIU-Toba. <br />
<dd>Permite mantener los requisitos documentales en forma digital en un EMC (Enterprise Content Managment), teniendo en cuenta los siguientes requisitos:<br />
# Instalación de un servidor de Nuxeo.<br />
# Configuración de los Tipos Digitales para documentos.<br />
# Configuración de parámetros de sistema que permiten utilizar la opción en las operaciones que cargan y presentan Requisitos.<br />
</dd><br />
<dd>Para más información consultar el siguiente [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/Gestion/RDI link]</dd><br />
* '''Utilización de [https://getcomposer.org/ Composer]''' para la carga de librerías externas. Se comienza a cargar Chulupí a través de dicha herramienta.<br />
* '''Actualización a reCAPTCHA 2'''. Para obtener el par de API keys ('site_key' y 'secret_key') ir [http://www.google.com/recaptcha/admin aquí].<br />
* '''Ajuste en los dominios de unidades de gestión'''<br />
<dd>Dejan de estar disponibles los dominios "Ubicaciones" y "Actividades". Se deben revisar las unidades de gestión. Si existe alguna con los dominios antes mencionados se borrará en el proceso de migración de la base de datos. Si además la unidad de gestión estaba vinculada a un perfil de datos activo, el mismo dejará de filtrar.<br />
</dd></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/Novedades_tecnicas&diff=20770SIU-Guarani/Version3.13.0/Novedades tecnicas2017-04-26T20:22:29Z<p>Gfranz: </p>
<hr />
<div><div style="clear: both; display: block; float: left; border-left: 3px solid #3399ff; padding: 10px; background-color: #eee; width: 565px;font-size: 13px;"><br />
<br />
<p style="margin: 0; padding: 0;">[[SIU-Guarani/Version3.13.0 | Volver]]</p><br />
<p style="margin: 0; padding: 0;">Número de versión: <strong>3.13.0</strong></p><br />
<p style="margin: 0; padding: 0;">Fecha de publicación: <strong>26/04/2017</strong></p><br />
</div><br />
<p style="clear: both;"></p><br />
<br><br />
<br><br />
<p style="margin: 0; padding: 0;"><strong>Principales novedades técnicas</strong></p><br />
<br />
* '''Cambio de la versión de php a 5.6.''' [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/version3.13.0/instalacion_desde_cero/requisitos_previos/linux Requisitos]<br />
* '''Diferencias de base de datos'''<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.0&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.0]<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.1&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.1]<br />
** [https://colab.siu.edu.ar/trac/guarani3/changeset?old=HEAD@/branches/diferencias_base/versiones/3.11.2&new=HEAD@/branches/diferencias_base/versiones/3.13.0 Con versión 3.11.2]<br />
* '''Nuevo comando de toba: '''<br />
<dd><br />
# Anonimización de Base de datos. ([http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/consideraciones_tecnicas/anonimizar backup_anonimizado])<br />
<!--# Chequeador de instalación y configuración. (chequear_configuracion)--><br />
</dd><br />
* '''Modificaciones en el archivo de configuración''': <br />
<dd>Se agregan nuevas directivas en el archivo '''instalacion/config.php''', <br />
recrearlo a partir de '''instalacion/config_template.php'''. Para mas información ver [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/3w/configuracion la siguiente referencia].</dd><br />
* '''Refactorización de procesos:''' se refactorizan todos los procesos masivos que corren por background. <br />
<dd>Las principales razones de esta refactorizaron son las siguientes:<br />
# Poder ejecutar más de uno en simultáneo.<br />
# Abortar procesamientos.<br />
# Poder visualizar resultados de ejecuciones anteriores.<br />
# Unificación de logs.<br />
</dd><br />
<dd>Para más información consultar el siguiente [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/Gestion/Refactorizacion link]</dd><br />
* '''Repositorio Digital Integrado:''' se agrega la opción de utilizar RDI para '''Legajo Digital''' en Requisitos Documentales, utilizando la RDILib provista por SIU-Toba. <br />
<dd>Permite mantener los requisitos documentales en forma digital en un EMC (Enterprise Content Managment), teniendo en cuenta los siguientes requisitos:<br />
# Instalación de la herramienta Nuxeo.<br />
# Configuración de los Tipos Digitales para documentos.<br />
# Configuración de parámetros de sistema que permiten utilizar la opción en las operaciones que cargan y presentan Requisitos.<br />
</dd><br />
<dd>Para más información consultar el siguiente [http://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.13.0/Gestion/RDI link]</dd><br />
* '''Utilización de [https://getcomposer.org/ Composer]''' para la carga de librerías externas. Se comienza a cargar Chulupí a través de dicha herramienta.<br />
* '''Actualización a reCAPTCHA 2'''. Para obtener el par de API keys ('site_key' y 'secret_key') ir [http://www.google.com/recaptcha/admin aquí].<br />
* '''Mejoras en el perfil Cursos'''. Se hacen mas robustas las operaciones de inscripción y baja, además de incorporar la devolución del pago en esta ultima.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.12.0/personalizaciones/personalizaciones_gestion&diff=13363SIU-Guarani/Version3.12.0/personalizaciones/personalizaciones gestion2016-10-14T20:27:35Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span><br />
== Convenciones sugeridas para personalizar ==<br />
<br />
=== Requisitos básicos ===<br />
* Haber realizado los cursos de Toba brindados por el SIU (al menos el de ''Nivel Inicial'') o contar con experiencia en proyectos Toba<br />
* Tener un usuario SVN y la carpeta creada por el SIU en su repositorio para trabajar con personalizaciones en Guaraní<br />
* Contar con un ID de desarrollador brindado por el SIU<br />
* Haber iniciado el esquema de personalizaciones<br />
* Se recomienda leer la documentación existente sobre personalizaciones en proyectos Toba en general, disponible en: http://toba.siu.edu.ar/trac/toba/wiki/Referencia/Personalizaciones<br />
<br />
=== Bases de datos ===<br />
Como es sabido, SIU-Guaraní funciona con dos bases de datos, en realidad en Postgres con una BD y dos schemas, pero se habla de BDs como concepto clásico:<br />
* '''BD de negocio:''' almacena toda la información con la que se trabaja en el sistema (alumnos, propuestas, etc..)<br />
* '''BD de Toba:''' guarda las configuraciones de todos los objetos que componen las operaciones del sistema. Básicamente, los objetos creados en el '''Editor Toba''' y todas las propiedades de los mismos, además de configuraciones generales del sistema.<br />
El sistema entonces, genera las operaciones a partir del código del framework y las configuraciones antes mencionadas, y define el comportamiento de estos objetos a partir del código del proyecto. Ver la siguiente diapositiva que representa lo explicado: https://docs.google.com/presentation/d/1o-LXKCZ92F1ZqoKi0qpnM11ouAx8WmxSLdBk0pnEji4/edit?usp=sharing<br />
<br />
=== Convenciones de nombres y carpetas ===<br />
La idea de fondo respecto a las personalizaciones en '''SIU-Guaraní''' es similar al de Autogestión: todo lo que se personalice debe ubicarse dentro de la carpeta <tt><path proyecto Guaraní>/personalizacion</tt>, y sólo se deberá agregar allí lo que se quiera personalizar, que tendrá prevalencia por sobre el comportamiento estándar del sistema.<br />
<br><br />
'''Nota:''' se debe reemplazar <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión.<br />
<br />
==== Clases ====<br />
Las personalizaciones a nivel de código se logran utilizando la '''herencia soportada por PHP'''.<br><br />
La idea es extender los componentes ya definidos para la operación que se quiera personalizar (o de los componentes básicos si es una operación nueva) y redefinir los métodos adecuados para lograr el comportamiento que se desee aplicar.<br />
<br />
Para generar clases propias:<br />
* Generar la estructura de directorios en '''<path proyecto Guaraní>/personalizacion/php/operaciones/...''', concordante con el orden del menú del sistema o siguiendo módulo-submódulo. Se recomienda mantener el estándar de nombres fijado por el ''SIU'' y no generar cualquier estructura o nombre de directorio. Ésto es primordial para mantener el orden de las personalizaciones generadas y poder encontrar fácilmente los nuevos archivos creados. <br />
* Generar código para definir el comportamiento de la nueva operación. Dado que el código de Guaraní es abierto, por lo que se puede (y de hecho se recomienda) mirar el código de las operaciones ya desarrolladas por el SIU, se deja a criterio de la Institución la implementación del mismo teniendo en cuenta las siguientes recomendaciones: <br />
**La nueva clase generada, dependiendo del tipo de componente en cuestión, debe heredar de una de las clases vacías incluidas en '''<path proyecto Guaraní>/personalizacion/php/extension_toba/componentes/'''. Estas clases definen el comportamiento estándar de los objetos. Observar que cada una de ellas heredan de las clases utilizadas por Guarani para definir el comportamiento de objetos, que a la vez heredan de clases proporcionadas por el framework Toba.<br />
**:Se pide ésto por dos motivos:<br />
***Para que el objeto obtenga un comportamiento por defecto, permitiendo redefinir el metodo deseado para generar un comportamiento particular. <br />
***Permite que si a futuro se desea definir un nuevo comportamiento para todos los objetos de este tipo, el mismo sea definido en la clase "''guarani_pers_...''" específica.<br />
**Observar los métodos heredados de la misma y redefinir solamente los que se desee cambiar el comportamiento. Por ejemplo, los métodos que buscan y asignan datos a un cuadro, los que definen comportamiento de eventos, etc...<br />
<br />
==== Componentes de Toba - Metadatos ====<br />
Lo que complica la personalización en el sistema de Guaraní, a diferencia del web, son los '''metadatos'''.<br />
Dado que como mencionamos previamente, la configuración de los objetos que componen las operaciones del sistema se almacenan en la base de datos de Toba, se deben modificar los mismos para poder utilizar los nuevos archivos PHP generados o para cambiar sus propiedades básicas (título, tamaño, etc...). Para tratar este problema, el framework propone una solución dada por un nuevo conjunto de comandos que clonan la base de metadatos (BD Toba) del sistema y luego obtienen las diferencias entre los metadatos modificados y originales exportando los mismos al sistema de archivos para poder regenerarlos posteriormente y compartirlo con el resto de los miembros del equipo.<br />
El conjunto de comandos que se mencionan en el párrafo anterior, son los de la ''familia'' de:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers<br />
</source><br />
===== Recomendaciones sobre los componentes =====<br />
* Nombre: Anexar ''' - XXX''' (donde XXX es el nodo que le otorgó el SIU a la institución. Si quisieran diferenciar las personalizaciones entre las unidades académicas les podrían agregar -YYY donde YYY sería el código de unidad académica , EJ: uba-fcen). Se recomienda anexar el sufijo explicitado para identificarlo fácilmente o tener alguna referencia más ante algún pedido de soporte. Aunque desde ya, no es obligatorio realizar ésto.<br />
* Subclase: Debe vincularse con las clases generadas en las sección de [[SIU-Guarani/Version3.12.0/personalizaciones/convenciones_sugeridas#Clases_nuevas_-_C.C3.B3digo|Clases]]<br />
* Carpeta: Ubicar al componente en alguna carpeta relacionada a los conceptos que se quieren personalizar. Recordar que esta ubicación, es la que luego se otorgará en el Menú del sistema.<br />
* Punto de Montaje: se debe fijar el punto de montaje '''personalizacion''', que indica que la carpeta base donde ubicar los archivos del componente será '''<path proyecto Guaraní>/personalizacion''' y que constituye efectivamente un componente personalizado.<br />
<br />
=== Funcionamiento general del esquema de personalizaciones ===<br />
==== Iniciar las personalizaciones ====<br />
Al iniciar las personalizaciones mediante:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers iniciar<br />
</source><br />
<br />
==== Exportar los metadatos nuevos ====<br />
Una vez que se ha finalizado con la implementación de la personalización, y se ha testeado el correcto funcionamiento de la misma, se deben ''descargar'' los cambios realizados a los componentes en la ''BD Toba'' al sistema de archivos para resguardarlos y versionarlos en el repositorio, se debe usar el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers exportar<br />
</source><br />
que exporta todos los cambios realizados en los metadatos a <tt><path proyecto Guaraní>/guarani/personalizacion/metadatos</tt>.<br />
<br />
==== Desactivar el esquema de personalizaciones ====<br />
Si por alguna razón se desea desactivar el esquema de personalizaciones para dejar de utilizar el mismo y volver a los metadatos originales del proyecto enviado por el SIU, se ejecuta el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers desactivar<br />
</source><br />
Este comando le indica al sistema que se debe volver a utilizar el esquema original.<br />
<br />
==== Reactivar el esquema de personalizaciones ====<br />
Si luego de desactivado el esquema de personalizaciones, se desea volver a trabajar con el mismo, se debe volver a ejecutar el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers iniciar<br />
</source><br />
Este comando cambia el archivo 'bases.ini' (<tt><path proyecto Guaraní>/lib/toba/instalacion/bases.ini</tt>) para poder trabajar con las personalizaciones.<br><br />
Para incorporar luego las personalizaciones existentes se debe ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani esquema_pers importar<br />
</source><br />
<br />
==== Regenerar el autoload ====<br />
Una vez que se realizó la exportación de los metadatos modificados, se deben incorporar las clases recientemente generadas en el archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_pers_autoload.php</tt> para que se puedan acceder desde otras clases si fuera necesario.<br><br />
Para esto, ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani pers_autoload<br />
</source><br />
<br />
==== Análisis de conflictos ====<br />
Existe un comando que permite analizar los posibles conflictos entre los metadatos existentes entre la BD de Toba actual y las personalizaciones a importar.<br />
Funciona como una simulación del proceso de importación de metadatos de personalizaciones y genera el archivo: <tt>conflictos.log</tt> conteniendo los potenciales conflictos detectados, de forma tal que el usuario pueda analizar los mismos y tomar acciones correctivas para evitar que sucedan.<br />
El comando es:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers conflictos<br />
</source><br />
Puede ser ejecutado previo al comando <br />
<source lang="php" enclose="div"><br />
guarani esquema_pers importar<br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/personalizaciones/personalizaciones_gestion&diff=17299SIU-Guarani/Version3.13.0/personalizaciones/personalizaciones gestion2016-10-14T20:27:35Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span><br />
== Convenciones sugeridas para personalizar ==<br />
<br />
=== Requisitos básicos ===<br />
* Haber realizado los cursos de Toba brindados por el SIU (al menos el de ''Nivel Inicial'') o contar con experiencia en proyectos Toba<br />
* Tener un usuario SVN y la carpeta creada por el SIU en su repositorio para trabajar con personalizaciones en Guaraní<br />
* Contar con un ID de desarrollador brindado por el SIU<br />
* Haber iniciado el esquema de personalizaciones<br />
* Se recomienda leer la documentación existente sobre personalizaciones en proyectos Toba en general, disponible en: http://toba.siu.edu.ar/trac/toba/wiki/Referencia/Personalizaciones<br />
<br />
=== Bases de datos ===<br />
Como es sabido, SIU-Guaraní funciona con dos bases de datos, en realidad en Postgres con una BD y dos schemas, pero se habla de BDs como concepto clásico:<br />
* '''BD de negocio:''' almacena toda la información con la que se trabaja en el sistema (alumnos, propuestas, etc..)<br />
* '''BD de Toba:''' guarda las configuraciones de todos los objetos que componen las operaciones del sistema. Básicamente, los objetos creados en el '''Editor Toba''' y todas las propiedades de los mismos, además de configuraciones generales del sistema.<br />
El sistema entonces, genera las operaciones a partir del código del framework y las configuraciones antes mencionadas, y define el comportamiento de estos objetos a partir del código del proyecto. Ver la siguiente diapositiva que representa lo explicado: https://docs.google.com/presentation/d/1o-LXKCZ92F1ZqoKi0qpnM11ouAx8WmxSLdBk0pnEji4/edit?usp=sharing<br />
<br />
=== Convenciones de nombres y carpetas ===<br />
La idea de fondo respecto a las personalizaciones en '''SIU-Guaraní''' es similar al de Autogestión: todo lo que se personalice debe ubicarse dentro de la carpeta <tt><path proyecto Guaraní>/personalizacion</tt>, y sólo se deberá agregar allí lo que se quiera personalizar, que tendrá prevalencia por sobre el comportamiento estándar del sistema.<br />
<br><br />
'''Nota:''' se debe reemplazar <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión.<br />
<br />
==== Clases ====<br />
Las personalizaciones a nivel de código se logran utilizando la '''herencia soportada por PHP'''.<br><br />
La idea es extender los componentes ya definidos para la operación que se quiera personalizar (o de los componentes básicos si es una operación nueva) y redefinir los métodos adecuados para lograr el comportamiento que se desee aplicar.<br />
<br />
Para generar clases propias:<br />
* Generar la estructura de directorios en '''<path proyecto Guaraní>/personalizacion/php/operaciones/...''', concordante con el orden del menú del sistema o siguiendo módulo-submódulo. Se recomienda mantener el estándar de nombres fijado por el ''SIU'' y no generar cualquier estructura o nombre de directorio. Ésto es primordial para mantener el orden de las personalizaciones generadas y poder encontrar fácilmente los nuevos archivos creados. <br />
* Generar código para definir el comportamiento de la nueva operación. Dado que el código de Guaraní es abierto, por lo que se puede (y de hecho se recomienda) mirar el código de las operaciones ya desarrolladas por el SIU, se deja a criterio de la Institución la implementación del mismo teniendo en cuenta las siguientes recomendaciones: <br />
**La nueva clase generada, dependiendo del tipo de componente en cuestión, debe heredar de una de las clases vacías incluidas en '''<path proyecto Guaraní>/personalizacion/php/extension_toba/componentes/'''. Estas clases definen el comportamiento estándar de los objetos. Observar que cada una de ellas heredan de las clases utilizadas por Guarani para definir el comportamiento de objetos, que a la vez heredan de clases proporcionadas por el framework Toba.<br />
**:Se pide ésto por dos motivos:<br />
***Para que el objeto obtenga un comportamiento por defecto, permitiendo redefinir el metodo deseado para generar un comportamiento particular. <br />
***Permite que si a futuro se desea definir un nuevo comportamiento para todos los objetos de este tipo, el mismo sea definido en la clase "''guarani_pers_...''" específica.<br />
**Observar los métodos heredados de la misma y redefinir solamente los que se desee cambiar el comportamiento. Por ejemplo, los métodos que buscan y asignan datos a un cuadro, los que definen comportamiento de eventos, etc...<br />
<br />
==== Componentes de Toba - Metadatos ====<br />
Lo que complica la personalización en el sistema de Guaraní, a diferencia del web, son los '''metadatos'''.<br />
Dado que como mencionamos previamente, la configuración de los objetos que componen las operaciones del sistema se almacenan en la base de datos de Toba, se deben modificar los mismos para poder utilizar los nuevos archivos PHP generados o para cambiar sus propiedades básicas (título, tamaño, etc...). Para tratar este problema, el framework propone una solución dada por un nuevo conjunto de comandos que clonan la base de metadatos (BD Toba) del sistema y luego obtienen las diferencias entre los metadatos modificados y originales exportando los mismos al sistema de archivos para poder regenerarlos posteriormente y compartirlo con el resto de los miembros del equipo.<br />
El conjunto de comandos que se mencionan en el párrafo anterior, son los de la ''familia'' de:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers<br />
</source><br />
===== Recomendaciones sobre los componentes =====<br />
* Nombre: Anexar ''' - XXX''' (donde XXX es el nodo que le otorgó el SIU a la institución. Si quisieran diferenciar las personalizaciones entre las unidades académicas les podrían agregar -YYY donde YYY sería el código de unidad académica , EJ: uba-fcen). Se recomienda anexar el sufijo explicitado para identificarlo fácilmente o tener alguna referencia más ante algún pedido de soporte. Aunque desde ya, no es obligatorio realizar ésto.<br />
* Subclase: Debe vincularse con las clases generadas en las sección de [[SIU-Guarani/Version3.13.0/personalizaciones/convenciones_sugeridas#Clases_nuevas_-_C.C3.B3digo|Clases]]<br />
* Carpeta: Ubicar al componente en alguna carpeta relacionada a los conceptos que se quieren personalizar. Recordar que esta ubicación, es la que luego se otorgará en el Menú del sistema.<br />
* Punto de Montaje: se debe fijar el punto de montaje '''personalizacion''', que indica que la carpeta base donde ubicar los archivos del componente será '''<path proyecto Guaraní>/personalizacion''' y que constituye efectivamente un componente personalizado.<br />
<br />
=== Funcionamiento general del esquema de personalizaciones ===<br />
==== Iniciar las personalizaciones ====<br />
Al iniciar las personalizaciones mediante:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers iniciar<br />
</source><br />
<br />
==== Exportar los metadatos nuevos ====<br />
Una vez que se ha finalizado con la implementación de la personalización, y se ha testeado el correcto funcionamiento de la misma, se deben ''descargar'' los cambios realizados a los componentes en la ''BD Toba'' al sistema de archivos para resguardarlos y versionarlos en el repositorio, se debe usar el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers exportar<br />
</source><br />
que exporta todos los cambios realizados en los metadatos a <tt><path proyecto Guaraní>/guarani/personalizacion/metadatos</tt>.<br />
<br />
==== Desactivar el esquema de personalizaciones ====<br />
Si por alguna razón se desea desactivar el esquema de personalizaciones para dejar de utilizar el mismo y volver a los metadatos originales del proyecto enviado por el SIU, se ejecuta el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers desactivar<br />
</source><br />
Este comando le indica al sistema que se debe volver a utilizar el esquema original.<br />
<br />
==== Reactivar el esquema de personalizaciones ====<br />
Si luego de desactivado el esquema de personalizaciones, se desea volver a trabajar con el mismo, se debe volver a ejecutar el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers iniciar<br />
</source><br />
Este comando cambia el archivo 'bases.ini' (<tt><path proyecto Guaraní>/lib/toba/instalacion/bases.ini</tt>) para poder trabajar con las personalizaciones.<br><br />
Para incorporar luego las personalizaciones existentes se debe ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani esquema_pers importar<br />
</source><br />
<br />
==== Regenerar el autoload ====<br />
Una vez que se realizó la exportación de los metadatos modificados, se deben incorporar las clases recientemente generadas en el archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_pers_autoload.php</tt> para que se puedan acceder desde otras clases si fuera necesario.<br><br />
Para esto, ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani pers_autoload<br />
</source><br />
<br />
==== Análisis de conflictos ====<br />
Existe un comando que permite analizar los posibles conflictos entre los metadatos existentes entre la BD de Toba actual y las personalizaciones a importar.<br />
Funciona como una simulación del proceso de importación de metadatos de personalizaciones y genera el archivo: <tt>conflictos.log</tt> conteniendo los potenciales conflictos detectados, de forma tal que el usuario pueda analizar los mismos y tomar acciones correctivas para evitar que sucedan.<br />
El comando es:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers conflictos<br />
</source><br />
Puede ser ejecutado previo al comando <br />
<source lang="php" enclose="div"><br />
guarani esquema_pers importar<br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.14.0/personalizaciones/personalizaciones_gestion&diff=29785SIU-Guarani/Version3.14.0/personalizaciones/personalizaciones gestion2016-10-14T20:27:35Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span><br />
== Convenciones sugeridas para personalizar ==<br />
<br />
=== Requisitos básicos ===<br />
* Haber realizado los cursos de Toba brindados por el SIU (al menos el de ''Nivel Inicial'') o contar con experiencia en proyectos Toba<br />
* Tener un usuario SVN y la carpeta creada por el SIU en su repositorio para trabajar con personalizaciones en Guaraní<br />
* Contar con un ID de desarrollador brindado por el SIU<br />
* Haber iniciado el esquema de personalizaciones<br />
* Se recomienda leer la documentación existente sobre personalizaciones en proyectos Toba en general, disponible en: http://toba.siu.edu.ar/trac/toba/wiki/Referencia/Personalizaciones<br />
<br />
=== Bases de datos ===<br />
Como es sabido, SIU-Guaraní funciona con dos bases de datos, en realidad en Postgres con una BD y dos schemas, pero se habla de BDs como concepto clásico:<br />
* '''BD de negocio:''' almacena toda la información con la que se trabaja en el sistema (alumnos, propuestas, etc..)<br />
* '''BD de Toba:''' guarda las configuraciones de todos los objetos que componen las operaciones del sistema. Básicamente, los objetos creados en el '''Editor Toba''' y todas las propiedades de los mismos, además de configuraciones generales del sistema.<br />
El sistema entonces, genera las operaciones a partir del código del framework y las configuraciones antes mencionadas, y define el comportamiento de estos objetos a partir del código del proyecto. Ver la siguiente diapositiva que representa lo explicado: https://docs.google.com/presentation/d/1o-LXKCZ92F1ZqoKi0qpnM11ouAx8WmxSLdBk0pnEji4/edit?usp=sharing<br />
<br />
=== Convenciones de nombres y carpetas ===<br />
La idea de fondo respecto a las personalizaciones en '''SIU-Guaraní''' es similar al de Autogestión: todo lo que se personalice debe ubicarse dentro de la carpeta <tt><path proyecto Guaraní>/personalizacion</tt>, y sólo se deberá agregar allí lo que se quiera personalizar, que tendrá prevalencia por sobre el comportamiento estándar del sistema.<br />
<br><br />
'''Nota:''' se debe reemplazar <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión.<br />
<br />
==== Clases ====<br />
Las personalizaciones a nivel de código se logran utilizando la '''herencia soportada por PHP'''.<br><br />
La idea es extender los componentes ya definidos para la operación que se quiera personalizar (o de los componentes básicos si es una operación nueva) y redefinir los métodos adecuados para lograr el comportamiento que se desee aplicar.<br />
<br />
Para generar clases propias:<br />
* Generar la estructura de directorios en '''<path proyecto Guaraní>/personalizacion/php/operaciones/...''', concordante con el orden del menú del sistema o siguiendo módulo-submódulo. Se recomienda mantener el estándar de nombres fijado por el ''SIU'' y no generar cualquier estructura o nombre de directorio. Ésto es primordial para mantener el orden de las personalizaciones generadas y poder encontrar fácilmente los nuevos archivos creados. <br />
* Generar código para definir el comportamiento de la nueva operación. Dado que el código de Guaraní es abierto, por lo que se puede (y de hecho se recomienda) mirar el código de las operaciones ya desarrolladas por el SIU, se deja a criterio de la Institución la implementación del mismo teniendo en cuenta las siguientes recomendaciones: <br />
**La nueva clase generada, dependiendo del tipo de componente en cuestión, debe heredar de una de las clases vacías incluidas en '''<path proyecto Guaraní>/personalizacion/php/extension_toba/componentes/'''. Estas clases definen el comportamiento estándar de los objetos. Observar que cada una de ellas heredan de las clases utilizadas por Guarani para definir el comportamiento de objetos, que a la vez heredan de clases proporcionadas por el framework Toba.<br />
**:Se pide ésto por dos motivos:<br />
***Para que el objeto obtenga un comportamiento por defecto, permitiendo redefinir el metodo deseado para generar un comportamiento particular. <br />
***Permite que si a futuro se desea definir un nuevo comportamiento para todos los objetos de este tipo, el mismo sea definido en la clase "''guarani_pers_...''" específica.<br />
**Observar los métodos heredados de la misma y redefinir solamente los que se desee cambiar el comportamiento. Por ejemplo, los métodos que buscan y asignan datos a un cuadro, los que definen comportamiento de eventos, etc...<br />
<br />
==== Componentes de Toba - Metadatos ====<br />
Lo que complica la personalización en el sistema de Guaraní, a diferencia del web, son los '''metadatos'''.<br />
Dado que como mencionamos previamente, la configuración de los objetos que componen las operaciones del sistema se almacenan en la base de datos de Toba, se deben modificar los mismos para poder utilizar los nuevos archivos PHP generados o para cambiar sus propiedades básicas (título, tamaño, etc...). Para tratar este problema, el framework propone una solución dada por un nuevo conjunto de comandos que clonan la base de metadatos (BD Toba) del sistema y luego obtienen las diferencias entre los metadatos modificados y originales exportando los mismos al sistema de archivos para poder regenerarlos posteriormente y compartirlo con el resto de los miembros del equipo.<br />
El conjunto de comandos que se mencionan en el párrafo anterior, son los de la ''familia'' de:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers<br />
</source><br />
===== Recomendaciones sobre los componentes =====<br />
* Nombre: Anexar ''' - XXX''' (donde XXX es el nodo que le otorgó el SIU a la institución. Si quisieran diferenciar las personalizaciones entre las unidades académicas les podrían agregar -YYY donde YYY sería el código de unidad académica , EJ: uba-fcen). Se recomienda anexar el sufijo explicitado para identificarlo fácilmente o tener alguna referencia más ante algún pedido de soporte. Aunque desde ya, no es obligatorio realizar ésto.<br />
* Subclase: Debe vincularse con las clases generadas en las sección de [[SIU-Guarani/Version3.14.0/personalizaciones/convenciones_sugeridas#Clases_nuevas_-_C.C3.B3digo|Clases]]<br />
* Carpeta: Ubicar al componente en alguna carpeta relacionada a los conceptos que se quieren personalizar. Recordar que esta ubicación, es la que luego se otorgará en el Menú del sistema.<br />
* Punto de Montaje: se debe fijar el punto de montaje '''personalizacion''', que indica que la carpeta base donde ubicar los archivos del componente será '''<path proyecto Guaraní>/personalizacion''' y que constituye efectivamente un componente personalizado.<br />
<br />
=== Funcionamiento general del esquema de personalizaciones ===<br />
==== Iniciar las personalizaciones ====<br />
Al iniciar las personalizaciones mediante:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers iniciar<br />
</source><br />
<br />
==== Exportar los metadatos nuevos ====<br />
Una vez que se ha finalizado con la implementación de la personalización, y se ha testeado el correcto funcionamiento de la misma, se deben ''descargar'' los cambios realizados a los componentes en la ''BD Toba'' al sistema de archivos para resguardarlos y versionarlos en el repositorio, se debe usar el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers exportar<br />
</source><br />
que exporta todos los cambios realizados en los metadatos a <tt><path proyecto Guaraní>/guarani/personalizacion/metadatos</tt>.<br />
<br />
==== Desactivar el esquema de personalizaciones ====<br />
Si por alguna razón se desea desactivar el esquema de personalizaciones para dejar de utilizar el mismo y volver a los metadatos originales del proyecto enviado por el SIU, se ejecuta el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers desactivar<br />
</source><br />
Este comando le indica al sistema que se debe volver a utilizar el esquema original.<br />
<br />
==== Reactivar el esquema de personalizaciones ====<br />
Si luego de desactivado el esquema de personalizaciones, se desea volver a trabajar con el mismo, se debe volver a ejecutar el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers iniciar<br />
</source><br />
Este comando cambia el archivo 'bases.ini' (<tt><path proyecto Guaraní>/lib/toba/instalacion/bases.ini</tt>) para poder trabajar con las personalizaciones.<br><br />
Para incorporar luego las personalizaciones existentes se debe ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani esquema_pers importar<br />
</source><br />
<br />
==== Regenerar el autoload ====<br />
Una vez que se realizó la exportación de los metadatos modificados, se deben incorporar las clases recientemente generadas en el archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_pers_autoload.php</tt> para que se puedan acceder desde otras clases si fuera necesario.<br><br />
Para esto, ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani pers_autoload<br />
</source><br />
<br />
==== Análisis de conflictos ====<br />
Existe un comando que permite analizar los posibles conflictos entre los metadatos existentes entre la BD de Toba actual y las personalizaciones a importar.<br />
Funciona como una simulación del proceso de importación de metadatos de personalizaciones y genera el archivo: <tt>conflictos.log</tt> conteniendo los potenciales conflictos detectados, de forma tal que el usuario pueda analizar los mismos y tomar acciones correctivas para evitar que sucedan.<br />
El comando es:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers conflictos<br />
</source><br />
Puede ser ejecutado previo al comando <br />
<source lang="php" enclose="div"><br />
guarani esquema_pers importar<br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.12.0/personalizaciones/reporte&diff=12917SIU-Guarani/Version3.12.0/personalizaciones/reporte2016-09-28T20:40:47Z<p>Gfranz: /* Personalizar un reporte */</p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span><br />
== Personalizar un reporte ==<br />
<br />
=== Crear un nuevo reporte ===<br />
Si lo que se desea es generar un nuevo reporte en el sistema, se recomienda "''clonar''" uno existente, ya generado por el SIU que contenga la misma estructura que el que se desea desarrollar. Básicamente, que sea lo mas parecido posible al reporte deseado. Entonces:<br><br />
<br />
==== Generar el ítem ====<br />
Crear el nuevo ítem con el nombre del reporte en la carpeta deseada (correspondiente a la ubicación en el menú del sistema).<br><br />
<br />
'''RECOMENDACIONES:'''<br><br />
<br />
Para las propiedades del item creado, considerar lo siguiente:<br />
*'''Nombre:''' Anexar " - ''XXX''" (donde '''''XXX''''' es el '''nodo''' que le otorgó el SIU a la institución. Si quisieran diferenciar las personalizaciones entre las unidades académicas les podrían agregar -YYY donde YYY sería el código de unidad académica , EJ: uba-fcen). Si bien se fija como estándar que los objetos hijos del ítem generados para este reporte y los archivos asociados a los mismos, contengan el sufijo "_''XXX''" se recomienda anexar el sufijo explicitado para identificarlo fácilmente o tener alguna referencia mas ante algún pedido de soporte. Aunque desde ya, no es obligatorio realizar esto (Si para los estándares mencionados previamente).<br />
*'''Carpeta''': Ubicarlo en alguna carpeta relacionada a los conceptos involucrados directamente en el reporte. Recordar que esta ubicación, es la que luego se otorgara en el Menú del sistema.<br />
*'''Punto de Montaje''': '''OBLIGATORIO''' fijar como punto de montaje para el item "''personalizacion''"<br />
*'''Modelo Página''': Página SIU-Guarani. La página estandar del proyecto que contiene los recursos basicos del mismo. Ésto facilita la implementación de futuras personalizaciones (si se desea, claro está) a todas las operaciones del sistema.<br />
*'''Imagen''': ''Proyecto - Reporte.png'' . El icono estándar que identifica de los reportes en el sistema.<br />
<br />
==== Clonar los componentes ====<br />
Ubicar el ''CI'' (Controlador de negocio) de la operación de la cual se quiera clonar el reporte. Normalmente, tiene el mismo nombre que el Item padre, y es el que contiene todas las pantallas y objetos (cuadros, filtros, etc...) que componen la operación. Una vez seleccionado para edicion: [[File:G3_editar.png]], se debe proceder con el clonado del mismo (seleccionando [[File:G3_clonar.png]] en la esquina superior derecha) marcando:<br />
*'''Anexo nombre''': '''OBLIGATORIO''' "''XXX''_" (donde ''XXX'' corresponde al nodo de la Institución como fue indicado previamente). De esta forma los componentes se crearan con ese prefijo y podrán ser fácilmente identificables. De todas formas, luego habrá que renombrarlos para ponerlo como sufijo en lugar de prefijo como indica el estándar. <br />
*'''Clonar Dependencias''': SI. De esta forma, se clonan todos los subcomponentes del mismo evitando tener que clonar uno a uno mas tarde. En caso que no se desee utilizar en la operación alguno de los componentes hijos, se elimina posteriormente.<br />
*'''Clonar Subclases''': NO. Es preferible generar solo las clases que se utilizaran. Ademas, estas clases contienen metodos que seran heredados por las nuevas generadas por lo que no es necesario copiar los mismos en este paso.<br />
*'''Asignar a un componente''': '''OBLIGATORIO''' SI. Asignárselo al ítem generado en el paso anterior.<br />
<br />
==== Modificaciones post-clonado ====<br />
Luego de clonados los componentes de la operación, se deben editar uno a uno cambiando las propiedades de los mismos según lo deseado (Titulo, ancho de los componentes, pantallas etiquetas, etc...).<br><br />
Es imprescindible, teniendo en cuenta los pasos realizados anteriormente, acomodar los nombres de los componentes siguiendo los estándares: Especificar como '''sufijo''' "'''_XXX'''"y no como prefijo de los mismos, dado que Toba nomencla de esa forma los objetos al clonarlos.<br />
<br />
==== Agregando clases propias ====<br />
Al clonar los componentes de la operación, el comportamiento de los mismos queda definido por las mismas clases (''archivos PHP'') que las del componente origen clonado. Es normal, querer definir clases propias para modificar el comportamiento original o agregar nuevos comportamientos para el nuevo reporte generado. Ésto también es necesario, en caso que el reporte difiera del original al agregar o eliminar una columna del mismo o simplemente porque se desea mostrar otros datos diferentes al original.<br />
<br />
Para generar clases propias que definan el nuevo comportamiento de la operación realizar lo siguiente:<br />
<br />
# Generar la estructura de directorios en <tt><path proyecto Guaraní>/personalizacion/php/operaciones/...</tt>, concordante con el orden del menú del sistema o siguiendo módulo-submódulo. Se recomienda mantener el estándar de nombres fijado por el ''SIU'' y no generar cualquier estructura o nombre de directorio. Ésto es primordial para mantener el orden de las personalizaciones generadas y poder encontrar fácilmente los nuevos archivos creados. <br />
# En el '''Editor Toba''' seleccionar para el componente:<br />
#*'''Punto de Montaje''': ''personalizacion'', que indica que la carpeta base donde ubicar los archivos del componente será <tt><path proyecto Guaraní>/personalizacion</tt> y que constituye efectivamente un componente personalizado.<br />
#*'''Subclase - Archivo''': Dentro de la estructura de carpetas creada en el punto anterior, generar el archivo cuyo nombre tenga la forma: "'''<Tipo_Componente>_<Nombre_Representativo>_<Anexo_institucion>.php'''". <br><br />
#**'''<Tipo_Componente>''' representa el tipo del componente actual. Ej '''ci''','''form''','''cuadro''','''filtro''', etc...<br><br />
#**'''<Nombre_Representativo>''' especifica un nombre acorde a la operacion/comportamiento en cuestión. Ej '''reporte_actas''','''reporte_alumnos_aprobados''','''alta_tramites''', etc...<br><br />
#**'''<Anexo_institucion>''' = ''XXX'', que representa el nodo de la institución otorgado por el SIU como lo especificado previamente.<br><br />
#*:De esta forma, el nombre final del componente quedará del tipo: '''ci_reporte_inscripcion_uba-fcen.php''', '''formulario_datos_uba-fcen.php''', '''cuadro_reporte_inscripcion_uba-fcen.php'''....<br />
#*'''Subclase''': Nombre de la clase. El mismo que el nombre del archivo.<br />
#Una vez realizados los pasos anteriores, llega el momento de generar código para definir el comportamiento de la nueva operación. Dado que el código de Guaraní es abierto, por lo que se puede (y de hecho se recomienda) mirar el código de las operaciones ya desarrolladas por el SIU, se deja a criterio de la institución la implementación del mismo teniendo en cuenta las siguientes recomendaciones: <br />
#*La nueva clase generada, dependiendo del tipo de componente en cuestión, debe heredar de una de las clases vacías incluidas en <tt><path proyecto Guaraní>/personalizacion/php/extension_toba/componentes/</tt>. Estas clases definen el comportamiento estándar de los objetos. Observar que cada una de ellas heredan de las clases definidas por Guaraní para definir el comportamiento de objetos, que a la vez heredan de las clases estándares proporcionadas por el framework Toba.<br />
#*:Se pide esto por dos motivos:<br />
#**Para que el objeto obtenga un comportamiento por defecto, permitiendo redefinir el método deseado para generar un comportamiento particular. <br />
#**Permite que si a futuro se desea definir un nuevo comportamiento para todos los objetos de este tipo, el mismo sea definido en la clase "''guarani_pers_...''" especifica.<br />
#*Observar los métodos heredados de la misma y redefinir '''solamente''' los que se desee cambiar el comportamiento. Por ejemplo, los métodos que buscan y asignan datos a un cuadro, los que definen comportamiento de eventos, etc...<br />
#:Por ejemplo, una clase propia llamada "''ci_reporte_gastos_unca''" que redefine el comportamiento de un ''ci'' seria la siguiente:<br />
#:<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_reporte_gastos_U802 extends guarani_pers_ci<br />
{<br />
<br />
protected $s__datos;<br />
<br />
function get_datos()<br />
{<br />
return $this->s__datos;<br />
}<br />
<br />
}<br />
?><br />
</source><br />
Se recomienda leer también la sección siguiente para ver un ejemplo concreto y tener un mayor conocimiento de que código incluir en cada archivo, dónde generar los mismos, etc...<br />
<br />
=== Modificar un reporte existente ===<br />
<br />
Veamos ahora un ejemplo sencillo de modificación de un reporte existente. La idea es tomar un reporte simple y agregar una nueva columna, para demostrar prácticamente todos los cambios que involucra.<br />
<br />
El reporte elegido es el ''"Reporte de Certificados"'' ubicado en: ''Propuestas Formativas -> Reportes -> Certificados''. Supongamos que se quiere agregar la columna "''duracion_en_meses''" de la tabla "''sga_certificados''" que representa la validez en meses del certificado en cuestión. Veamos entonces, los pasos a seguir:<br />
<br />
==== Identificar en el editor Toba la operación a personalizar ====<br />
<br />
Abriendo el '''Editor Toba''' para el proyecto "''guarani''", ubicamos la operación existente a extender. En este caso, expandir la carpeta "Propuestas Fromativas" -> "Reportes" -> "Certificados". Al expandir el ítem de la operación vemos que la misma esta compuesta por un ''CI'' (Controlador de Interfaz) y 2 objetos: un filtro y un cuadro. <br />
Llega el momento entonces, de analizar los cambios que se quieren implementar, para saber cual de los objetos de la operación hay que redefinir.<br />
<br />
==== Aplicar cambios en objetos correspondientes ====<br />
<br />
La forma tradicional de realizar cambios en los objetos del sistema es: ubicar el objeto a editar, cambiar el "Punto de Montaje" a personalización, editar las propiedades adecuadas del objeto y crear la clase que contendrá el comportamiento deseado dentro de una estructura de directorios similar a la original en la carpeta <tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt> que extienda de la clase original que utilizaba el objeto (opcional, en caso de que no se utilice el comportamiento estándar de los objetos de este tipo).<br />
<br />
En este caso, tenemos que hacer 3 cambios:<br />
# Modificar el cuadro para agregarle la columna extra.<br />
# Modificar el controlador para utilizar una clase propia donde se modifique la consulta a utilizar para usar una nueva que incluya la columna a agregar.<br />
# Modificar la clase de consulta PHP para personalizarla y agregar una nueva que extienda de la existente con la consulta propia que devuelva además de los valores que traía el nuevo valor de la columna a agregar que luego sera invocada desde el controlador.<br />
<br />
Entonces, se debe:<br />
<br />
===== Modificar el cuadro para agregar la nueva columna =====<br />
Editar el objeto ''cuadro'' de esta operación presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. '''Esto debe realizarse siempre para todos los objetos que se personalicen, dado que permite la exportación de los cambios realizados a la carpeta propia "''personalizacion''".''' En este caso, esto ya estaba configurado dado que extendía de la clase genérica "''guarani_pers_ei_cuadro''" que contiene el comportamiento genérico para todos los cuadros del sistema.<br />
*'''Subclase archivo''': En este caso, no se va a personalizar el cuadro, dado que solo se agregara la columna en el objeto y luego se cambiara la consulta desde el CI, por lo que quedara apuntando a la clase previamente mencionada. Sin embargo, tener en cuenta que si se necesita modificar el comportamiento del mismo, se debera crear una nueva clase que extienda de la original en una estructura de directorios similar dentro de <tt><path proyecto Guaraní>/personalizacion</tt>.<br />
<br />
En la solapa "Columnas", agregar la nueva columna "''duracion_en_meses''" con los siguientes datos:<br />
*'''Columna:''' "duracion_en_meses"<br />
*'''Titulo:''' Validez <br />
<br />
Ninguna propiedad mas se necesita para este ejemplo, por lo que al final la edición de las propiedades del cuadro, presionar el botón "Guardar".<br />
<br />
===== Modificar el CI =====<br />
Editar el objeto CI, llamado normalmente igual que la operación, en este caso: ''Certificados'' presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Subclase archivo''': La idea es crear una clase dentro de la misma estructura de carpetas que la original pero en otro path (<tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt>), que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''operaciones/propuestas/certificados/ci_rep_certificados_XXX.php'' (donde ''XXX'' es el nodo de la institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
*'''Subclase''': El mismo nombre que el archivo: "''ci_rep_certificados_XXX''"<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_rep_certificados_XXX extends ci_rep_certificados<br />
{<br />
<br />
// Se redefine la funcion que obtiene los datos a traves de una consulta propia<br />
function get_datos($filtro)<br />
{<br />
return toba::consulta_php('co_certificados')->get_listado_validez($filtro);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
===== Modificar la clase de consulta =====<br />
Para consultar a la BD de negocios del sistema, SIU-Guarani cuenta con un conjunto de clases (aproximadamente una por modulo-submodulo) definidas en la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba'''. Las clases de consultas definidas allí, son accesibles a través del framework desde cualquier clase a partir del llamado:<br />
<source lang="php" enclose="div"><br />
toba::consulta_php('co_XXXXXXXX')<br />
</source><br />
<br />
En este caso, se debe redefinir la clase de consulta "''co_certificados''" de la siguiente forma:<br />
<br />
Ir a la la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba''' y seleccionar para editar la clase de Consulta "''co_certificados''" presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Clase''': "''co_certificados_XXX''"<br />
*'''Archivo''': La idea es crear una clase dentro del path (<tt><path proyecto Guaraní>/personalizacion/php/nucleo</tt>) que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''nucleo/propuestas/certificados/co_certificados_XXX.php'' (donde ''XXX'' es el nodo de institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class co_certificados_XXX extends co_certificados<br />
{<br />
<br />
// Se agrega el siguiente metodo como una nueva consulta a la BD para traer ademas de los datos basicos, el campo 'duracion_en_meses'<br />
function get_listado_validez($filtro)<br />
{<br />
if ($where) $where = 'AND '.$where;<br />
<br />
$sql = "SELECT sga_certificados.certificado, <br />
sga_certificados.nombre, <br />
sga_certificados.nombre_femenino, <br />
sga_certificados_tipos.certificado_tipo as certificado_tipo_codigo,<br />
sga_certificados_tipos.descripcion as certificado_tipo,<br />
sga_titulos_niveles.descripcion as titulo_nivel,<br />
sga_certificados.disciplina,<br />
sga_certificados.titulo_araucano,<br />
".guarani_sql::get_case('sga_certificados','estado').",<br />
sga_certificados.codigo,<br />
sga_g3entidades.entidad,<br />
sga_certificados.duracion_en_meses<br />
FROM sga_certificados<br />
LEFT JOIN sga_titulos_niveles ON sga_certificados.titulo_nivel = sga_titulos_niveles.titulo_nivel<br />
LEFT JOIN sga_g3entidades ON sga_certificados.entidad = sga_g3entidades.entidad,<br />
sga_certificados_tipos<br />
WHERE sga_certificados.certificado_tipo = sga_certificados_tipos.certificado_tipo<br />
$where<br />
ORDER BY codigo,<br />
certificado_tipo,<br />
titulo_nivel<br />
"; <br />
return guarani_db::consultar($sql);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
==== Testeo y exportación ====<br />
Una vez que se ha finalizado con la implementación de la personalización, y se ha testeado el correcto funcionamiento de la misma, se deben exportar los cambios en los ''metadatos'' modificados. Esto se logra con el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers exportar<br />
</source><br />
<br />
==== Regenerar el autoload ====<br />
Una vez que se realizó la exportación de los metadatos modificados, se deben incorporar las clases recientemente generadas en el archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php</tt> para que se puedan acceder desde otras clases si fuera necesario. Para esto, ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani pers_autoload<br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/personalizaciones/reporte&diff=17396SIU-Guarani/Version3.13.0/personalizaciones/reporte2016-09-28T20:40:47Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span><br />
== Personalizar un reporte ==<br />
<br />
=== Crear un nuevo reporte ===<br />
Si lo que se desea es generar un nuevo reporte en el sistema, se recomienda "''clonar''" uno existente, ya generado por el SIU que contenga la misma estructura que el que se desea desarrollar. Básicamente, que sea lo mas parecido posible al reporte deseado. Entonces:<br><br />
<br />
==== Generar el ítem ====<br />
Crear el nuevo ítem con el nombre del reporte en la carpeta deseada (correspondiente a la ubicación en el menú del sistema).<br><br />
<br />
'''RECOMENDACIONES:'''<br><br />
<br />
Para las propiedades del item creado, considerar lo siguiente:<br />
*'''Nombre:''' Anexar " - ''XXX''" (donde '''''XXX''''' es el '''nodo''' que le otorgó el SIU a la institución. Si quisieran diferenciar las personalizaciones entre las unidades académicas les podrían agregar -YYY donde YYY sería el código de unidad académica , EJ: uba-fcen). Si bien se fija como estándar que los objetos hijos del ítem generados para este reporte y los archivos asociados a los mismos, contengan el sufijo "_''XXX''" se recomienda anexar el sufijo explicitado para identificarlo fácilmente o tener alguna referencia mas ante algún pedido de soporte. Aunque desde ya, no es obligatorio realizar esto (Si para los estándares mencionados previamente).<br />
*'''Carpeta''': Ubicarlo en alguna carpeta relacionada a los conceptos involucrados directamente en el reporte. Recordar que esta ubicación, es la que luego se otorgara en el Menú del sistema.<br />
*'''Punto de Montaje''': '''OBLIGATORIO''' fijar como punto de montaje para el item "''personalizacion''"<br />
*'''Modelo Página''': Página SIU-Guarani. La página estandar del proyecto que contiene los recursos basicos del mismo. Ésto facilita la implementación de futuras personalizaciones (si se desea, claro está) a todas las operaciones del sistema.<br />
*'''Imagen''': ''Proyecto - Reporte.png'' . El icono estándar que identifica de los reportes en el sistema.<br />
<br />
==== Clonar los componentes ====<br />
Ubicar el ''CI'' (Controlador de negocio) de la operación de la cual se quiera clonar el reporte. Normalmente, tiene el mismo nombre que el Item padre, y es el que contiene todas las pantallas y objetos (cuadros, filtros, etc...) que componen la operación. Una vez seleccionado para edicion: [[File:G3_editar.png]], se debe proceder con el clonado del mismo (seleccionando [[File:G3_clonar.png]] en la esquina superior derecha) marcando:<br />
*'''Anexo nombre''': '''OBLIGATORIO''' "''XXX''_" (donde ''XXX'' corresponde al nodo de la Institución como fue indicado previamente). De esta forma los componentes se crearan con ese prefijo y podrán ser fácilmente identificables. De todas formas, luego habrá que renombrarlos para ponerlo como sufijo en lugar de prefijo como indica el estándar. <br />
*'''Clonar Dependencias''': SI. De esta forma, se clonan todos los subcomponentes del mismo evitando tener que clonar uno a uno mas tarde. En caso que no se desee utilizar en la operación alguno de los componentes hijos, se elimina posteriormente.<br />
*'''Clonar Subclases''': NO. Es preferible generar solo las clases que se utilizaran. Ademas, estas clases contienen metodos que seran heredados por las nuevas generadas por lo que no es necesario copiar los mismos en este paso.<br />
*'''Asignar a un componente''': '''OBLIGATORIO''' SI. Asignárselo al ítem generado en el paso anterior.<br />
<br />
==== Modificaciones post-clonado ====<br />
Luego de clonados los componentes de la operación, se deben editar uno a uno cambiando las propiedades de los mismos según lo deseado (Titulo, ancho de los componentes, pantallas etiquetas, etc...).<br><br />
Es imprescindible, teniendo en cuenta los pasos realizados anteriormente, acomodar los nombres de los componentes siguiendo los estándares: Especificar como '''sufijo''' "'''_XXX'''"y no como prefijo de los mismos, dado que Toba nomencla de esa forma los objetos al clonarlos.<br />
<br />
==== Agregando clases propias ====<br />
Al clonar los componentes de la operación, el comportamiento de los mismos queda definido por las mismas clases (''archivos PHP'') que las del componente origen clonado. Es normal, querer definir clases propias para modificar el comportamiento original o agregar nuevos comportamientos para el nuevo reporte generado. Ésto también es necesario, en caso que el reporte difiera del original al agregar o eliminar una columna del mismo o simplemente porque se desea mostrar otros datos diferentes al original.<br />
<br />
Para generar clases propias que definan el nuevo comportamiento de la operación realizar lo siguiente:<br />
<br />
# Generar la estructura de directorios en <tt><path proyecto Guaraní>/personalizacion/php/operaciones/...</tt>, concordante con el orden del menú del sistema o siguiendo módulo-submódulo. Se recomienda mantener el estándar de nombres fijado por el ''SIU'' y no generar cualquier estructura o nombre de directorio. Ésto es primordial para mantener el orden de las personalizaciones generadas y poder encontrar fácilmente los nuevos archivos creados. <br />
# En el '''Editor Toba''' seleccionar para el componente:<br />
#*'''Punto de Montaje''': ''personalizacion'', que indica que la carpeta base donde ubicar los archivos del componente será <tt><path proyecto Guaraní>/personalizacion</tt> y que constituye efectivamente un componente personalizado.<br />
#*'''Subclase - Archivo''': Dentro de la estructura de carpetas creada en el punto anterior, generar el archivo cuyo nombre tenga la forma: "'''<Tipo_Componente>_<Nombre_Representativo>_<Anexo_institucion>.php'''". <br><br />
#**'''<Tipo_Componente>''' representa el tipo del componente actual. Ej '''ci''','''form''','''cuadro''','''filtro''', etc...<br><br />
#**'''<Nombre_Representativo>''' especifica un nombre acorde a la operacion/comportamiento en cuestión. Ej '''reporte_actas''','''reporte_alumnos_aprobados''','''alta_tramites''', etc...<br><br />
#**'''<Anexo_institucion>''' = ''XXX'', que representa el nodo de la institución otorgado por el SIU como lo especificado previamente.<br><br />
#*:De esta forma, el nombre final del componente quedará del tipo: '''ci_reporte_inscripcion_uba-fcen.php''', '''formulario_datos_uba-fcen.php''', '''cuadro_reporte_inscripcion_uba-fcen.php'''....<br />
#*'''Subclase''': Nombre de la clase. El mismo que el nombre del archivo.<br />
#Una vez realizados los pasos anteriores, llega el momento de generar código para definir el comportamiento de la nueva operación. Dado que el código de Guaraní es abierto, por lo que se puede (y de hecho se recomienda) mirar el código de las operaciones ya desarrolladas por el SIU, se deja a criterio de la institución la implementación del mismo teniendo en cuenta las siguientes recomendaciones: <br />
#*La nueva clase generada, dependiendo del tipo de componente en cuestión, debe heredar de una de las clases vacías incluidas en <tt><path proyecto Guaraní>/personalizacion/php/extension_toba/componentes/</tt>. Estas clases definen el comportamiento estándar de los objetos. Observar que cada una de ellas heredan de las clases definidas por Guaraní para definir el comportamiento de objetos, que a la vez heredan de las clases estándares proporcionadas por el framework Toba.<br />
#*:Se pide esto por dos motivos:<br />
#**Para que el objeto obtenga un comportamiento por defecto, permitiendo redefinir el método deseado para generar un comportamiento particular. <br />
#**Permite que si a futuro se desea definir un nuevo comportamiento para todos los objetos de este tipo, el mismo sea definido en la clase "''guarani_pers_...''" especifica.<br />
#*Observar los métodos heredados de la misma y redefinir '''solamente''' los que se desee cambiar el comportamiento. Por ejemplo, los métodos que buscan y asignan datos a un cuadro, los que definen comportamiento de eventos, etc...<br />
#:Por ejemplo, una clase propia llamada "''ci_reporte_gastos_unca''" que redefine el comportamiento de un ''ci'' seria la siguiente:<br />
#:<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_reporte_gastos_U802 extends guarani_pers_ci<br />
{<br />
<br />
protected $s__datos;<br />
<br />
function get_datos()<br />
{<br />
return $this->s__datos;<br />
}<br />
<br />
}<br />
?><br />
</source><br />
Se recomienda leer también la sección siguiente para ver un ejemplo concreto y tener un mayor conocimiento de que código incluir en cada archivo, dónde generar los mismos, etc...<br />
<br />
=== Modificar un reporte existente ===<br />
<br />
Veamos ahora un ejemplo sencillo de modificación de un reporte existente. La idea es tomar un reporte simple y agregar una nueva columna, para demostrar prácticamente todos los cambios que involucra.<br />
<br />
El reporte elegido es el ''"Reporte de Certificados"'' ubicado en: ''Propuestas Formativas -> Reportes -> Certificados''. Supongamos que se quiere agregar la columna "''duracion_en_meses''" de la tabla "''sga_certificados''" que representa la validez en meses del certificado en cuestión. Veamos entonces, los pasos a seguir:<br />
<br />
==== Identificar en el editor Toba la operación a personalizar ====<br />
<br />
Abriendo el '''Editor Toba''' para el proyecto "''guarani''", ubicamos la operación existente a extender. En este caso, expandir la carpeta "Propuestas Fromativas" -> "Reportes" -> "Certificados". Al expandir el ítem de la operación vemos que la misma esta compuesta por un ''CI'' (Controlador de Interfaz) y 2 objetos: un filtro y un cuadro. <br />
Llega el momento entonces, de analizar los cambios que se quieren implementar, para saber cual de los objetos de la operación hay que redefinir.<br />
<br />
==== Aplicar cambios en objetos correspondientes ====<br />
<br />
La forma tradicional de realizar cambios en los objetos del sistema es: ubicar el objeto a editar, cambiar el "Punto de Montaje" a personalización, editar las propiedades adecuadas del objeto y crear la clase que contendrá el comportamiento deseado dentro de una estructura de directorios similar a la original en la carpeta <tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt> que extienda de la clase original que utilizaba el objeto (opcional, en caso de que no se utilice el comportamiento estándar de los objetos de este tipo).<br />
<br />
En este caso, tenemos que hacer 3 cambios:<br />
# Modificar el cuadro para agregarle la columna extra.<br />
# Modificar el controlador para utilizar una clase propia donde se modifique la consulta a utilizar para usar una nueva que incluya la columna a agregar.<br />
# Modificar la clase de consulta PHP para personalizarla y agregar una nueva que extienda de la existente con la consulta propia que devuelva además de los valores que traía el nuevo valor de la columna a agregar que luego sera invocada desde el controlador.<br />
<br />
Entonces, se debe:<br />
<br />
===== Modificar el cuadro para agregar la nueva columna =====<br />
Editar el objeto ''cuadro'' de esta operación presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. '''Esto debe realizarse siempre para todos los objetos que se personalicen, dado que permite la exportación de los cambios realizados a la carpeta propia "''personalizacion''".''' En este caso, esto ya estaba configurado dado que extendía de la clase genérica "''guarani_pers_ei_cuadro''" que contiene el comportamiento genérico para todos los cuadros del sistema.<br />
*'''Subclase archivo''': En este caso, no se va a personalizar el cuadro, dado que solo se agregara la columna en el objeto y luego se cambiara la consulta desde el CI, por lo que quedara apuntando a la clase previamente mencionada. Sin embargo, tener en cuenta que si se necesita modificar el comportamiento del mismo, se debera crear una nueva clase que extienda de la original en una estructura de directorios similar dentro de <tt><path proyecto Guaraní>/personalizacion</tt>.<br />
<br />
En la solapa "Columnas", agregar la nueva columna "''duracion_en_meses''" con los siguientes datos:<br />
*'''Columna:''' "duracion_en_meses"<br />
*'''Titulo:''' Validez <br />
<br />
Ninguna propiedad mas se necesita para este ejemplo, por lo que al final la edición de las propiedades del cuadro, presionar el botón "Guardar".<br />
<br />
===== Modificar el CI =====<br />
Editar el objeto CI, llamado normalmente igual que la operación, en este caso: ''Certificados'' presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Subclase archivo''': La idea es crear una clase dentro de la misma estructura de carpetas que la original pero en otro path (<tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt>), que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''operaciones/propuestas/certificados/ci_rep_certificados_XXX.php'' (donde ''XXX'' es el nodo de la institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
*'''Subclase''': El mismo nombre que el archivo: "''ci_rep_certificados_XXX''"<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_rep_certificados_XXX extends ci_rep_certificados<br />
{<br />
<br />
// Se redefine la funcion que obtiene los datos a traves de una consulta propia<br />
function get_datos($filtro)<br />
{<br />
return toba::consulta_php('co_certificados')->get_listado_validez($filtro);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
===== Modificar la clase de consulta =====<br />
Para consultar a la BD de negocios del sistema, SIU-Guarani cuenta con un conjunto de clases (aproximadamente una por modulo-submodulo) definidas en la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba'''. Las clases de consultas definidas allí, son accesibles a través del framework desde cualquier clase a partir del llamado:<br />
<source lang="php" enclose="div"><br />
toba::consulta_php('co_XXXXXXXX')<br />
</source><br />
<br />
En este caso, se debe redefinir la clase de consulta "''co_certificados''" de la siguiente forma:<br />
<br />
Ir a la la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba''' y seleccionar para editar la clase de Consulta "''co_certificados''" presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Clase''': "''co_certificados_XXX''"<br />
*'''Archivo''': La idea es crear una clase dentro del path (<tt><path proyecto Guaraní>/personalizacion/php/nucleo</tt>) que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''nucleo/propuestas/certificados/co_certificados_XXX.php'' (donde ''XXX'' es el nodo de institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class co_certificados_XXX extends co_certificados<br />
{<br />
<br />
// Se agrega el siguiente metodo como una nueva consulta a la BD para traer ademas de los datos basicos, el campo 'duracion_en_meses'<br />
function get_listado_validez($filtro)<br />
{<br />
if ($where) $where = 'AND '.$where;<br />
<br />
$sql = "SELECT sga_certificados.certificado, <br />
sga_certificados.nombre, <br />
sga_certificados.nombre_femenino, <br />
sga_certificados_tipos.certificado_tipo as certificado_tipo_codigo,<br />
sga_certificados_tipos.descripcion as certificado_tipo,<br />
sga_titulos_niveles.descripcion as titulo_nivel,<br />
sga_certificados.disciplina,<br />
sga_certificados.titulo_araucano,<br />
".guarani_sql::get_case('sga_certificados','estado').",<br />
sga_certificados.codigo,<br />
sga_g3entidades.entidad,<br />
sga_certificados.duracion_en_meses<br />
FROM sga_certificados<br />
LEFT JOIN sga_titulos_niveles ON sga_certificados.titulo_nivel = sga_titulos_niveles.titulo_nivel<br />
LEFT JOIN sga_g3entidades ON sga_certificados.entidad = sga_g3entidades.entidad,<br />
sga_certificados_tipos<br />
WHERE sga_certificados.certificado_tipo = sga_certificados_tipos.certificado_tipo<br />
$where<br />
ORDER BY codigo,<br />
certificado_tipo,<br />
titulo_nivel<br />
"; <br />
return guarani_db::consultar($sql);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
==== Testeo y exportación ====<br />
Una vez que se ha finalizado con la implementación de la personalización, y se ha testeado el correcto funcionamiento de la misma, se deben exportar los cambios en los ''metadatos'' modificados. Esto se logra con el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers exportar<br />
</source><br />
<br />
==== Regenerar el autoload ====<br />
Una vez que se realizó la exportación de los metadatos modificados, se deben incorporar las clases recientemente generadas en el archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php</tt> para que se puedan acceder desde otras clases si fuera necesario. Para esto, ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani pers_autoload<br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.14.0/personalizaciones/reporte&diff=29882SIU-Guarani/Version3.14.0/personalizaciones/reporte2016-09-28T20:40:47Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span><br />
== Personalizar un reporte ==<br />
<br />
=== Crear un nuevo reporte ===<br />
Si lo que se desea es generar un nuevo reporte en el sistema, se recomienda "''clonar''" uno existente, ya generado por el SIU que contenga la misma estructura que el que se desea desarrollar. Básicamente, que sea lo mas parecido posible al reporte deseado. Entonces:<br><br />
<br />
==== Generar el ítem ====<br />
Crear el nuevo ítem con el nombre del reporte en la carpeta deseada (correspondiente a la ubicación en el menú del sistema).<br><br />
<br />
'''RECOMENDACIONES:'''<br><br />
<br />
Para las propiedades del item creado, considerar lo siguiente:<br />
*'''Nombre:''' Anexar " - ''XXX''" (donde '''''XXX''''' es el '''nodo''' que le otorgó el SIU a la institución. Si quisieran diferenciar las personalizaciones entre las unidades académicas les podrían agregar -YYY donde YYY sería el código de unidad académica , EJ: uba-fcen). Si bien se fija como estándar que los objetos hijos del ítem generados para este reporte y los archivos asociados a los mismos, contengan el sufijo "_''XXX''" se recomienda anexar el sufijo explicitado para identificarlo fácilmente o tener alguna referencia mas ante algún pedido de soporte. Aunque desde ya, no es obligatorio realizar esto (Si para los estándares mencionados previamente).<br />
*'''Carpeta''': Ubicarlo en alguna carpeta relacionada a los conceptos involucrados directamente en el reporte. Recordar que esta ubicación, es la que luego se otorgara en el Menú del sistema.<br />
*'''Punto de Montaje''': '''OBLIGATORIO''' fijar como punto de montaje para el item "''personalizacion''"<br />
*'''Modelo Página''': Página SIU-Guarani. La página estandar del proyecto que contiene los recursos basicos del mismo. Ésto facilita la implementación de futuras personalizaciones (si se desea, claro está) a todas las operaciones del sistema.<br />
*'''Imagen''': ''Proyecto - Reporte.png'' . El icono estándar que identifica de los reportes en el sistema.<br />
<br />
==== Clonar los componentes ====<br />
Ubicar el ''CI'' (Controlador de negocio) de la operación de la cual se quiera clonar el reporte. Normalmente, tiene el mismo nombre que el Item padre, y es el que contiene todas las pantallas y objetos (cuadros, filtros, etc...) que componen la operación. Una vez seleccionado para edicion: [[File:G3_editar.png]], se debe proceder con el clonado del mismo (seleccionando [[File:G3_clonar.png]] en la esquina superior derecha) marcando:<br />
*'''Anexo nombre''': '''OBLIGATORIO''' "''XXX''_" (donde ''XXX'' corresponde al nodo de la Institución como fue indicado previamente). De esta forma los componentes se crearan con ese prefijo y podrán ser fácilmente identificables. De todas formas, luego habrá que renombrarlos para ponerlo como sufijo en lugar de prefijo como indica el estándar. <br />
*'''Clonar Dependencias''': SI. De esta forma, se clonan todos los subcomponentes del mismo evitando tener que clonar uno a uno mas tarde. En caso que no se desee utilizar en la operación alguno de los componentes hijos, se elimina posteriormente.<br />
*'''Clonar Subclases''': NO. Es preferible generar solo las clases que se utilizaran. Ademas, estas clases contienen metodos que seran heredados por las nuevas generadas por lo que no es necesario copiar los mismos en este paso.<br />
*'''Asignar a un componente''': '''OBLIGATORIO''' SI. Asignárselo al ítem generado en el paso anterior.<br />
<br />
==== Modificaciones post-clonado ====<br />
Luego de clonados los componentes de la operación, se deben editar uno a uno cambiando las propiedades de los mismos según lo deseado (Titulo, ancho de los componentes, pantallas etiquetas, etc...).<br><br />
Es imprescindible, teniendo en cuenta los pasos realizados anteriormente, acomodar los nombres de los componentes siguiendo los estándares: Especificar como '''sufijo''' "'''_XXX'''"y no como prefijo de los mismos, dado que Toba nomencla de esa forma los objetos al clonarlos.<br />
<br />
==== Agregando clases propias ====<br />
Al clonar los componentes de la operación, el comportamiento de los mismos queda definido por las mismas clases (''archivos PHP'') que las del componente origen clonado. Es normal, querer definir clases propias para modificar el comportamiento original o agregar nuevos comportamientos para el nuevo reporte generado. Ésto también es necesario, en caso que el reporte difiera del original al agregar o eliminar una columna del mismo o simplemente porque se desea mostrar otros datos diferentes al original.<br />
<br />
Para generar clases propias que definan el nuevo comportamiento de la operación realizar lo siguiente:<br />
<br />
# Generar la estructura de directorios en <tt><path proyecto Guaraní>/personalizacion/php/operaciones/...</tt>, concordante con el orden del menú del sistema o siguiendo módulo-submódulo. Se recomienda mantener el estándar de nombres fijado por el ''SIU'' y no generar cualquier estructura o nombre de directorio. Ésto es primordial para mantener el orden de las personalizaciones generadas y poder encontrar fácilmente los nuevos archivos creados. <br />
# En el '''Editor Toba''' seleccionar para el componente:<br />
#*'''Punto de Montaje''': ''personalizacion'', que indica que la carpeta base donde ubicar los archivos del componente será <tt><path proyecto Guaraní>/personalizacion</tt> y que constituye efectivamente un componente personalizado.<br />
#*'''Subclase - Archivo''': Dentro de la estructura de carpetas creada en el punto anterior, generar el archivo cuyo nombre tenga la forma: "'''<Tipo_Componente>_<Nombre_Representativo>_<Anexo_institucion>.php'''". <br><br />
#**'''<Tipo_Componente>''' representa el tipo del componente actual. Ej '''ci''','''form''','''cuadro''','''filtro''', etc...<br><br />
#**'''<Nombre_Representativo>''' especifica un nombre acorde a la operacion/comportamiento en cuestión. Ej '''reporte_actas''','''reporte_alumnos_aprobados''','''alta_tramites''', etc...<br><br />
#**'''<Anexo_institucion>''' = ''XXX'', que representa el nodo de la institución otorgado por el SIU como lo especificado previamente.<br><br />
#*:De esta forma, el nombre final del componente quedará del tipo: '''ci_reporte_inscripcion_uba-fcen.php''', '''formulario_datos_uba-fcen.php''', '''cuadro_reporte_inscripcion_uba-fcen.php'''....<br />
#*'''Subclase''': Nombre de la clase. El mismo que el nombre del archivo.<br />
#Una vez realizados los pasos anteriores, llega el momento de generar código para definir el comportamiento de la nueva operación. Dado que el código de Guaraní es abierto, por lo que se puede (y de hecho se recomienda) mirar el código de las operaciones ya desarrolladas por el SIU, se deja a criterio de la institución la implementación del mismo teniendo en cuenta las siguientes recomendaciones: <br />
#*La nueva clase generada, dependiendo del tipo de componente en cuestión, debe heredar de una de las clases vacías incluidas en <tt><path proyecto Guaraní>/personalizacion/php/extension_toba/componentes/</tt>. Estas clases definen el comportamiento estándar de los objetos. Observar que cada una de ellas heredan de las clases definidas por Guaraní para definir el comportamiento de objetos, que a la vez heredan de las clases estándares proporcionadas por el framework Toba.<br />
#*:Se pide esto por dos motivos:<br />
#**Para que el objeto obtenga un comportamiento por defecto, permitiendo redefinir el método deseado para generar un comportamiento particular. <br />
#**Permite que si a futuro se desea definir un nuevo comportamiento para todos los objetos de este tipo, el mismo sea definido en la clase "''guarani_pers_...''" especifica.<br />
#*Observar los métodos heredados de la misma y redefinir '''solamente''' los que se desee cambiar el comportamiento. Por ejemplo, los métodos que buscan y asignan datos a un cuadro, los que definen comportamiento de eventos, etc...<br />
#:Por ejemplo, una clase propia llamada "''ci_reporte_gastos_unca''" que redefine el comportamiento de un ''ci'' seria la siguiente:<br />
#:<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_reporte_gastos_U802 extends guarani_pers_ci<br />
{<br />
<br />
protected $s__datos;<br />
<br />
function get_datos()<br />
{<br />
return $this->s__datos;<br />
}<br />
<br />
}<br />
?><br />
</source><br />
Se recomienda leer también la sección siguiente para ver un ejemplo concreto y tener un mayor conocimiento de que código incluir en cada archivo, dónde generar los mismos, etc...<br />
<br />
=== Modificar un reporte existente ===<br />
<br />
Veamos ahora un ejemplo sencillo de modificación de un reporte existente. La idea es tomar un reporte simple y agregar una nueva columna, para demostrar prácticamente todos los cambios que involucra.<br />
<br />
El reporte elegido es el ''"Reporte de Certificados"'' ubicado en: ''Propuestas Formativas -> Reportes -> Certificados''. Supongamos que se quiere agregar la columna "''duracion_en_meses''" de la tabla "''sga_certificados''" que representa la validez en meses del certificado en cuestión. Veamos entonces, los pasos a seguir:<br />
<br />
==== Identificar en el editor Toba la operación a personalizar ====<br />
<br />
Abriendo el '''Editor Toba''' para el proyecto "''guarani''", ubicamos la operación existente a extender. En este caso, expandir la carpeta "Propuestas Fromativas" -> "Reportes" -> "Certificados". Al expandir el ítem de la operación vemos que la misma esta compuesta por un ''CI'' (Controlador de Interfaz) y 2 objetos: un filtro y un cuadro. <br />
Llega el momento entonces, de analizar los cambios que se quieren implementar, para saber cual de los objetos de la operación hay que redefinir.<br />
<br />
==== Aplicar cambios en objetos correspondientes ====<br />
<br />
La forma tradicional de realizar cambios en los objetos del sistema es: ubicar el objeto a editar, cambiar el "Punto de Montaje" a personalización, editar las propiedades adecuadas del objeto y crear la clase que contendrá el comportamiento deseado dentro de una estructura de directorios similar a la original en la carpeta <tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt> que extienda de la clase original que utilizaba el objeto (opcional, en caso de que no se utilice el comportamiento estándar de los objetos de este tipo).<br />
<br />
En este caso, tenemos que hacer 3 cambios:<br />
# Modificar el cuadro para agregarle la columna extra.<br />
# Modificar el controlador para utilizar una clase propia donde se modifique la consulta a utilizar para usar una nueva que incluya la columna a agregar.<br />
# Modificar la clase de consulta PHP para personalizarla y agregar una nueva que extienda de la existente con la consulta propia que devuelva además de los valores que traía el nuevo valor de la columna a agregar que luego sera invocada desde el controlador.<br />
<br />
Entonces, se debe:<br />
<br />
===== Modificar el cuadro para agregar la nueva columna =====<br />
Editar el objeto ''cuadro'' de esta operación presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. '''Esto debe realizarse siempre para todos los objetos que se personalicen, dado que permite la exportación de los cambios realizados a la carpeta propia "''personalizacion''".''' En este caso, esto ya estaba configurado dado que extendía de la clase genérica "''guarani_pers_ei_cuadro''" que contiene el comportamiento genérico para todos los cuadros del sistema.<br />
*'''Subclase archivo''': En este caso, no se va a personalizar el cuadro, dado que solo se agregara la columna en el objeto y luego se cambiara la consulta desde el CI, por lo que quedara apuntando a la clase previamente mencionada. Sin embargo, tener en cuenta que si se necesita modificar el comportamiento del mismo, se debera crear una nueva clase que extienda de la original en una estructura de directorios similar dentro de <tt><path proyecto Guaraní>/personalizacion</tt>.<br />
<br />
En la solapa "Columnas", agregar la nueva columna "''duracion_en_meses''" con los siguientes datos:<br />
*'''Columna:''' "duracion_en_meses"<br />
*'''Titulo:''' Validez <br />
<br />
Ninguna propiedad mas se necesita para este ejemplo, por lo que al final la edición de las propiedades del cuadro, presionar el botón "Guardar".<br />
<br />
===== Modificar el CI =====<br />
Editar el objeto CI, llamado normalmente igual que la operación, en este caso: ''Certificados'' presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Subclase archivo''': La idea es crear una clase dentro de la misma estructura de carpetas que la original pero en otro path (<tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt>), que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''operaciones/propuestas/certificados/ci_rep_certificados_XXX.php'' (donde ''XXX'' es el nodo de la institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
*'''Subclase''': El mismo nombre que el archivo: "''ci_rep_certificados_XXX''"<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_rep_certificados_XXX extends ci_rep_certificados<br />
{<br />
<br />
// Se redefine la funcion que obtiene los datos a traves de una consulta propia<br />
function get_datos($filtro)<br />
{<br />
return toba::consulta_php('co_certificados')->get_listado_validez($filtro);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
===== Modificar la clase de consulta =====<br />
Para consultar a la BD de negocios del sistema, SIU-Guarani cuenta con un conjunto de clases (aproximadamente una por modulo-submodulo) definidas en la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba'''. Las clases de consultas definidas allí, son accesibles a través del framework desde cualquier clase a partir del llamado:<br />
<source lang="php" enclose="div"><br />
toba::consulta_php('co_XXXXXXXX')<br />
</source><br />
<br />
En este caso, se debe redefinir la clase de consulta "''co_certificados''" de la siguiente forma:<br />
<br />
Ir a la la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba''' y seleccionar para editar la clase de Consulta "''co_certificados''" presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Clase''': "''co_certificados_XXX''"<br />
*'''Archivo''': La idea es crear una clase dentro del path (<tt><path proyecto Guaraní>/personalizacion/php/nucleo</tt>) que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''nucleo/propuestas/certificados/co_certificados_XXX.php'' (donde ''XXX'' es el nodo de institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class co_certificados_XXX extends co_certificados<br />
{<br />
<br />
// Se agrega el siguiente metodo como una nueva consulta a la BD para traer ademas de los datos basicos, el campo 'duracion_en_meses'<br />
function get_listado_validez($filtro)<br />
{<br />
if ($where) $where = 'AND '.$where;<br />
<br />
$sql = "SELECT sga_certificados.certificado, <br />
sga_certificados.nombre, <br />
sga_certificados.nombre_femenino, <br />
sga_certificados_tipos.certificado_tipo as certificado_tipo_codigo,<br />
sga_certificados_tipos.descripcion as certificado_tipo,<br />
sga_titulos_niveles.descripcion as titulo_nivel,<br />
sga_certificados.disciplina,<br />
sga_certificados.titulo_araucano,<br />
".guarani_sql::get_case('sga_certificados','estado').",<br />
sga_certificados.codigo,<br />
sga_g3entidades.entidad,<br />
sga_certificados.duracion_en_meses<br />
FROM sga_certificados<br />
LEFT JOIN sga_titulos_niveles ON sga_certificados.titulo_nivel = sga_titulos_niveles.titulo_nivel<br />
LEFT JOIN sga_g3entidades ON sga_certificados.entidad = sga_g3entidades.entidad,<br />
sga_certificados_tipos<br />
WHERE sga_certificados.certificado_tipo = sga_certificados_tipos.certificado_tipo<br />
$where<br />
ORDER BY codigo,<br />
certificado_tipo,<br />
titulo_nivel<br />
"; <br />
return guarani_db::consultar($sql);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
==== Testeo y exportación ====<br />
Una vez que se ha finalizado con la implementación de la personalización, y se ha testeado el correcto funcionamiento de la misma, se deben exportar los cambios en los ''metadatos'' modificados. Esto se logra con el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers exportar<br />
</source><br />
<br />
==== Regenerar el autoload ====<br />
Una vez que se realizó la exportación de los metadatos modificados, se deben incorporar las clases recientemente generadas en el archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php</tt> para que se puedan acceder desde otras clases si fuera necesario. Para esto, ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani pers_autoload<br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.15.0/personalizaciones/reporte&diff=38732SIU-Guarani/Version3.15.0/personalizaciones/reporte2016-09-28T20:40:47Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span><br />
== Personalizar un reporte ==<br />
<br />
=== Crear un nuevo reporte ===<br />
Si lo que se desea es generar un nuevo reporte en el sistema, se recomienda "''clonar''" uno existente, ya generado por el SIU que contenga la misma estructura que el que se desea desarrollar. Básicamente, que sea lo mas parecido posible al reporte deseado. Entonces:<br><br />
<br />
==== Generar el ítem ====<br />
Crear el nuevo ítem con el nombre del reporte en la carpeta deseada (correspondiente a la ubicación en el menú del sistema).<br><br />
<br />
'''RECOMENDACIONES:'''<br><br />
<br />
Para las propiedades del item creado, considerar lo siguiente:<br />
*'''Nombre:''' Anexar " - ''XXX''" (donde '''''XXX''''' es el '''nodo''' que le otorgó el SIU a la institución. Si quisieran diferenciar las personalizaciones entre las unidades académicas les podrían agregar -YYY donde YYY sería el código de unidad académica , EJ: uba-fcen). Si bien se fija como estándar que los objetos hijos del ítem generados para este reporte y los archivos asociados a los mismos, contengan el sufijo "_''XXX''" se recomienda anexar el sufijo explicitado para identificarlo fácilmente o tener alguna referencia mas ante algún pedido de soporte. Aunque desde ya, no es obligatorio realizar esto (Si para los estándares mencionados previamente).<br />
*'''Carpeta''': Ubicarlo en alguna carpeta relacionada a los conceptos involucrados directamente en el reporte. Recordar que esta ubicación, es la que luego se otorgara en el Menú del sistema.<br />
*'''Punto de Montaje''': '''OBLIGATORIO''' fijar como punto de montaje para el item "''personalizacion''"<br />
*'''Modelo Página''': Página SIU-Guarani. La página estandar del proyecto que contiene los recursos basicos del mismo. Ésto facilita la implementación de futuras personalizaciones (si se desea, claro está) a todas las operaciones del sistema.<br />
*'''Imagen''': ''Proyecto - Reporte.png'' . El icono estándar que identifica de los reportes en el sistema.<br />
<br />
==== Clonar los componentes ====<br />
Ubicar el ''CI'' (Controlador de negocio) de la operación de la cual se quiera clonar el reporte. Normalmente, tiene el mismo nombre que el Item padre, y es el que contiene todas las pantallas y objetos (cuadros, filtros, etc...) que componen la operación. Una vez seleccionado para edicion: [[File:G3_editar.png]], se debe proceder con el clonado del mismo (seleccionando [[File:G3_clonar.png]] en la esquina superior derecha) marcando:<br />
*'''Anexo nombre''': '''OBLIGATORIO''' "''XXX''_" (donde ''XXX'' corresponde al nodo de la Institución como fue indicado previamente). De esta forma los componentes se crearan con ese prefijo y podrán ser fácilmente identificables. De todas formas, luego habrá que renombrarlos para ponerlo como sufijo en lugar de prefijo como indica el estándar. <br />
*'''Clonar Dependencias''': SI. De esta forma, se clonan todos los subcomponentes del mismo evitando tener que clonar uno a uno mas tarde. En caso que no se desee utilizar en la operación alguno de los componentes hijos, se elimina posteriormente.<br />
*'''Clonar Subclases''': NO. Es preferible generar solo las clases que se utilizaran. Ademas, estas clases contienen metodos que seran heredados por las nuevas generadas por lo que no es necesario copiar los mismos en este paso.<br />
*'''Asignar a un componente''': '''OBLIGATORIO''' SI. Asignárselo al ítem generado en el paso anterior.<br />
<br />
==== Modificaciones post-clonado ====<br />
Luego de clonados los componentes de la operación, se deben editar uno a uno cambiando las propiedades de los mismos según lo deseado (Titulo, ancho de los componentes, pantallas etiquetas, etc...).<br><br />
Es imprescindible, teniendo en cuenta los pasos realizados anteriormente, acomodar los nombres de los componentes siguiendo los estándares: Especificar como '''sufijo''' "'''_XXX'''"y no como prefijo de los mismos, dado que Toba nomencla de esa forma los objetos al clonarlos.<br />
<br />
==== Agregando clases propias ====<br />
Al clonar los componentes de la operación, el comportamiento de los mismos queda definido por las mismas clases (''archivos PHP'') que las del componente origen clonado. Es normal, querer definir clases propias para modificar el comportamiento original o agregar nuevos comportamientos para el nuevo reporte generado. Ésto también es necesario, en caso que el reporte difiera del original al agregar o eliminar una columna del mismo o simplemente porque se desea mostrar otros datos diferentes al original.<br />
<br />
Para generar clases propias que definan el nuevo comportamiento de la operación realizar lo siguiente:<br />
<br />
# Generar la estructura de directorios en <tt><path proyecto Guaraní>/personalizacion/php/operaciones/...</tt>, concordante con el orden del menú del sistema o siguiendo módulo-submódulo. Se recomienda mantener el estándar de nombres fijado por el ''SIU'' y no generar cualquier estructura o nombre de directorio. Ésto es primordial para mantener el orden de las personalizaciones generadas y poder encontrar fácilmente los nuevos archivos creados. <br />
# En el '''Editor Toba''' seleccionar para el componente:<br />
#*'''Punto de Montaje''': ''personalizacion'', que indica que la carpeta base donde ubicar los archivos del componente será <tt><path proyecto Guaraní>/personalizacion</tt> y que constituye efectivamente un componente personalizado.<br />
#*'''Subclase - Archivo''': Dentro de la estructura de carpetas creada en el punto anterior, generar el archivo cuyo nombre tenga la forma: "'''<Tipo_Componente>_<Nombre_Representativo>_<Anexo_institucion>.php'''". <br><br />
#**'''<Tipo_Componente>''' representa el tipo del componente actual. Ej '''ci''','''form''','''cuadro''','''filtro''', etc...<br><br />
#**'''<Nombre_Representativo>''' especifica un nombre acorde a la operacion/comportamiento en cuestión. Ej '''reporte_actas''','''reporte_alumnos_aprobados''','''alta_tramites''', etc...<br><br />
#**'''<Anexo_institucion>''' = ''XXX'', que representa el nodo de la institución otorgado por el SIU como lo especificado previamente.<br><br />
#*:De esta forma, el nombre final del componente quedará del tipo: '''ci_reporte_inscripcion_uba-fcen.php''', '''formulario_datos_uba-fcen.php''', '''cuadro_reporte_inscripcion_uba-fcen.php'''....<br />
#*'''Subclase''': Nombre de la clase. El mismo que el nombre del archivo.<br />
#Una vez realizados los pasos anteriores, llega el momento de generar código para definir el comportamiento de la nueva operación. Dado que el código de Guaraní es abierto, por lo que se puede (y de hecho se recomienda) mirar el código de las operaciones ya desarrolladas por el SIU, se deja a criterio de la institución la implementación del mismo teniendo en cuenta las siguientes recomendaciones: <br />
#*La nueva clase generada, dependiendo del tipo de componente en cuestión, debe heredar de una de las clases vacías incluidas en <tt><path proyecto Guaraní>/personalizacion/php/extension_toba/componentes/</tt>. Estas clases definen el comportamiento estándar de los objetos. Observar que cada una de ellas heredan de las clases definidas por Guaraní para definir el comportamiento de objetos, que a la vez heredan de las clases estándares proporcionadas por el framework Toba.<br />
#*:Se pide esto por dos motivos:<br />
#**Para que el objeto obtenga un comportamiento por defecto, permitiendo redefinir el método deseado para generar un comportamiento particular. <br />
#**Permite que si a futuro se desea definir un nuevo comportamiento para todos los objetos de este tipo, el mismo sea definido en la clase "''guarani_pers_...''" especifica.<br />
#*Observar los métodos heredados de la misma y redefinir '''solamente''' los que se desee cambiar el comportamiento. Por ejemplo, los métodos que buscan y asignan datos a un cuadro, los que definen comportamiento de eventos, etc...<br />
#:Por ejemplo, una clase propia llamada "''ci_reporte_gastos_unca''" que redefine el comportamiento de un ''ci'' seria la siguiente:<br />
#:<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_reporte_gastos_U802 extends guarani_pers_ci<br />
{<br />
<br />
protected $s__datos;<br />
<br />
function get_datos()<br />
{<br />
return $this->s__datos;<br />
}<br />
<br />
}<br />
?><br />
</source><br />
Se recomienda leer también la sección siguiente para ver un ejemplo concreto y tener un mayor conocimiento de que código incluir en cada archivo, dónde generar los mismos, etc...<br />
<br />
=== Modificar un reporte existente ===<br />
<br />
Veamos ahora un ejemplo sencillo de modificación de un reporte existente. La idea es tomar un reporte simple y agregar una nueva columna, para demostrar prácticamente todos los cambios que involucra.<br />
<br />
El reporte elegido es el ''"Reporte de Certificados"'' ubicado en: ''Propuestas Formativas -> Reportes -> Certificados''. Supongamos que se quiere agregar la columna "''duracion_en_meses''" de la tabla "''sga_certificados''" que representa la validez en meses del certificado en cuestión. Veamos entonces, los pasos a seguir:<br />
<br />
==== Identificar en el editor Toba la operación a personalizar ====<br />
<br />
Abriendo el '''Editor Toba''' para el proyecto "''guarani''", ubicamos la operación existente a extender. En este caso, expandir la carpeta "Propuestas Fromativas" -> "Reportes" -> "Certificados". Al expandir el ítem de la operación vemos que la misma esta compuesta por un ''CI'' (Controlador de Interfaz) y 2 objetos: un filtro y un cuadro. <br />
Llega el momento entonces, de analizar los cambios que se quieren implementar, para saber cual de los objetos de la operación hay que redefinir.<br />
<br />
==== Aplicar cambios en objetos correspondientes ====<br />
<br />
La forma tradicional de realizar cambios en los objetos del sistema es: ubicar el objeto a editar, cambiar el "Punto de Montaje" a personalización, editar las propiedades adecuadas del objeto y crear la clase que contendrá el comportamiento deseado dentro de una estructura de directorios similar a la original en la carpeta <tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt> que extienda de la clase original que utilizaba el objeto (opcional, en caso de que no se utilice el comportamiento estándar de los objetos de este tipo).<br />
<br />
En este caso, tenemos que hacer 3 cambios:<br />
# Modificar el cuadro para agregarle la columna extra.<br />
# Modificar el controlador para utilizar una clase propia donde se modifique la consulta a utilizar para usar una nueva que incluya la columna a agregar.<br />
# Modificar la clase de consulta PHP para personalizarla y agregar una nueva que extienda de la existente con la consulta propia que devuelva además de los valores que traía el nuevo valor de la columna a agregar que luego sera invocada desde el controlador.<br />
<br />
Entonces, se debe:<br />
<br />
===== Modificar el cuadro para agregar la nueva columna =====<br />
Editar el objeto ''cuadro'' de esta operación presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. '''Esto debe realizarse siempre para todos los objetos que se personalicen, dado que permite la exportación de los cambios realizados a la carpeta propia "''personalizacion''".''' En este caso, esto ya estaba configurado dado que extendía de la clase genérica "''guarani_pers_ei_cuadro''" que contiene el comportamiento genérico para todos los cuadros del sistema.<br />
*'''Subclase archivo''': En este caso, no se va a personalizar el cuadro, dado que solo se agregara la columna en el objeto y luego se cambiara la consulta desde el CI, por lo que quedara apuntando a la clase previamente mencionada. Sin embargo, tener en cuenta que si se necesita modificar el comportamiento del mismo, se debera crear una nueva clase que extienda de la original en una estructura de directorios similar dentro de <tt><path proyecto Guaraní>/personalizacion</tt>.<br />
<br />
En la solapa "Columnas", agregar la nueva columna "''duracion_en_meses''" con los siguientes datos:<br />
*'''Columna:''' "duracion_en_meses"<br />
*'''Titulo:''' Validez <br />
<br />
Ninguna propiedad mas se necesita para este ejemplo, por lo que al final la edición de las propiedades del cuadro, presionar el botón "Guardar".<br />
<br />
===== Modificar el CI =====<br />
Editar el objeto CI, llamado normalmente igual que la operación, en este caso: ''Certificados'' presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Subclase archivo''': La idea es crear una clase dentro de la misma estructura de carpetas que la original pero en otro path (<tt><path proyecto Guaraní>/personalizacion/php/operaciones</tt>), que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''operaciones/propuestas/certificados/ci_rep_certificados_XXX.php'' (donde ''XXX'' es el nodo de la institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
*'''Subclase''': El mismo nombre que el archivo: "''ci_rep_certificados_XXX''"<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class ci_rep_certificados_XXX extends ci_rep_certificados<br />
{<br />
<br />
// Se redefine la funcion que obtiene los datos a traves de una consulta propia<br />
function get_datos($filtro)<br />
{<br />
return toba::consulta_php('co_certificados')->get_listado_validez($filtro);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
===== Modificar la clase de consulta =====<br />
Para consultar a la BD de negocios del sistema, SIU-Guarani cuenta con un conjunto de clases (aproximadamente una por modulo-submodulo) definidas en la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba'''. Las clases de consultas definidas allí, son accesibles a través del framework desde cualquier clase a partir del llamado:<br />
<source lang="php" enclose="div"><br />
toba::consulta_php('co_XXXXXXXX')<br />
</source><br />
<br />
En este caso, se debe redefinir la clase de consulta "''co_certificados''" de la siguiente forma:<br />
<br />
Ir a la la solapa "''Datos''" -> "''Consultas PHP''" del '''Editor Toba''' y seleccionar para editar la clase de Consulta "''co_certificados''" presionando [[File:G3_editar.png]]. Realizar los siguientes cambios:<br><br />
*'''Punto de Montaje''' : ''"personalizacion"''. <br />
*'''Clase''': "''co_certificados_XXX''"<br />
*'''Archivo''': La idea es crear una clase dentro del path (<tt><path proyecto Guaraní>/personalizacion/php/nucleo</tt>) que extienda de la original. En este caso entonces, a traves del editor crear la estructura de carpetas y el archivo: ''nucleo/propuestas/certificados/co_certificados_XXX.php'' (donde ''XXX'' es el nodo de institución otorgado por el SIU). Esta estructura de directorios se creara dentro de <tt><path proyecto Guaraní>/personalizacion/php</tt> ya que previamente indicamos el punto de montaje "personalizacion".<br />
<br />
Una vez realizado esto, presionar el botón "Guardar" para almacenar los cambios realizados y luego abrir el archivo recién creado y dejarlo de la siguiente forma:<br />
<source lang="php" enclose="div"><br />
#php<br />
<?php<br />
class co_certificados_XXX extends co_certificados<br />
{<br />
<br />
// Se agrega el siguiente metodo como una nueva consulta a la BD para traer ademas de los datos basicos, el campo 'duracion_en_meses'<br />
function get_listado_validez($filtro)<br />
{<br />
if ($where) $where = 'AND '.$where;<br />
<br />
$sql = "SELECT sga_certificados.certificado, <br />
sga_certificados.nombre, <br />
sga_certificados.nombre_femenino, <br />
sga_certificados_tipos.certificado_tipo as certificado_tipo_codigo,<br />
sga_certificados_tipos.descripcion as certificado_tipo,<br />
sga_titulos_niveles.descripcion as titulo_nivel,<br />
sga_certificados.disciplina,<br />
sga_certificados.titulo_araucano,<br />
".guarani_sql::get_case('sga_certificados','estado').",<br />
sga_certificados.codigo,<br />
sga_g3entidades.entidad,<br />
sga_certificados.duracion_en_meses<br />
FROM sga_certificados<br />
LEFT JOIN sga_titulos_niveles ON sga_certificados.titulo_nivel = sga_titulos_niveles.titulo_nivel<br />
LEFT JOIN sga_g3entidades ON sga_certificados.entidad = sga_g3entidades.entidad,<br />
sga_certificados_tipos<br />
WHERE sga_certificados.certificado_tipo = sga_certificados_tipos.certificado_tipo<br />
$where<br />
ORDER BY codigo,<br />
certificado_tipo,<br />
titulo_nivel<br />
"; <br />
return guarani_db::consultar($sql);<br />
}<br />
<br />
}<br />
?><br />
</source><br />
De esta forma, se redefine solamente el método que traía los datos del cuadro sustituyéndolo por el que obtiene los datos de la nueva consulta que generaremos en el paso siguiente.<br />
<br />
==== Testeo y exportación ====<br />
Una vez que se ha finalizado con la implementación de la personalización, y se ha testeado el correcto funcionamiento de la misma, se deben exportar los cambios en los ''metadatos'' modificados. Esto se logra con el comando:<br />
<source lang="php" enclose="div"><br />
guarani esquema_pers exportar<br />
</source><br />
<br />
==== Regenerar el autoload ====<br />
Una vez que se realizó la exportación de los metadatos modificados, se deben incorporar las clases recientemente generadas en el archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php</tt> para que se puedan acceder desde otras clases si fuera necesario. Para esto, ejecutar el comando: <br />
<source lang="php" enclose="div"><br />
guarani pers_autoload<br />
</source></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/requisito_proceso&diff=12916SIU-Guarani/Version3.11.0/personalizaciones/requisito proceso2016-09-28T20:11:47Z<p>Gfranz: </p>
<hr />
<div>__TOC__<br />
== Pasos para crear un requisito de tipo proceso ==<br />
<br />
A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:<br />
* <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión<br />
<br />
=== Crear la regla ===<br />
<br />
Se define regla al proceso que contiene la lógica para resolver el caso propuesto.<br><br />
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.<br><br />
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación.<br />
Se deben ejecutar los inserts en las siguientes tablas: <br><br />
{| class="wikitable"<br />
! '''Tabla''' <br />
! '''Observaciones''' <br />
|- <br />
| ''sga_reglas'' <br />
| Registro de la Regla <br> El dato de regla_tipo = '''3''' (Tipo Proceso)<br> '''IMPORTANTE''': el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999. <br><br />
|- <br />
|''sga_reglas_parametros'' <br />
| Se indica con qué parámetros se ejecuta la regla. <br>Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas. <br> En este caso la regla tendrá dos parámetros: <br> Parametro 1: cantidad de actividades aprobadas <br> Parámetro 2: cantidad de créditos de materias aprobadas <br><br />
|- <br />
| ''sga_reglas_param_contexto'' <br />
| Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)<br> Los parámetros disponibles son los que estén definidos en la tabla ''par_puntos_control_parametros'' <br><br />
|- <br />
| ''sga_reglas_mensajes'' <br />
| Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap <br><br> Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato <span style="color: red;">$nro_parametro$</span> <br> Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales. <br> donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo<br>Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando <span style="color: red;">%nro_parametro%</span> (son los parámetros definidos en la tabla sga_reglas_parametros). <br>Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final. <br>donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla. <br><br />
|}<br />
<br />
Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <tt><path proyecto Guaraní>/personalizacion/BD/Datos/_nucleo/Controles/Reglas</tt><br />
<br><br><br />
Ejemplo: [[SIU-Guarani/Version3.11.0/control_encuestas_comision| Encuestas de la Comisión]] <br> <br />
Archivo '''Regla_326_EncuestasComision.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto<br />
-- Versión: 3.0.0<br />
-- Control: Que el alumno haya contestado las encuestas definidas para la comision<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (326, <br />
3, <br />
'Encuestas Contestadas', <br />
'Que el alumno haya contestado todas las encuestas de la comisión',<br />
'Que el alumno haya contestado todas las encuestas de la comisión', <br />
'El alumno no contestó encuestas de la comisión', <br />
'regla_encuestas_comision');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');<br />
<br />
-- Parametros<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');<br />
</source><br />
<br />
<br><br />
<br />
=== Crear el archivo php que contiene la clase que corresponde a la regla ===<br />
<br />
El archivo se debe guardar en <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas</tt>, hereda de la clase '''regla''' e implementa el método '''validar''' el cual realizará la validación. <br><br />
Completar el arreglo de clases del archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php</tt>.<br><br />
Ejemplo: <br />
<source lang="php" enclose="div"><br />
'regla_alumno_no_sancionado' => 'nucleo/_lib/reglas/regla_alumno_no_sancionado.php'<br />
</source><br />
Ejemplo:<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_alumno_no_sancionado extends regla<br />
{<br />
function validar()<br />
{<br />
$esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));<br />
return $this->resultado_final(! $esta_sancionado);<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== Agregar el requisito ===<br />
<br />
El requisito puede darse de alta por sistema o ingresarse directamente a la base.<br><br />
El ''tipo de requisito'' es el '''Proceso relacionado con actividades'''. (Nro 6)<br><br />
<br><br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos'' <br />
| Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define. <br> '''IMPORTANTE''': el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999 <br><br />
|- <br />
| ''sga_requisitos_validos'' <br />
| Define, para el caso de requisitos usados como ''controles configurables'', las acciones del sistema donde es válido el requisito.<br> Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc... <br> La tabla de acciones es ''sga_acciones'' <br><br />
|- <br />
| ''sga_requisitos_x_punto_control'' <br />
| Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito. <br><br />
|}<br />
<br />
=== Configurar el requisito ===<br />
<br />
Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema. <br><br />
El usuario deberá agregar el requisito a la acción que corresponda por la operación '''Requisitos por Acción''' (Acciones del punto anterior). <br><br />
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo.<br />
Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).<br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos_grupos'' <br />
| Aquí se registran los diferentes grupos de configuración de un requisito en una acción. <br />
|- <br />
| ''sga_requisitos_accion'' <br />
| Asocia al requisito en las acciones del sistema. <br><br />
|- <br />
| ''sga_requisitos_aplanado'' <br />
| Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción <br />
|- <br />
| ''sga_requisitos_conf_x_oper'' <br />
| Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo. <br />
|}<br />
<br />
=== Probar la regla desde el sistema ===<br />
En el sistema existe una operación para probar las reglas usadas en los requisitos.<br><br />
Para acceder a esta operación se debe ingresar por el '''editor de Toba'''.<br><br />
Alli se debe seleccionar la solapa '''Operaciones''' y acceder a la operación '''Raiz de Proyecto >> Pruebas >> Reglas'''.<br><br />
En esa operación se podra seleccionar la regla que se desea probar, la interfaz (gestion / autogestion) y dependiendo de la regla se solicitan los parámetros que la regla necesita.<br />
<br />
== Ejemplo ==<br />
Objetivo: <br><br />
* Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.<br />
* Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.<br />
<br />
=== Alta de la regla ===<br />
Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.<br><br />
<br />
Archivo '''Regla_1300_ActividadesAprobadas1erAnio.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (1300, <br />
3, <br />
'Tener aprobadas n actividades de 1er año', <br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'El alumno no aprobó la cantidad de %1% actividades de 1er año', <br />
'regla_actividades_aprobadas_1er_anio');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
-- %1% = Cantidad de actividades aprobadas de 1er año<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');<br />
<br />
-- Parametros de la regla. <br />
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta) <br />
VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');<br />
</source><br />
<br><br />
<br />
=== Crear el archivo php de la regla ===<br />
<br />
Se crea el archivo <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php</tt><br><br />
Se completa el arreglo de clases del archivo <tt><path proyecto Guaraní>/personalizacion/php/guarani_autoload_clases_nuevas.php</tt> con: <br><br />
<source lang="php" enclose="div"><br />
'regla_actividades_aprobadas_1er_anio' => 'nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php'<br />
</source><br />
<br />
Archivo: ''regla_actividades_aprobadas_1er_anio.php''<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_actividades_aprobadas_1er_anio extends regla<br />
{<br />
function validar()<br />
{<br />
// Obtiene los parámetros<br />
$alumno = $this->get_parametro('alumno');<br />
$cant_minima_materias_aprobadas = $this->get_parametro('actividades');<br />
<br />
// Recupero cantidad de materias aprobadas de primer año por el alumno <br />
$cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos_XXX')->get_cantidad_materias_aprobadas($alumno, 1);<br />
<br />
// Verifico si llegó al minimo de materias aprobadas<br />
$resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);<br />
<br />
if (! $resultado) {<br />
// No llegó al mínimo requerido de actividades aprobdas de 1er año. <br />
// Seteo los parámetros del mensaje (Los parámetros $x$)<br />
// El parámetro de la regla "actividades" se setea automáticamente (%1%).<br />
$nombre_alumno = toba::consulta_php('co_alumnos_XXX')->get_alumno_nombre($alumno);<br />
<br />
$this->set_parametros_mensaje_validacion(array($nombre_alumno), true);<br />
}<br />
// Devuelvo el resultado del control<br />
Return $resultado;<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Archivo: ''co_alumnos_XXX.php'' (clase de consulta personalizada, donde XXX es el nodo de institución otorgado por el SIU)<br />
<source lang="php" enclose="div"><br />
.....<br />
function get_cantidad_materias_aprobadas($alumno, $anio_cursada)<br />
{<br />
// Cantidad de actividades aprobadas de 1er año del Plan del Alumno.<br />
$sql = "SELECT count(*) as cant_aprobadas <br />
FROM sga_alumnos as a, <br />
vw_elementos_plan as ep,<br />
vw_hist_academica as v <br />
WHERE a.alumno = $alumno <br />
AND ep.plan_version = a.plan_version<br />
AND ep.anio_de_cursada = $anio_cursada<br />
AND v.alumno = a.alumno<br />
AND v.elemento = ep.elemento<br />
AND v.estado = 'A'<br />
"; <br />
// Ejecuto la consulta en la base <br />
$rs = guarani_db::consultar_fila($sql);<br />
<br />
// Retorno el resultado<br />
return $rs['cant_aprobadas'];<br />
}<br />
.......<br />
</source><br />
<br />
=== Alta del requisito ===<br />
El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.<br><br />
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.<br><br />
<br />
Archivo: '''Requisito_1300_ActiviadesAprobadas1erAnio.dca'''<br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_requisitos, sga_requisitos_validos<br />
-- Versión: 3.7.0<br />
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año<br />
-- <br />
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) <br />
VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1300); -- Inscripción a Cursadas<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 1300); -- Inscripción a Examen<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir en qué puntos de control se puede vincular el requisito:<br />
-- INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación<br />
<br />
</source><br />
<br />
== Puntos de control ==<br />
En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000. <br><br />
El SIU se reserva los números del 1 al 999.<br></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.12.0/personalizaciones/requisito_proceso&diff=12915SIU-Guarani/Version3.12.0/personalizaciones/requisito proceso2016-09-28T20:02:26Z<p>Gfranz: </p>
<hr />
<div>__TOC__<br />
== Pasos para crear un requisito de tipo proceso ==<br />
<br />
A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:<br />
* <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión<br />
<br />
=== Crear la regla ===<br />
<br />
Se define regla al proceso que contiene la lógica para resolver el caso propuesto.<br><br />
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.<br><br />
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación.<br />
Se deben ejecutar los inserts en las siguientes tablas: <br><br />
{| class="wikitable"<br />
! '''Tabla''' <br />
! '''Observaciones''' <br />
|- <br />
| ''sga_reglas'' <br />
| Registro de la Regla <br> El dato de regla_tipo = '''3''' (Tipo Proceso)<br> '''IMPORTANTE''': el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999. <br><br />
|- <br />
|''sga_reglas_parametros'' <br />
| Se indica con qué parámetros se ejecuta la regla. <br>Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas. <br> En este caso la regla tendrá dos parámetros: <br> Parametro 1: cantidad de actividades aprobadas <br> Parámetro 2: cantidad de créditos de materias aprobadas <br><br />
|- <br />
| ''sga_reglas_param_contexto'' <br />
| Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)<br> Los parámetros disponibles son los que estén definidos en la tabla ''par_puntos_control_parametros'' <br><br />
|- <br />
| ''sga_reglas_mensajes'' <br />
| Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap <br><br> Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato <span style="color: red;">$nro_parametro$</span> <br> Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales. <br> donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo<br>Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando <span style="color: red;">%nro_parametro%</span> (son los parámetros definidos en la tabla sga_reglas_parametros). <br>Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final. <br>donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla. <br><br />
|}<br />
<br />
Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <tt><path proyecto Guaraní>/personalizacion/BD/Datos/_nucleo/Controles/Reglas</tt><br />
<br><br><br />
Ejemplo: [[SIU-Guarani/Version3.12.0/control_encuestas_comision| Encuestas de la Comisión]] <br> <br />
Archivo '''Regla_326_EncuestasComision.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto<br />
-- Versión: 3.0.0<br />
-- Control: Que el alumno haya contestado las encuestas definidas para la comision<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (326, <br />
3, <br />
'Encuestas Contestadas', <br />
'Que el alumno haya contestado todas las encuestas de la comisión',<br />
'Que el alumno haya contestado todas las encuestas de la comisión', <br />
'El alumno no contestó encuestas de la comisión', <br />
'regla_encuestas_comision');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');<br />
<br />
-- Parametros<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');<br />
</source><br />
<br />
<br><br />
<br />
=== Crear el archivo php que contiene la clase que corresponde a la regla ===<br />
<br />
El archivo se debe guardar en <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas</tt>, hereda de la clase '''regla''' e implementa el método '''validar''' el cual realizará la validación. <br><br />
A continuación ejecutar el comando <source lang="php" enclose="div"> guarani pers_autoload </source> que agregará la clase nueva personalizada a los archivos de autoload correspondientes utilizados por Gestión y Autogestión. <br><br />
Ejemplo:<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_alumno_no_sancionado extends regla<br />
{<br />
function validar()<br />
{<br />
$esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));<br />
return $this->resultado_final(! $esta_sancionado);<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== Agregar el requisito ===<br />
<br />
El requisito puede darse de alta por sistema o ingresarse directamente a la base.<br><br />
El ''tipo de requisito'' es el '''Proceso relacionado con actividades'''. (Nro 6)<br><br />
<br><br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos'' <br />
| Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define. <br> '''IMPORTANTE''': el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999 <br><br />
|- <br />
| ''sga_requisitos_validos'' <br />
| Define, para el caso de requisitos usados como ''controles configurables'', las acciones del sistema donde es válido el requisito.<br> Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc... <br> La tabla de acciones es ''sga_acciones'' <br><br />
|- <br />
| ''sga_requisitos_x_punto_control'' <br />
| Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito. <br><br />
|}<br />
<br />
=== Configurar el requisito ===<br />
<br />
Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema. <br><br />
El usuario deberá agregar el requisito a la acción que corresponda por la operación '''Requisitos por Acción''' (Acciones del punto anterior). <br><br />
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo.<br />
Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).<br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos_grupos'' <br />
| Aquí se registran los diferentes grupos de configuración de un requisito en una acción. <br />
|- <br />
| ''sga_requisitos_accion'' <br />
| Asocia al requisito en las acciones del sistema. <br><br />
|- <br />
| ''sga_requisitos_aplanado'' <br />
| Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción <br />
|- <br />
| ''sga_requisitos_conf_x_oper'' <br />
| Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo. <br />
|}<br />
<br />
== Ejemplo ==<br />
Objetivo: <br><br />
* Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.<br />
* Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.<br />
<br />
=== Alta de la regla ===<br />
Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.<br><br />
<br />
Archivo '''Regla_1300_ActividadesAprobadas1erAnio.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (1300, <br />
3, <br />
'Tener aprobadas n actividades de 1er año', <br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'El alumno no aprobó la cantidad de %1% actividades de 1er año', <br />
'regla_actividades_aprobadas_1er_anio');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
-- %1% = Cantidad de actividades aprobadas de 1er año<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');<br />
<br />
-- Parametros de la regla. <br />
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta) <br />
VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');<br />
</source><br />
<br><br />
<br />
=== Crear el archivo php de la regla ===<br />
<br />
Se crea el archivo <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php</tt><br><br />
A continuación ejecutar el comando <source lang="php" enclose="div"> guarani pers_autoload </source> que agregará la clase nueva personalizada a los archivos de autoload correspondientes utilizados por Gestión y Autogestión. <br><br />
<br />
Archivo: ''regla_actividades_aprobadas_1er_anio.php''<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_actividades_aprobadas_1er_anio extends regla<br />
{<br />
function validar()<br />
{<br />
// Obtiene los parámetros<br />
$alumno = $this->get_parametro('alumno');<br />
$cant_minima_materias_aprobadas = $this->get_parametro('actividades');<br />
<br />
// Recupero cantidad de materias aprobadas de primer año por el alumno <br />
$cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos_XXX')->get_cantidad_materias_aprobadas($alumno, 1);<br />
<br />
// Verifico si llegó al minimo de materias aprobadas<br />
$resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);<br />
<br />
if (! $resultado) {<br />
// No llegó al mínimo requerido de actividades aprobdas de 1er año. <br />
// Seteo los parámetros del mensaje (Los parámetros $x$)<br />
// El parámetro de la regla "actividades" se setea automáticamente (%1%).<br />
$nombre_alumno = toba::consulta_php('co_alumnos_XXX')->get_alumno_nombre($alumno);<br />
<br />
$this->set_parametros_mensaje_validacion(array($nombre_alumno), true);<br />
}<br />
// Devuelvo el resultado del control<br />
Return $resultado;<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Archivo: ''co_alumnos_XXX.php'' (clase de consulta personalizada, donde XXX es el nodo de institución otorgado por el SIU)<br />
<source lang="php" enclose="div"><br />
.....<br />
function get_cantidad_materias_aprobadas($alumno, $anio_cursada)<br />
{<br />
// Cantidad de actividades aprobadas de 1er año del Plan del Alumno.<br />
$sql = "SELECT count(*) as cant_aprobadas <br />
FROM sga_alumnos as a, <br />
vw_elementos_plan as ep,<br />
vw_hist_academica as v <br />
WHERE a.alumno = $alumno <br />
AND ep.plan_version = a.plan_version<br />
AND ep.anio_de_cursada = $anio_cursada<br />
AND v.alumno = a.alumno<br />
AND v.elemento = ep.elemento<br />
AND v.estado = 'A'<br />
"; <br />
// Ejecuto la consulta en la base <br />
$rs = guarani_db::consultar_fila($sql);<br />
<br />
// Retorno el resultado<br />
return $rs['cant_aprobadas'];<br />
}<br />
.......<br />
</source><br />
<br />
=== Alta del requisito ===<br />
El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.<br><br />
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.<br><br />
<br />
Archivo: '''Requisito_1300_ActiviadesAprobadas1erAnio.dca'''<br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_requisitos, sga_requisitos_validos<br />
-- Versión: 3.7.0<br />
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año<br />
-- <br />
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) <br />
VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1300); -- Inscripción a Cursadas<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 1300); -- Inscripción a Examen<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir en qué puntos de control se puede vincular el requisito:<br />
-- INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación<br />
<br />
</source><br />
<br />
== Puntos de control ==<br />
En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000. <br><br />
El SIU se reserva los números del 1 al 999.<br></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/requisito_proceso&diff=12903SIU-Guarani/Version3.11.0/personalizaciones/requisito proceso2016-09-28T19:09:04Z<p>Gfranz: </p>
<hr />
<div>__TOC__<br />
== Pasos para crear un requisito de tipo proceso ==<br />
<br />
A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:<br />
* <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión<br />
<br />
=== Crear la regla ===<br />
<br />
Se define regla al proceso que contiene la lógica para resolver el caso propuesto.<br><br />
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.<br><br />
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación.<br />
Se deben ejecutar los inserts en las siguientes tablas: <br><br />
{| class="wikitable"<br />
! '''Tabla''' <br />
! '''Observaciones''' <br />
|- <br />
| ''sga_reglas'' <br />
| Registro de la Regla <br> El dato de regla_tipo = '''3''' (Tipo Proceso)<br> '''IMPORTANTE''': el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999. <br><br />
|- <br />
|''sga_reglas_parametros'' <br />
| Se indica con qué parámetros se ejecuta la regla. <br>Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas. <br> En este caso la regla tendrá dos parámetros: <br> Parametro 1: cantidad de actividades aprobadas <br> Parámetro 2: cantidad de créditos de materias aprobadas <br><br />
|- <br />
| ''sga_reglas_param_contexto'' <br />
| Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)<br> Los parámetros disponibles son los que estén definidos en la tabla ''par_puntos_control_parametros'' <br><br />
|- <br />
| ''sga_reglas_mensajes'' <br />
| Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap <br><br> Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato <span style="color: red;">$nro_parametro$</span> <br> Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales. <br> donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo<br>Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando <span style="color: red;">%nro_parametro%</span> (son los parámetros definidos en la tabla sga_reglas_parametros). <br>Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final. <br>donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla. <br><br />
|}<br />
<br />
Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <tt><path proyecto Guaraní>/personalizacion/BD/Datos/_nucleo/Controles/Reglas</tt><br />
<br><br><br />
Ejemplo: [[SIU-Guarani/Version3.11.0/control_encuestas_comision| Encuestas de la Comisión]] <br> <br />
Archivo '''Regla_326_EncuestasComision.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto<br />
-- Versión: 3.0.0<br />
-- Control: Que el alumno haya contestado las encuestas definidas para la comision<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (326, <br />
3, <br />
'Encuestas Contestadas', <br />
'Que el alumno haya contestado todas las encuestas de la comisión',<br />
'Que el alumno haya contestado todas las encuestas de la comisión', <br />
'El alumno no contestó encuestas de la comisión', <br />
'regla_encuestas_comision');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');<br />
<br />
-- Parametros<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');<br />
</source><br />
<br />
<br><br />
<br />
=== Crear el archivo php que contiene la clase que corresponde a la regla ===<br />
<br />
El archivo se debe guardar en <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas</tt>, hereda de la clase '''regla''' e implementa el método '''validar''' el cual realizará la validación. <br><br />
Completar el arreglo de clases de 'guarani_autoload_clases_nuevas'. <br><br />
Ejemplo: <br />
<source lang="php" enclose="div"><br />
'regla_alumno_no_sancionado' => 'nucleo/_lib/reglas/regla_alumno_no_sancionado.php'<br />
</source><br />
Ejemplo:<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_alumno_no_sancionado extends regla<br />
{<br />
function validar()<br />
{<br />
$esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));<br />
return $this->resultado_final(! $esta_sancionado);<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== Agregar el requisito ===<br />
<br />
El requisito puede darse de alta por sistema o ingresarse directamente a la base.<br><br />
El ''tipo de requisito'' es el '''Proceso relacionado con actividades'''. (Nro 6)<br><br />
<br><br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos'' <br />
| Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define. <br> '''IMPORTANTE''': el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999 <br><br />
|- <br />
| ''sga_requisitos_validos'' <br />
| Define, para el caso de requisitos usados como ''controles configurables'', las acciones del sistema donde es válido el requisito.<br> Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc... <br> La tabla de acciones es ''sga_acciones'' <br><br />
|- <br />
| ''sga_requisitos_x_punto_control'' <br />
| Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito. <br><br />
|}<br />
<br />
=== Configurar el requisito ===<br />
<br />
Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema. <br><br />
El usuario deberá agregar el requisito a la acción que corresponda por la operación '''Requisitos por Acción''' (Acciones del punto anterior). <br><br />
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo.<br />
Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).<br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos_grupos'' <br />
| Aquí se registran los diferentes grupos de configuración de un requisito en una acción. <br />
|- <br />
| ''sga_requisitos_accion'' <br />
| Asocia al requisito en las acciones del sistema. <br><br />
|- <br />
| ''sga_requisitos_aplanado'' <br />
| Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción <br />
|- <br />
| ''sga_requisitos_conf_x_oper'' <br />
| Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo. <br />
|}<br />
<br />
=== Probar la regla desde el sistema ===<br />
En el sistema existe una operación para probar las reglas usadas en los requisitos.<br><br />
Para acceder a esta operación se debe ingresar por el '''editor de Toba'''.<br><br />
Alli se debe seleccionar la solapa '''Operaciones''' y acceder a la operación '''Raiz de Proyecto >> Pruebas >> Reglas'''.<br><br />
En esa operación se podra seleccionar la regla que se desea probar, la interfaz (gestion / autogestion) y dependiendo de la regla se solicitan los parámetros que la regla necesita.<br />
<br />
== Ejemplo ==<br />
Objetivo: <br><br />
* Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.<br />
* Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.<br />
<br />
=== Alta de la regla ===<br />
Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.<br><br />
<br />
Archivo '''Regla_1300_ActividadesAprobadas1erAnio.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (1300, <br />
3, <br />
'Tener aprobadas n actividades de 1er año', <br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'El alumno no aprobó la cantidad de %1% actividades de 1er año', <br />
'regla_actividades_aprobadas_1er_anio');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
-- %1% = Cantidad de actividades aprobadas de 1er año<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');<br />
<br />
-- Parametros de la regla. <br />
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta) <br />
VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');<br />
</source><br />
<br><br />
<br />
=== Crear el archivo php de la regla ===<br />
<br />
Se crea el archivo <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php</tt><br><br />
Se completa el arreglo de clases de 'guarani_autoload_clases_nuevas' con: <br><br />
<source lang="php" enclose="div"><br />
'regla_actividades_aprobadas_1er_anio' => 'nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php'<br />
</source><br />
<br />
Archivo: ''regla_actividades_aprobadas_1er_anio.php''<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_actividades_aprobadas_1er_anio extends regla<br />
{<br />
function validar()<br />
{<br />
// Obtiene los parámetros<br />
$alumno = $this->get_parametro('alumno');<br />
$cant_minima_materias_aprobadas = $this->get_parametro('actividades');<br />
<br />
// Recupero cantidad de materias aprobadas de primer año por el alumno <br />
$cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos_XXX')->get_cantidad_materias_aprobadas($alumno, 1);<br />
<br />
// Verifico si llegó al minimo de materias aprobadas<br />
$resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);<br />
<br />
if (! $resultado) {<br />
// No llegó al mínimo requerido de actividades aprobdas de 1er año. <br />
// Seteo los parámetros del mensaje (Los parámetros $x$)<br />
// El parámetro de la regla "actividades" se setea automáticamente (%1%).<br />
$nombre_alumno = toba::consulta_php('co_alumnos_XXX')->get_alumno_nombre($alumno);<br />
<br />
$this->set_parametros_mensaje_validacion(array($nombre_alumno), true);<br />
}<br />
// Devuelvo el resultado del control<br />
Return $resultado;<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Archivo: ''co_alumnos_XXX.php'' (clase de consulta personalizada, donde XXX es el nodo de institución otorgado por el SIU)<br />
<source lang="php" enclose="div"><br />
.....<br />
function get_cantidad_materias_aprobadas($alumno, $anio_cursada)<br />
{<br />
// Cantidad de actividades aprobadas de 1er año del Plan del Alumno.<br />
$sql = "SELECT count(*) as cant_aprobadas <br />
FROM sga_alumnos as a, <br />
vw_elementos_plan as ep,<br />
vw_hist_academica as v <br />
WHERE a.alumno = $alumno <br />
AND ep.plan_version = a.plan_version<br />
AND ep.anio_de_cursada = $anio_cursada<br />
AND v.alumno = a.alumno<br />
AND v.elemento = ep.elemento<br />
AND v.estado = 'A'<br />
"; <br />
// Ejecuto la consulta en la base <br />
$rs = guarani_db::consultar_fila($sql);<br />
<br />
// Retorno el resultado<br />
return $rs['cant_aprobadas'];<br />
}<br />
.......<br />
</source><br />
<br />
=== Alta del requisito ===<br />
El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.<br><br />
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.<br><br />
<br />
Archivo: '''Requisito_1300_ActiviadesAprobadas1erAnio.dca'''<br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_requisitos, sga_requisitos_validos<br />
-- Versión: 3.7.0<br />
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año<br />
-- <br />
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) <br />
VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1300); -- Inscripción a Cursadas<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 1300); -- Inscripción a Examen<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir en qué puntos de control se puede vincular el requisito:<br />
-- INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación<br />
<br />
</source><br />
<br />
== Puntos de control ==<br />
En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000. <br><br />
El SIU se reserva los números del 1 al 999.<br></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/requisito_proceso&diff=12166SIU-Guarani/Version3.11.0/personalizaciones/requisito proceso2016-08-25T16:11:54Z<p>Gfranz: /* Crear el archivo php de la regla */</p>
<hr />
<div>__TOC__<br />
== Pasos para crear un requisito de tipo proceso ==<br />
<br />
A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:<br />
* <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión<br />
<br />
=== Crear la regla ===<br />
<br />
Se define regla al proceso que contiene la lógica para resolver el caso propuesto.<br><br />
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.<br><br />
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación.<br />
Se deben ejecutar los inserts en las siguientes tablas: <br><br />
{| class="wikitable"<br />
! '''Tabla''' <br />
! '''Observaciones''' <br />
|- <br />
| ''sga_reglas'' <br />
| Registro de la Regla <br> El dato de regla_tipo = '''3''' (Tipo Proceso)<br> '''IMPORTANTE''': el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999. <br><br />
|- <br />
|''sga_reglas_parametros'' <br />
| Se indica con qué parámetros se ejecuta la regla. <br>Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas. <br> En este caso la regla tendrá dos parámetros: <br> Parametro 1: cantidad de actividades aprobadas <br> Parámetro 2: cantidad de créditos de materias aprobadas <br><br />
|- <br />
| ''sga_reglas_param_contexto'' <br />
| Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)<br> Los parámetros disponibles son los que estén definidos en la tabla ''par_puntos_control_parametros'' <br><br />
|- <br />
| ''sga_reglas_mensajes'' <br />
| Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap <br><br> Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato <span style="color: red;">$nro_parametro$</span> <br> Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales. <br> donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo<br>Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando <span style="color: red;">%nro_parametro%</span> (son los parámetros definidos en la tabla sga_reglas_parametros). <br>Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final. <br>donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla. <br><br />
|}<br />
<br />
Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <tt><path proyecto Guaraní>/DB/Datos/_nucleo/Controles/Reglas</tt><br />
<br><br><br />
Ejemplo: [[SIU-Guarani/Version3.11.0/control_encuestas_comision| Encuestas de la Comisión]] <br> <br />
Archivo '''Regla_326_EncuestasComision.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto<br />
-- Versión: 3.0.0<br />
-- Control: Que el alumno haya contestado las encuestas definidas para la comision<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (326, <br />
3, <br />
'Encuestas Contestadas', <br />
'Que el alumno haya contestado todas las encuestas de la comisión',<br />
'Que el alumno haya contestado todas las encuestas de la comisión', <br />
'El alumno no contestó encuestas de la comisión', <br />
'regla_encuestas_comision');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');<br />
<br />
-- Parametros<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');<br />
</source><br />
<br />
<br><br />
<br />
=== Crear el archivo php que contiene la clase que corresponde a la regla ===<br />
<br />
El archivo se debe guardar en <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas</tt>, hereda de la clase '''regla''' e implementa el método '''validar''' el cual realizará la validación. <br><br />
Completar el arreglo de clases de 'guarani_pers_autoload'. <br><br />
Ejemplo: <br />
<source lang="php" enclose="div"><br />
'regla_alumno_no_sancionado' => 'nucleo/_lib/reglas/regla_alumno_no_sancionado.php'<br />
</source><br />
Ejemplo:<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_alumno_no_sancionado extends regla<br />
{<br />
function validar()<br />
{<br />
$esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));<br />
return $this->resultado_final(! $esta_sancionado);<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== Agregar el requisito ===<br />
<br />
El requisito puede darse de alta por sistema o ingresarse directamente a la base.<br><br />
El ''tipo de requisito'' es el '''Proceso relacionado con actividades'''. (Nro 6)<br><br />
<br><br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos'' <br />
| Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define. <br> '''IMPORTANTE''': el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999 <br><br />
|- <br />
| ''sga_requisitos_validos'' <br />
| Define, para el caso de requisitos usados como ''controles configurables'', las acciones del sistema donde es válido el requisito.<br> Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc... <br> La tabla de acciones es ''sga_acciones'' <br><br />
|- <br />
| ''sga_requisitos_x_punto_control'' <br />
| Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito. <br><br />
|}<br />
<br />
=== Configurar el requisito ===<br />
<br />
Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema. <br><br />
El usuario deberá agregar el requisito a la acción que corresponda por la operación '''Requisitos por Acción''' (Acciones del punto anterior). <br><br />
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo.<br />
Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).<br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos_grupos'' <br />
| Aquí se registran los diferentes grupos de configuración de un requisito en una acción. <br />
|- <br />
| ''sga_requisitos_accion'' <br />
| Asocia al requisito en las acciones del sistema. <br><br />
|- <br />
| ''sga_requisitos_aplanado'' <br />
| Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción <br />
|- <br />
| ''sga_requisitos_conf_x_oper'' <br />
| Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo. <br />
|}<br />
<br />
=== Probar la regla desde el sistema ===<br />
En el sistema existe una operación para probar las reglas usadas en los requisitos.<br><br />
Para acceder a esta operación se debe ingresar por el '''editor de Toba'''.<br><br />
Alli se debe seleccionar la solapa '''Operaciones''' y acceder a la operación '''Raiz de Proyecto >> Pruebas >> Reglas'''.<br><br />
En esa operación se podra seleccionar la regla que se desea probar, la interfaz (gestion / autogestion) y dependiendo de la regla se solicitan los parámetros que la regla necesita.<br />
<br />
== Ejemplo ==<br />
Objetivo: <br><br />
* Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.<br />
* Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.<br />
<br />
=== Alta de la regla ===<br />
Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.<br><br />
<br />
Archivo '''Regla_1300_ActividadesAprobadas1erAnio.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (1300, <br />
3, <br />
'Tener aprobadas n actividades de 1er año', <br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'El alumno no aprobó la cantidad de %1% actividades de 1er año', <br />
'regla_actividades_aprobadas_1er_anio');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
-- %1% = Cantidad de actividades aprobadas de 1er año<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');<br />
<br />
-- Parametros de la regla. <br />
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta) <br />
VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');<br />
</source><br />
<br><br />
<br />
=== Crear el archivo php de la regla ===<br />
<br />
Se crea el archivo <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php</tt><br><br />
Se completa el arreglo de clases de 'guarani_pers_autoload' con: <br><br />
<source lang="php" enclose="div"><br />
'regla_actividades_aprobadas_1er_anio' => 'nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php'<br />
</source><br />
<br />
Archivo: ''regla_actividades_aprobadas_1er_anio.php''<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_actividades_aprobadas_1er_anio extends regla<br />
{<br />
function validar()<br />
{<br />
// Obtiene los parámetros<br />
$alumno = $this->get_parametro('alumno');<br />
$cant_minima_materias_aprobadas = $this->get_parametro('actividades');<br />
<br />
// Recupero cantidad de materias aprobadas de primer año por el alumno <br />
$cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos')->get_cantidad_materias_aprobadas($alumno, 1);<br />
<br />
// Verifico si llegó al minimo de materias aprobadas<br />
$resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);<br />
<br />
if (! $resultado) {<br />
// No llegó al mínimo requerido de actividades aprobdas de 1er año. <br />
// Seteo los parámetros del mensaje (Los parámetros $x$)<br />
// El parámetro de la regla "actividades" se setea automáticamente (%1%).<br />
$nombre_alumno = toba::consulta_php('co_alumnos')->get_alumno_nombre($alumno);<br />
<br />
$this->set_parametros_mensaje_validacion(array($nombre_alumno), true);<br />
}<br />
// Devuelvo el resultado del control<br />
Return $resultado;<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Archivo: ''co_alumnos.php''<br />
<source lang="php" enclose="div"><br />
.....<br />
function get_cantidad_materias_aprobadas($alumno, $anio_cursada)<br />
{<br />
// Cantidad de actividades aprobadas de 1er año del Plan del Alumno.<br />
$sql = "SELECT count(*) as cant_aprobadas <br />
FROM sga_alumnos as a, <br />
vw_elementos_plan as ep,<br />
vw_hist_academica as v <br />
WHERE a.alumno = $alumno <br />
AND ep.plan_version = a.plan_version<br />
AND ep.anio_de_cursada = $anio_cursada<br />
AND v.alumno = a.alumno<br />
AND v.elemento = ep.elemento<br />
AND v.estado = 'A'<br />
"; <br />
// Ejecuto la consulta en la base <br />
$rs = guarani_db::consultar_fila($sql);<br />
<br />
// Retorno el resultado<br />
return $rs['cant_aprobadas'];<br />
}<br />
.......<br />
</source><br />
<br />
=== Alta del requisito ===<br />
El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.<br><br />
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.<br><br />
<br />
Archivo: '''Requisito_1300_ActiviadesAprobadas1erAnio.dca'''<br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_requisitos, sga_requisitos_validos<br />
-- Versión: 3.7.0<br />
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año<br />
-- <br />
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) <br />
VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1300); -- Inscripción a Cursadas<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 1300); -- Inscripción a Examen<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir en qué puntos de control se puede vincular el requisito:<br />
-- INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación<br />
<br />
</source><br />
<br />
== Puntos de control ==<br />
En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000. <br><br />
El SIU se reserva los números del 1 al 999.<br></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/requisito_proceso&diff=12165SIU-Guarani/Version3.11.0/personalizaciones/requisito proceso2016-08-25T16:09:15Z<p>Gfranz: </p>
<hr />
<div>__TOC__<br />
== Pasos para crear un requisito de tipo proceso ==<br />
<br />
A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:<br />
* <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión<br />
<br />
=== Crear la regla ===<br />
<br />
Se define regla al proceso que contiene la lógica para resolver el caso propuesto.<br><br />
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.<br><br />
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación.<br />
Se deben ejecutar los inserts en las siguientes tablas: <br><br />
{| class="wikitable"<br />
! '''Tabla''' <br />
! '''Observaciones''' <br />
|- <br />
| ''sga_reglas'' <br />
| Registro de la Regla <br> El dato de regla_tipo = '''3''' (Tipo Proceso)<br> '''IMPORTANTE''': el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999. <br><br />
|- <br />
|''sga_reglas_parametros'' <br />
| Se indica con qué parámetros se ejecuta la regla. <br>Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas. <br> En este caso la regla tendrá dos parámetros: <br> Parametro 1: cantidad de actividades aprobadas <br> Parámetro 2: cantidad de créditos de materias aprobadas <br><br />
|- <br />
| ''sga_reglas_param_contexto'' <br />
| Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)<br> Los parámetros disponibles son los que estén definidos en la tabla ''par_puntos_control_parametros'' <br><br />
|- <br />
| ''sga_reglas_mensajes'' <br />
| Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap <br><br> Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato <span style="color: red;">$nro_parametro$</span> <br> Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales. <br> donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo<br>Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando <span style="color: red;">%nro_parametro%</span> (son los parámetros definidos en la tabla sga_reglas_parametros). <br>Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final. <br>donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla. <br><br />
|}<br />
<br />
Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <tt><path proyecto Guaraní>/DB/Datos/_nucleo/Controles/Reglas</tt><br />
<br><br><br />
Ejemplo: [[SIU-Guarani/Version3.11.0/control_encuestas_comision| Encuestas de la Comisión]] <br> <br />
Archivo '''Regla_326_EncuestasComision.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto<br />
-- Versión: 3.0.0<br />
-- Control: Que el alumno haya contestado las encuestas definidas para la comision<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (326, <br />
3, <br />
'Encuestas Contestadas', <br />
'Que el alumno haya contestado todas las encuestas de la comisión',<br />
'Que el alumno haya contestado todas las encuestas de la comisión', <br />
'El alumno no contestó encuestas de la comisión', <br />
'regla_encuestas_comision');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');<br />
<br />
-- Parametros<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');<br />
</source><br />
<br />
<br><br />
<br />
=== Crear el archivo php que contiene la clase que corresponde a la regla ===<br />
<br />
El archivo se debe guardar en <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas</tt>, hereda de la clase '''regla''' e implementa el método '''validar''' el cual realizará la validación. <br><br />
Completar el arreglo de clases de 'guarani_pers_autoload'. <br><br />
Ejemplo: <br />
<source lang="php" enclose="div"><br />
'regla_alumno_no_sancionado' => 'nucleo/_lib/reglas/regla_alumno_no_sancionado.php'<br />
</source><br />
Ejemplo:<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_alumno_no_sancionado extends regla<br />
{<br />
function validar()<br />
{<br />
$esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));<br />
return $this->resultado_final(! $esta_sancionado);<br />
}<br />
}<br />
?><br />
</source><br />
<br />
=== Agregar el requisito ===<br />
<br />
El requisito puede darse de alta por sistema o ingresarse directamente a la base.<br><br />
El ''tipo de requisito'' es el '''Proceso relacionado con actividades'''. (Nro 6)<br><br />
<br><br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos'' <br />
| Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define. <br> '''IMPORTANTE''': el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999 <br><br />
|- <br />
| ''sga_requisitos_validos'' <br />
| Define, para el caso de requisitos usados como ''controles configurables'', las acciones del sistema donde es válido el requisito.<br> Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc... <br> La tabla de acciones es ''sga_acciones'' <br><br />
|- <br />
| ''sga_requisitos_x_punto_control'' <br />
| Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito. <br><br />
|}<br />
<br />
=== Configurar el requisito ===<br />
<br />
Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema. <br><br />
El usuario deberá agregar el requisito a la acción que corresponda por la operación '''Requisitos por Acción''' (Acciones del punto anterior). <br><br />
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo.<br />
Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).<br />
<br />
Tablas involucradas:<br />
{| class = "wikitable"<br />
! '''Tabla''' <br />
! '''Descripción''' <br />
|- <br />
| ''sga_requisitos_grupos'' <br />
| Aquí se registran los diferentes grupos de configuración de un requisito en una acción. <br />
|- <br />
| ''sga_requisitos_accion'' <br />
| Asocia al requisito en las acciones del sistema. <br><br />
|- <br />
| ''sga_requisitos_aplanado'' <br />
| Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción <br />
|- <br />
| ''sga_requisitos_conf_x_oper'' <br />
| Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo. <br />
|}<br />
<br />
=== Probar la regla desde el sistema ===<br />
En el sistema existe una operación para probar las reglas usadas en los requisitos.<br><br />
Para acceder a esta operación se debe ingresar por el '''editor de Toba'''.<br><br />
Alli se debe seleccionar la solapa '''Operaciones''' y acceder a la operación '''Raiz de Proyecto >> Pruebas >> Reglas'''.<br><br />
En esa operación se podra seleccionar la regla que se desea probar, la interfaz (gestion / autogestion) y dependiendo de la regla se solicitan los parámetros que la regla necesita.<br />
<br />
== Ejemplo ==<br />
Objetivo: <br><br />
* Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.<br />
* Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.<br />
<br />
=== Alta de la regla ===<br />
Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.<br><br />
<br />
Archivo '''Regla_1300_ActividadesAprobadas1erAnio.dca'''<br><br />
<br />
<source lang="php" enclose="div"><br />
<br />
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario, mensaje_validacion, php_clase) <br />
VALUES (1300, <br />
3, <br />
'Tener aprobadas n actividades de 1er año', <br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'Que el alumno tenga aprobadas n actividades de 1er año',<br />
'El alumno no aprobó la cantidad de %1% actividades de 1er año', <br />
'regla_actividades_aprobadas_1er_anio');<br />
<br />
-- Mensajes<br />
-- $1$ = Nombre del Alumno<br />
-- %1% = Cantidad de actividades aprobadas de 1er año<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');<br />
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) <br />
VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');<br />
<br />
-- Parametros de la regla. <br />
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta) <br />
VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');<br />
<br />
-- Parámetros de Contexto<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');<br />
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');<br />
</source><br />
<br><br />
<br />
=== Crear el archivo php de la regla ===<br />
<br />
Se crea el archivo <tt><path proyecto Guaraní>/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php</tt><br><br />
Se completa el arreglo de clases de 'guarani_autoload' con: <br><br />
<source lang="php" enclose="div"><br />
'regla_actividades_aprobadas_1er_anio' => 'nucleo/_lib/controles/reglas/regla_actividades_aprobadas_1er_anio.php'<br />
</source><br />
<br />
Archivo: ''regla_actividades_aprobadas_1er_anio.php''<br />
<source lang="php" enclose="div"><br />
<?php <br />
class regla_actividades_aprobadas_1er_anio extends regla<br />
{<br />
function validar()<br />
{<br />
// Obtiene los parámetros<br />
$alumno = $this->get_parametro('alumno');<br />
$cant_minima_materias_aprobadas = $this->get_parametro('actividades');<br />
<br />
// Recupero cantidad de materias aprobadas de primer año por el alumno <br />
$cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos')->get_cantidad_materias_aprobadas($alumno, 1);<br />
<br />
// Verifico si llegó al minimo de materias aprobadas<br />
$resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);<br />
<br />
if (! $resultado) {<br />
// No llegó al mínimo requerido de actividades aprobdas de 1er año. <br />
// Seteo los parámetros del mensaje (Los parámetros $x$)<br />
// El parámetro de la regla "actividades" se setea automáticamente (%1%).<br />
$nombre_alumno = toba::consulta_php('co_alumnos')->get_alumno_nombre($alumno);<br />
<br />
$this->set_parametros_mensaje_validacion(array($nombre_alumno), true);<br />
}<br />
// Devuelvo el resultado del control<br />
Return $resultado;<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Archivo: ''co_alumnos.php''<br />
<source lang="php" enclose="div"><br />
.....<br />
function get_cantidad_materias_aprobadas($alumno, $anio_cursada)<br />
{<br />
// Cantidad de actividades aprobadas de 1er año del Plan del Alumno.<br />
$sql = "SELECT count(*) as cant_aprobadas <br />
FROM sga_alumnos as a, <br />
vw_elementos_plan as ep,<br />
vw_hist_academica as v <br />
WHERE a.alumno = $alumno <br />
AND ep.plan_version = a.plan_version<br />
AND ep.anio_de_cursada = $anio_cursada<br />
AND v.alumno = a.alumno<br />
AND v.elemento = ep.elemento<br />
AND v.estado = 'A'<br />
"; <br />
// Ejecuto la consulta en la base <br />
$rs = guarani_db::consultar_fila($sql);<br />
<br />
// Retorno el resultado<br />
return $rs['cant_aprobadas'];<br />
}<br />
.......<br />
</source><br />
<br />
=== Alta del requisito ===<br />
El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.<br><br />
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.<br><br />
<br />
Archivo: '''Requisito_1300_ActiviadesAprobadas1erAnio.dca'''<br />
<br />
<source lang="php" enclose="div"><br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
-- Tabla: sga_requisitos, sga_requisitos_validos<br />
-- Versión: 3.7.0<br />
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año<br />
-- <br />
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año<br />
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
<br />
INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) <br />
VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1300); -- Inscripción a Cursadas<br />
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 1300); -- Inscripción a Examen<br />
<br />
-- En el caso que el requisito sea usado como un control configurable, se debe definir en qué puntos de control se puede vincular el requisito:<br />
-- INSERT INTO sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación<br />
<br />
</source><br />
<br />
== Puntos de control ==<br />
En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000. <br><br />
El SIU se reserva los números del 1 al 999.<br></div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/procesos_personalizables&diff=9939SIU-Guarani/Version3.11.0/personalizaciones/procesos personalizables2016-06-24T14:58:02Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">__TOC__</span><br />
== Procesos / métodos que se pueden personalizar ==<br />
<br />
Los métodos personalizables son aquellos métodos que conmumente son los mas indicados que en cada instalación del sistema sean personalizados de acuerdo a las normativas y procesos que rigen en cada lugar.<br><br><br />
A continuación presentamos la lista de los procesos que deberán ser revisados en el proceso de implementación del sistema y que es muy probable que deban ser personalizados.<br>Los procesos se listan agrupados por módulo indicando su objetivo, datos de entrada, resultado default, caso de uso donde se usa y el método que lo implementa.<br />
<br />
[[SIU-Guarani/Version3.11.0/personalizaciones/procesos_personalizables_instituciones|Aquí]] se puede ver los casos que van planteando las instituciones.<br />
<br />
=== Generales ===<br />
{|class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|- <br />
| Usuario de Acceso al sistema <br />
|1. Código de Usuario <br />
| true/false <br />
| Clase: usuario.php <br> Método: '''validar_id_usuario_permitido'''($id_usuario) <br> Parámetros: <br> ''string'': código de usuario <br />
|- <br />
| Clave de Acceso al sistema <br />
|1. Clave de acceso <br />
| Devuelve false/true <br />
| Clase: usuario.php <br> Método: '''validar_clave_permitida'''($clave) <br> Parámetros: <br> ''string'': clave de acceso al sistema <br />
|- <br />
| Clave de acceso default <br />
| 1. Pais del Documento.<br>2. Tipo de Documento de la persona.<br>3. Nro de Documento de la persona. <br />
| Nro de Documento de la persona <br />
| Clase: usuario.php <br> Método: '''get_clave_default'''($nro_identificacion) <br> Parámetros: <br> ''string'': número de documento <br />
|}<br />
<br />
=== Matrícula ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|- <br />
| Generación de Número de Legajo para Alumnos <br />
|1. '''¿El legajo es el mismo para todas las propuestas en las que se encuentra el alumno?:''' S-Sí/N-No <br> 2. '''Inscripción:''' código de inscripción a propuesta <br> 3. '''Persona:''' código de persona <br> 4. '''Propuesta:''' código de propuesta <br> 5. '''Ubicación:''' código de ubicación<br />
| Devuelve un número correlativo de legajo <br />
| Clase: legajos.php <br> Método: '''get_nuevo_nro_legajo'''($unico_legajo, $inscripcion, $persona, $propuesta, $ubicacion) <br> Parámetros:<br> ''string(1)'': S-Sí/N-No <br> ''int'': código de inscripción a propuesta <br> ''int'': código de persona <br> ''int'': código de propuesta <br> ''int'': código de ubicación <br />
|}<br />
<br />
=== Cursadas ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|-<br />
| '''Comisiones''' <br />
| <br />
| <br />
| <br />
|-<br />
| Generación del array de nombres de comisiones <br />
| <br />
| Setea una variable de clase con el array de nombres. <br>Cada institución puede personalizar estos nombres <br />
| Clase: comision.php <br> Método: '''set_nombres_default_comisiones'''() <br />
|-<br />
| Generación del nombre de la comisión <br />
| 1. Nro comisión de una Actividad a generar en un Período Lectivo <br />
| Devuelve el nombre de la comision por default.<br>Hay un array que contiene el nombre de unas 100 comisiones <br> <br />
|Clase: comision.php <br> Método: '''get_nombre_default_comision'''($nro_comision) <br> Parámetros: <br> ''int'': número de la comisión dentro de la actividad y período lectivo <br />
|-<br />
| '''Actas''' <br />
| <br />
| <br />
| <br />
|-<br />
| Generación de Libro para Actas de Regulares <br />
| 1. '''Origen:''' R-Regulares <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Comisión:''' id de la comisión <br> <br />
| Devuelve el libro activo de cursados <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Libro para Actas de Promoción <br />
| 1. '''Origen:''' P-Promocionales <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Comisión:''' id de la comisión <br> <br />
| Devuelve el libro activo de promoción <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Número para Actas de Regulares <br />
| 1. '''Origen:''' R-Regulares <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>4. '''Comisión:''' id de la comisión <br> <br />
| De acuerdo a los datos recibidos, devuelve el último número de acta + 1 <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br>'''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Número para Actas de Promoción<br />
| 1. '''Origen:''' P-Promociones <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>4. '''Comisión:''' id de la comisión <br> <br />
| De acuerdo a los datos recibidos, devuelve el último número de acta + 1 <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Fecha de Fin de Vigencia de la Regularidad <br />
| 1. '''Comisión:''' id de la comisión <br> 2. '''Propuesta:''' id de la propuesta del alumno <br />
| Dos años a partir de la fecha de fin de dictado del período lectivo de la comisión. <br />
| Clase: co_actas.php <br> Método: '''get_fin_vigencia_regularidad'''($comision, $propuesta) <br> Parámetros:<br> ''int'': id de la comisión <br> ''int'': id de la propuesta del alumno (el parámetro de sistema ''cur_cant_meses_vigencia_regularidad'' asociado puede definirse hasta el nivel de ''Algunas Propuestas'')<br />
|-<br />
| Fecha de Fin de Vigencia de la Promoción <br />
| 1. '''Comisión:''' id de la comisión <br> 2. '''Propuesta:''' id de la propuesta del alumno <br />
| NULL <br />
| Clase: co_actas.php <br> Método: '''get_fin_vigencia_promocion'''($comision, $propuesta) <br> Parámetros: <br> ''int'': id de la comisión <br> ''int'': id de la propuesta del alumno<br />
|}<br />
<br />
=== Exámenes ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
! Casos<br />
|-<br />
| '''Mesas''' <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Generación del array de nombres de mesas <br />
| <br />
| Setea una variable de clase con el array de nombres. <br>Cada institución puede personalizar estos nombres <br />
| Clase: mesa_de_examen.php <br> Método: '''set_nombres_default_mesas'''() <br />
| <br />
|-<br />
| Generación del nombre de la mesa <br />
| 1. Nro mesa de una Actividad a generar en un Turno de Examen <br />
| Devuelve el nombre de la mesa por default.<br>Hay un array que contiene el nombre de unas 50 mesas <br> <br />
| Clase: mesa_de_examen.php <br> Método: '''get_nombre_default_mesa'''($nro_mesa) <br> Parámetros: <br> ''int'': número de la mesa dentro de la actividad y turno de examen <br />
| <br />
|-<br />
| '''Actas''' <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Generacion de Libro para actas de Examen <br />
| 1. '''Origen:''' E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> 2. '''Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Llamado:''' id de la mesa de examen en un llamado <br> <br />
| Devuelve el libro activo de examen <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''llamado_mesa''' ''int'': id de la mesa de examen en un llamado <br />
| <br />
|-<br />
| Generación de Número de actas de Examen<br />
| 1. '''Origen:''' E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br> 4. '''Llamado:''' id de la mesa de examen en un llamado <br> <br />
| Devuelve incrementado en uno el mayor nro acta existente <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''llamado_mesa''' ''int'': id de la mesa de examen en un llamado <br />
| [[SIU-Guarani/Version3.11.0/personalizaciones/procesos_personalizables_instituciones|Casos]]<br />
|-<br />
| Fecha de Fin de Vigencia del Examen <br />
| 1. Id de la mesa en el llamado.<br> 2. Fecha del examen del alumno <br />
| NULL <br />
| ...get_fin_vigencia_examen (llamado_mesa integer, fecha date) <br />
|<br />
|-<br />
| Generación del nombre de la Mesa <br />
| 1. Código de una Actividad a generar en un Turno / Llamado <br />
| Devuelve el nombre de la mesa por default.<br>Hay un array que contiene el nombre de unas 50 mesas. Cada institución puede personalizar estos nombres. Por defecto devuelve la palabra "Mesa" + un número correlativo. <br />
|<br />
| <br />
|}<br />
<br />
=== Equivalencias ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método <br />
|-<br />
| <br />
| <br />
| <br />
| <br />
|}<br />
<br />
=== Egresados ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método <br />
|-<br />
| Detección de Egresados <br />
| <br />
| <br />
| <br />
|-<br />
| Verificar Pago<br />
| Identificación del alumno <br />
| Devuelve S por defecto. En caso de que no pagó devolverá N <br />
| <br />
|}</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/procesos_personalizables&diff=5031SIU-Guarani/Version3.11.0/personalizaciones/procesos personalizables2015-11-30T14:08:53Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">__TOC__</span><br />
== Procesos / métodos que se pueden personalizar ==<br />
<br />
Los métodos personalizables son aquellos métodos que conmumente son los mas indicados que en cada instalación del sistema sean personalizados de acuerdo a las normativas y procesos que rigen en cada lugar.<br><br><br />
A continuación presentamos la lista de los procesos que deberán ser revisados en el proceso de implementación del sistema y que es muy probable que deban ser personalizados.<br>Los procesos se listan agrupados por módulo indicando su objetivo, datos de entrada, resultado default, caso de uso donde se usa y el método que lo implementa.<br />
<br />
[[SIU-Guarani/Version3.11.0/personalizaciones/procesos_personalizables_instituciones|Aquí]] se puede ver los casos que van planteando las instituciones.<br />
<br />
=== Generales ===<br />
{|class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|- <br />
| Usuario de Acceso al sistema <br />
|1. Código de Usuario <br />
| true/false <br />
| Clase: usuario.php <br> Método: '''validar_id_usuario_permitido'''($id_usuario) <br> Parámetros: <br> ''string'': código de usuario <br />
|- <br />
| Clave de Acceso al sistema <br />
|1. Clave de acceso <br />
| Devuelve false/true <br />
| Clase: usuario.php <br> Método: '''validar_clave_permitida'''($clave) <br> Parámetros: <br> ''string'': clave de acceso al sistema <br />
|- <br />
| Clave de acceso default <br />
| 1. Pais del Documento.<br>2. Tipo de Documento de la persona.<br>3. Nro de Documento de la persona. <br />
| Nro de Documento de la persona <br />
| Clase: usuario.php <br> Método: '''get_clave_default'''($nro_identificacion) <br> Parámetros: <br> ''string'': número de documento <br />
|}<br />
<br />
=== Matrícula ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|- <br />
| Generación de Número de Legajo para Alumnos <br />
|1. '''¿El legajo es el mismo para todas las propuestas en las que se encuentra el alumno?:''' S-Sí/N-No <br> 2. '''Inscripción:''' código de inscripción a propuesta <br> 3. '''Persona:''' código de persona <br> 4. '''Propuesta:''' código de propuesta <br> 5. '''Ubicación:''' código de ubicación<br />
| Devuelve un número correlativo de legajo <br />
| Clase: legajos.php <br> Método: '''get_nuevo_nro_legajo'''($unico_legajo, $inscripcion, $persona, $propuesta, $ubicacion) <br> Parámetros:<br> ''string(1)'': S-Sí/N-No <br> ''int'': código de inscripción a propuesta <br> ''int'': código de persona <br> ''int'': código de propuesta <br> ''int'': código de ubicación <br />
|}<br />
<br />
=== Cursadas ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|-<br />
| '''Comisiones''' <br />
| <br />
| <br />
| <br />
|-<br />
| Generación del array de nombres de comisiones <br />
| <br />
| Setea una variable de clase con el array de nombres. <br>Cada institución puede personalizar estos nombres <br />
| Clase: comision.php <br> Método: '''set_nombres_default_comisiones'''() <br />
|-<br />
| Generación del nombre de la comisión <br />
| 1. Nro comisión de una Actividad a generar en un Período Lectivo <br />
| Devuelve el nombre de la comision por default.<br>Hay un array que contiene el nombre de unas 100 comisiones <br> <br />
|Clase: comision.php <br> Método: '''get_nombre_default_comision'''($nro_comision) <br> Parámetros: <br> ''int'': número de la comisión dentro de la actividad y período lectivo <br />
|-<br />
| '''Actas''' <br />
| <br />
| <br />
| <br />
|-<br />
| Generación de Libro para Actas de Regulares <br />
| 1. '''Origen:''' R-Regulares <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Comisión:''' id de la comisión <br> <br />
| Devuelve el libro activo de cursados <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Libro para Actas de Promoción <br />
| 1. '''Origen:''' P-Promocionales <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Comisión:''' id de la comisión <br> <br />
| Devuelve el libro activo de promoción <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Número para Actas de Regulares <br />
| 1. '''Origen:''' R-Regulares <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>3. '''Libro de Actas:''' id del Libro de Actas donde se guardará el acta de regulares <br>4. '''Comisión:''' id de la comisión <br> <br />
| De acuerdo a los datos recibidos, devuelve el último número de acta + 1 <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''libro''' ''int'': id del libro de actas donde se guardará el acta de regulares <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Número para Actas de Promoción<br />
| 1. '''Origen:''' P-Promociones <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>3. '''Libro de Actas:''' id del Libro de Actas donde se guardará el acta de promoción <br>4. '''Comisión:''' id de la comisión <br> <br />
| De acuerdo a los datos recibidos, devuelve el último número de acta + 1 <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''libro''' ''int'': id del libro de actas donde se guardará el acta de promoción <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Fecha de Fin de Vigencia de la Regularidad <br />
| 1. '''Comisión:''' id de la comisión <br> 2. '''Propuesta:''' id de la propuesta del alumno <br />
| Dos años a partir de la fecha de fin de dictado del período lectivo de la comisión. <br />
| Clase: co_actas.php <br> Método: '''get_fin_vigencia_regularidad'''($comision, $propuesta) <br> Parámetros:<br> ''int'': id de la comisión <br> ''int'': id de la propuesta del alumno (el parámetro de sistema ''cur_cant_meses_vigencia_regularidad'' asociado puede definirse hasta el nivel de ''Algunas Propuestas'')<br />
|-<br />
| Fecha de Fin de Vigencia de la Promoción <br />
| 1. '''Comisión:''' id de la comisión <br> 2. '''Propuesta:''' id de la propuesta del alumno <br />
| NULL <br />
| Clase: co_actas.php <br> Método: '''get_fin_vigencia_promocion'''($comision, $propuesta) <br> Parámetros: <br> ''int'': id de la comisión <br> ''int'': id de la propuesta del alumno<br />
|}<br />
<br />
=== Exámenes ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
! Casos<br />
|-<br />
| '''Mesas''' <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Generación del array de nombres de mesas <br />
| <br />
| Setea una variable de clase con el array de nombres. <br>Cada institución puede personalizar estos nombres <br />
| Clase: mesa_de_examen.php <br> Método: '''set_nombres_default_mesas'''() <br />
| <br />
|-<br />
| Generación del nombre de la mesa <br />
| 1. Nro mesa de una Actividad a generar en un Turno de Examen <br />
| Devuelve el nombre de la mesa por default.<br>Hay un array que contiene el nombre de unas 50 mesas <br> <br />
| Clase: mesa_de_examen.php <br> Método: '''get_nombre_default_mesa'''($nro_mesa) <br> Parámetros: <br> ''int'': número de la mesa dentro de la actividad y turno de examen <br />
| <br />
|-<br />
| '''Actas''' <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Generacion de Libro para actas de Examen <br />
| 1. '''Origen:''' E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> 2. '''Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Llamado:''' id de la mesa de examen en un llamado <br> <br />
| Devuelve el libro activo de examen <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''llamado_mesa''' ''int'': id de la mesa de examen en un llamado <br />
| <br />
|-<br />
| Generación de Número de actas de Examen<br />
| 1. '''Origen:''' E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>3. '''Libro de Actas:''' Id del Libro de Actas donde se guardará el examen <br>4. '''Llamado:''' id de la mesa de examen en un llamado <br> <br />
| Devuelve incrementado en uno el mayor nro acta existente <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''libro''' ''int'': Id del Libro de Actas donde se guardará el examen. <br> '''llamado_mesa''' ''int'': id de la mesa de examen en un llamado <br />
| [[SIU-Guarani/Version3.11.0/personalizaciones/procesos_personalizables_instituciones|Casos]]<br />
|-<br />
| Fecha de Fin de Vigencia del Examen <br />
| 1. Id de la mesa en el llamado.<br> 2. Fecha del examen del alumno <br />
| NULL <br />
| ...get_fin_vigencia_examen (llamado_mesa integer, fecha date) <br />
|<br />
|-<br />
| Generación del nombre de la Mesa <br />
| 1. Código de una Actividad a generar en un Turno / Llamado <br />
| Devuelve el nombre de la mesa por default.<br>Hay un array que contiene el nombre de unas 50 mesas. Cada institución puede personalizar estos nombres. Por defecto devuelve la palabra "Mesa" + un número correlativo. <br />
|<br />
| <br />
|}<br />
<br />
=== Equivalencias ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método <br />
|-<br />
| <br />
| <br />
| <br />
| <br />
|}<br />
<br />
=== Egresados ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método <br />
|-<br />
| Detección de Egresados <br />
| <br />
| <br />
| <br />
|-<br />
| Verificar Pago<br />
| Identificación del alumno <br />
| Devuelve S por defecto. En caso de que no pagó devolverá N <br />
| <br />
|}</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.12.0/personalizaciones/procesos_personalizables&diff=5437SIU-Guarani/Version3.12.0/personalizaciones/procesos personalizables2015-11-30T14:08:53Z<p>Gfranz: </p>
<hr />
<div><span style="float: right; margin: 0 0 15px 15px;">__TOC__</span><br />
== Procesos / métodos que se pueden personalizar ==<br />
<br />
Los métodos personalizables son aquellos métodos que conmumente son los mas indicados que en cada instalación del sistema sean personalizados de acuerdo a las normativas y procesos que rigen en cada lugar.<br><br><br />
A continuación presentamos la lista de los procesos que deberán ser revisados en el proceso de implementación del sistema y que es muy probable que deban ser personalizados.<br>Los procesos se listan agrupados por módulo indicando su objetivo, datos de entrada, resultado default, caso de uso donde se usa y el método que lo implementa.<br />
<br />
[[SIU-Guarani/Version3.12.0/personalizaciones/procesos_personalizables_instituciones|Aquí]] se puede ver los casos que van planteando las instituciones.<br />
<br />
=== Generales ===<br />
{|class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|- <br />
| Usuario de Acceso al sistema <br />
|1. Código de Usuario <br />
| true/false <br />
| Clase: usuario.php <br> Método: '''validar_id_usuario_permitido'''($id_usuario) <br> Parámetros: <br> ''string'': código de usuario <br />
|- <br />
| Clave de Acceso al sistema <br />
|1. Clave de acceso <br />
| Devuelve false/true <br />
| Clase: usuario.php <br> Método: '''validar_clave_permitida'''($clave) <br> Parámetros: <br> ''string'': clave de acceso al sistema <br />
|- <br />
| Clave de acceso default <br />
| 1. Pais del Documento.<br>2. Tipo de Documento de la persona.<br>3. Nro de Documento de la persona. <br />
| Nro de Documento de la persona <br />
| Clase: usuario.php <br> Método: '''get_clave_default'''($nro_identificacion) <br> Parámetros: <br> ''string'': número de documento <br />
|}<br />
<br />
=== Matrícula ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|- <br />
| Generación de Número de Legajo para Alumnos <br />
|1. '''¿El legajo es el mismo para todas las propuestas en las que se encuentra el alumno?:''' S-Sí/N-No <br> 2. '''Inscripción:''' código de inscripción a propuesta <br> 3. '''Persona:''' código de persona <br> 4. '''Propuesta:''' código de propuesta <br> 5. '''Ubicación:''' código de ubicación<br />
| Devuelve un número correlativo de legajo <br />
| Clase: legajos.php <br> Método: '''get_nuevo_nro_legajo'''($unico_legajo, $inscripcion, $persona, $propuesta, $ubicacion) <br> Parámetros:<br> ''string(1)'': S-Sí/N-No <br> ''int'': código de inscripción a propuesta <br> ''int'': código de persona <br> ''int'': código de propuesta <br> ''int'': código de ubicación <br />
|}<br />
<br />
=== Cursadas ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
|-<br />
| '''Comisiones''' <br />
| <br />
| <br />
| <br />
|-<br />
| Generación del array de nombres de comisiones <br />
| <br />
| Setea una variable de clase con el array de nombres. <br>Cada institución puede personalizar estos nombres <br />
| Clase: comision.php <br> Método: '''set_nombres_default_comisiones'''() <br />
|-<br />
| Generación del nombre de la comisión <br />
| 1. Nro comisión de una Actividad a generar en un Período Lectivo <br />
| Devuelve el nombre de la comision por default.<br>Hay un array que contiene el nombre de unas 100 comisiones <br> <br />
|Clase: comision.php <br> Método: '''get_nombre_default_comision'''($nro_comision) <br> Parámetros: <br> ''int'': número de la comisión dentro de la actividad y período lectivo <br />
|-<br />
| '''Actas''' <br />
| <br />
| <br />
| <br />
|-<br />
| Generación de Libro para Actas de Regulares <br />
| 1. '''Origen:''' R-Regulares <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Comisión:''' id de la comisión <br> <br />
| Devuelve el libro activo de cursados <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Libro para Actas de Promoción <br />
| 1. '''Origen:''' P-Promocionales <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Comisión:''' id de la comisión <br> <br />
| Devuelve el libro activo de promoción <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Número para Actas de Regulares <br />
| 1. '''Origen:''' R-Regulares <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>3. '''Libro de Actas:''' id del Libro de Actas donde se guardará el acta de regulares <br>4. '''Comisión:''' id de la comisión <br> <br />
| De acuerdo a los datos recibidos, devuelve el último número de acta + 1 <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''libro''' ''int'': id del libro de actas donde se guardará el acta de regulares <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Generación de Número para Actas de Promoción<br />
| 1. '''Origen:''' P-Promociones <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>3. '''Libro de Actas:''' id del Libro de Actas donde se guardará el acta de promoción <br>4. '''Comisión:''' id de la comisión <br> <br />
| De acuerdo a los datos recibidos, devuelve el último número de acta + 1 <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''libro''' ''int'': id del libro de actas donde se guardará el acta de promoción <br> '''comision''' ''int'': id de la comisión <br />
|-<br />
| Fecha de Fin de Vigencia de la Regularidad <br />
| 1. '''Comisión:''' id de la comisión <br> 2. '''Propuesta:''' id de la propuesta del alumno <br />
| Dos años a partir de la fecha de fin de dictado del período lectivo de la comisión. <br />
| Clase: co_actas.php <br> Método: '''get_fin_vigencia_regularidad'''($comision, $propuesta) <br> Parámetros:<br> ''int'': id de la comisión <br> ''int'': id de la propuesta del alumno (el parámetro de sistema ''cur_cant_meses_vigencia_regularidad'' asociado puede definirse hasta el nivel de ''Algunas Propuestas'')<br />
|-<br />
| Fecha de Fin de Vigencia de la Promoción <br />
| 1. '''Comisión:''' id de la comisión <br> 2. '''Propuesta:''' id de la propuesta del alumno <br />
| NULL <br />
| Clase: co_actas.php <br> Método: '''get_fin_vigencia_promocion'''($comision, $propuesta) <br> Parámetros: <br> ''int'': id de la comisión <br> ''int'': id de la propuesta del alumno<br />
|}<br />
<br />
=== Exámenes ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método<br />
! Casos<br />
|-<br />
| '''Mesas''' <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Generación del array de nombres de mesas <br />
| <br />
| Setea una variable de clase con el array de nombres. <br>Cada institución puede personalizar estos nombres <br />
| Clase: mesa_de_examen.php <br> Método: '''set_nombres_default_mesas'''() <br />
| <br />
|-<br />
| Generación del nombre de la mesa <br />
| 1. Nro mesa de una Actividad a generar en un Turno de Examen <br />
| Devuelve el nombre de la mesa por default.<br>Hay un array que contiene el nombre de unas 50 mesas <br> <br />
| Clase: mesa_de_examen.php <br> Método: '''get_nombre_default_mesa'''($nro_mesa) <br> Parámetros: <br> ''int'': número de la mesa dentro de la actividad y turno de examen <br />
| <br />
|-<br />
| '''Actas''' <br />
| <br />
| <br />
| <br />
| <br />
|-<br />
| Generacion de Libro para actas de Examen <br />
| 1. '''Origen:''' E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> 2. '''Tipo de Acta:''' N-Normal / R-Rectificativa <br> 3. '''Llamado:''' id de la mesa de examen en un llamado <br> <br />
| Devuelve el libro activo de examen <br />
| Clase: co_actas.php <br> Método: '''get_libro_de_actas'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''llamado_mesa''' ''int'': id de la mesa de examen en un llamado <br />
| <br />
|-<br />
| Generación de Número de actas de Examen<br />
| 1. '''Origen:''' E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> 2.''' Tipo de Acta:''' N-Normal / R-Rectificativa <br>3. '''Libro de Actas:''' Id del Libro de Actas donde se guardará el examen <br>4. '''Llamado:''' id de la mesa de examen en un llamado <br> <br />
| Devuelve incrementado en uno el mayor nro acta existente <br />
| Clase: co_actas.php <br> Método: '''generar_nro_acta'''($parametros) <br> '''parámetros''' ''array()'': <br> '''origen''' ''string(1)'': E-Examen/R-Regulares/P-Promociones/Q-Equivalencias <br> '''tipo_acta''' ''string(1)'': N-Normal / R-Rectificativa <br> '''libro''' ''int'': Id del Libro de Actas donde se guardará el examen. <br> '''llamado_mesa''' ''int'': id de la mesa de examen en un llamado <br />
| [[SIU-Guarani/Version3.12.0/personalizaciones/procesos_personalizables_instituciones|Casos]]<br />
|-<br />
| Fecha de Fin de Vigencia del Examen <br />
| 1. Id de la mesa en el llamado.<br> 2. Fecha del examen del alumno <br />
| NULL <br />
| ...get_fin_vigencia_examen (llamado_mesa integer, fecha date) <br />
|<br />
|-<br />
| Generación del nombre de la Mesa <br />
| 1. Código de una Actividad a generar en un Turno / Llamado <br />
| Devuelve el nombre de la mesa por default.<br>Hay un array que contiene el nombre de unas 50 mesas. Cada institución puede personalizar estos nombres. Por defecto devuelve la palabra "Mesa" + un número correlativo. <br />
|<br />
| <br />
|}<br />
<br />
=== Equivalencias ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método <br />
|-<br />
| <br />
| <br />
| <br />
| <br />
|}<br />
<br />
=== Egresados ===<br />
{| class="wikitable"<br />
! Tema<br />
! Datos de Entrada<br />
! Resultado Default SIU<br />
! Clase PHP - Método <br />
|-<br />
| Detección de Egresados <br />
| <br />
| <br />
| <br />
|-<br />
| Verificar Pago<br />
| Identificación del alumno <br />
| Devuelve S por defecto. En caso de que no pagó devolverá N <br />
| <br />
|}</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3173SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-16T18:12:24Z<p>Gfranz: /* Agregar más datos a un certificado o constancia existente */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''. <br> 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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
Para el caso particular de las impresiones de Constancias y Certificados solicitados de forma manual desde Guaraní, 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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
=== CASO 1: Agregar un nuevo certificado === <br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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). Recordar que además de los provistos, se pueden enviar mas parámetros que los anteriormente mencionados.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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. <br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
Este caso es análogo al anterior. Se debe abrir la constancia que se desea modificar para realizar los cambios en el texto, siguiendo los mismos tres pasos detallados.<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
# El método más simple que es recomendado, consiste en agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
Las constancias de solicitud manual existentes actualmente en el sistema, 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, se debe desarrollar un formulario y asociarlo a la constancia en cuestión. Para esto, ver el '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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 de Guaraní tomando como base el '''nro. de solicitud'''.<br />
* Una vez realizadas las modificaciones, al igual que en los casos anteriores, se deben seguir los pasos de guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper'' y recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la misma.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3172SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-16T17:59:35Z<p>Gfranz: /* Personalizar Certificados y Constancias */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''. <br> 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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
Para el caso particular de las impresiones de Constancias y Certificados solicitados de forma manual desde Guaraní, 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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
=== CASO 1: Agregar un nuevo certificado === <br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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). Recordar que además de los provistos, se pueden enviar mas parámetros que los anteriormente mencionados.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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. <br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
Este caso es análogo al anterior. Se debe abrir la constancia que se desea modificar para realizar los cambios en el texto, siguiendo los mismos tres pasos detallados.<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
# El método más simple que es recomendado, consiste en agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3171SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-16T17:57:44Z<p>Gfranz: /* Personalizar Certificados y Constancias */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''. <br> 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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
Para el caso particular de las impresiones de Constancias y Certificados solicitados de forma manual desde Guaraní, 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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
=== CASO 1: Agregar un nuevo certificado === <br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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. <br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
Este caso es análogo al anterior. Se debe abrir la constancia que se desea modificar para realizar los cambios en el texto, siguiendo los mismos tres pasos detallados.<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
# El método más simple que es recomendado, consiste en agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3168SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-16T16:23:26Z<p>Gfranz: /* CASO 2: Personalizar un certificado existente */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''. <br> 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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
Para el caso particular de las impresiones de Constancias y Certificados solicitados desde Guaraní, o generados de forma automática por el mismo, por ejemplo 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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
=== CASO 1: Agregar un nuevo certificado === <br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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. <br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
Este caso es análogo al anterior. Se debe abrir la constancia que se desea modificar para realizar los cambios en el texto, siguiendo los mismos tres pasos detallados.<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
# El método más simple que es recomendado, consiste en agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3167SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-16T15:47:33Z<p>Gfranz: /* Personalizar Certificados y Constancias */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''. <br> 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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
Para el caso particular de las impresiones de Constancias y Certificados solicitados desde Guaraní, o generados de forma automática por el mismo, por ejemplo 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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
=== CASO 1: Agregar un nuevo certificado === <br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
'''<u>IMPORTANTE:</u> 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.''' <br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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.<br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
#Abrir la constancia que se desea modificar (''archivo .jrxml desde iReport v5.6'')<br />
#Realizar las modificaciones correspondientes.<br />
#Guardar la plantilla con otro nombre.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
#Agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3166SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-16T15:46:16Z<p>Gfranz: /* Personalizar Certificados y Constancias */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''. <br> 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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
Para el caso particular de las impresiones de Constancias y Certificados solicitados desde Guaraní, o generados de forma automática por el mismo, por ejemplo 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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
'''<u>IMPORTANTE:</u> 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.''' <br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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.<br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
#Abrir la constancia que se desea modificar (''archivo .jrxml desde iReport v5.6'')<br />
#Realizar las modificaciones correspondientes.<br />
#Guardar la plantilla con otro nombre.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
#Agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3113SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-16T13:35:08Z<p>Gfranz: /* Personalizar impresiones */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''. <br> 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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
'''<u>IMPORTANTE:</u> 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.''' <br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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.<br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
#Abrir la constancia que se desea modificar (''archivo .jrxml desde iReport v5.6'')<br />
#Realizar las modificaciones correspondientes.<br />
#Guardar la plantilla con otro nombre.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
#Agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3106SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-15T16:00:01Z<p>Gfranz: 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</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''.<br />
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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
'''<u>IMPORTANTE:</u> 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.''' <br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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.<br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
#Abrir la constancia que se desea modificar (''archivo .jrxml desde iReport v5.6'')<br />
#Realizar las modificaciones correspondientes.<br />
#Guardar la plantilla con otro nombre.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
#Agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/constancias&diff=3107SIU-Guarani/Version3.11.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: 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</p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.11.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.12.0/personalizaciones/constancias&diff=5520SIU-Guarani/Version3.12.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.12.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.13.0/personalizaciones/constancias&diff=17324SIU-Guarani/Version3.13.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.13.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.14.0/personalizaciones/constancias&diff=29810SIU-Guarani/Version3.14.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.14.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.15.0/personalizaciones/constancias&diff=38660SIU-Guarani/Version3.15.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.15.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.16.0/personalizaciones/constancias&diff=44827SIU-Guarani/Version3.16.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.16.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.17.0/personalizaciones/constancias&diff=56579SIU-Guarani/Version3.17.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.17.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.18.0/personalizaciones/constancias&diff=65075SIU-Guarani/Version3.18.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.18.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.19.0/personalizaciones/constancias&diff=71919SIU-Guarani/Version3.19.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.19.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.20.0/personalizaciones/constancias&diff=76148SIU-Guarani/Version3.20.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.20.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.21.0/personalizaciones/constancias&diff=86474SIU-Guarani/Version3.21.0/personalizaciones/constancias2015-10-15T16:00:01Z<p>Gfranz: </p>
<hr />
<div>#REDIRECCIÓN [[SIU-Guarani/Version3.21.0/personalizaciones/impresiones]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3103SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-15T13:41:33Z<p>Gfranz: /* Reemplazar la constancia o certificado provisto por el sistema por uno nuevo */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''.<br />
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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
'''<u>IMPORTANTE:</u> 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.''' <br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica simplemente:<br />
#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. <br />
# Guardarla con el mismo nombre que la original proporcionada por el sistema, pero en el path: ''$guarani_dir/personalizaciones/exportaciones/jasper''.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#:<u>ATENCIÓN:</u> 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.<br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
#Abrir la constancia que se desea modificar (''archivo .jrxml desde iReport v5.6'')<br />
#Realizar las modificaciones correspondientes.<br />
#Guardar la plantilla con otro nombre.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
#Agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3102SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-15T13:35:37Z<p>Gfranz: /* CASO 1: Agregar un nuevo certificado */</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''.<br />
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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$guarani_dir/personalizaciones/exportaciones/jasper''<br />
#* 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.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
'''<u>IMPORTANTE:</u> 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.''' <br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica realizar algo similar a lo que se debe hacer cuando se desea agregar un certificado del sistema (se agrega una nueva plantilla pero en lugar de asociarla a un nuevo certificado, se la asocia a uno existente). Para esto, realizar los siguientes pasos: <br />
#Realizar todos los pasos del '''"Caso 1"''' expuesto anteriormente (''Agregar un nuevo certificado'') a excepción del punto '''(4)'''.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
#Abrir la constancia que se desea modificar (''archivo .jrxml desde iReport v5.6'')<br />
#Realizar las modificaciones correspondientes.<br />
#Guardar la plantilla con otro nombre.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
#Agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/version3.11.0/personalizacion&diff=3101SIU-Guarani/version3.11.0/personalizacion2015-10-14T21:02:00Z<p>Gfranz: </p>
<hr />
<div>== ¿Cómo personalizo el sistema? ==<br />
=== Personalizaciones en Gestión ===<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/activar_personalizaciones|Activar personalizaciones]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/trabajo_diario|Trabajo diario con personalizaciones]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/procesos_personalizables|Procesos que se pueden personalizar]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/formas_de_menu|Distintas formas de ver el menú]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/manejo_de_perfiles|Manejo de perfiles]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/convenciones_sugeridas|Convenciones sugeridas para personalizar]]<br />
** [[SIU-Guarani/Version3.11.0/personalizaciones/cambiar_logo|Cambiar el logo de la Institución]]<br />
** [[SIU-Guarani/Version3.11.0/personalizaciones/requisito_proceso|Crear un requisito de tipo proceso]]<br />
** [[SIU-Guarani/Version3.11.0/personalizaciones/constancias|Personalizar impresiones]]<br />
** [[SIU-Guarani/Version3.11.0/personalizaciones/extender_tablas|Extender tablas]]<br />
<br />
=== Personalizaciones en 3w ===<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/personalizacion_chulupi|Esquema de personalización del Framework Chulupí]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/creacion_operacion_3w|Ejemplo de la creación de una operación]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/operaciones_en_zonas|Operaciones dentro de las zonas]]<br />
* [[SIU-Guarani/Version3.11.0/personalizaciones/personalizacion_de_acceso|Personalización de acceso]]</div>Gfranzhttps://documentacion.siu.edu.ar/wiki/index.php?title=SIU-Guarani/Version3.11.0/personalizaciones/impresiones&diff=3100SIU-Guarani/Version3.11.0/personalizaciones/impresiones2015-10-14T21:00:13Z<p>Gfranz: Actualización de la documentación de plantillas jrmxl en Guaraní, para impresiones en general, no sólo constancias.</p>
<hr />
<div>__TOC__<br />
<br />
== Personalizar impresiones ==<br />
Guarani 3 realiza la impresión de comprobantes y reportes a partir de documentos PDF. Estos son creados utilizando '''[[SIU-Guarani/Version3.11.0/jasper|JASPER]]''', un motor de generación de reportes basado en '''JAVA''' soportado por '''SIU-Toba'''.<br />
<br />
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<br />
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.<br />
<br />
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:<br />
<br />
* '''Lenguaje Sql''':<br />
*: 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.<br />
* '''Lenguaje Xml''':<br />
*: 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''.<br />
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.<br />
<br />
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: <br><br />
<source lang="php" enclose="div"><br />
$path = guarani::get_path_reporte_jasper('plantilla.jasper'); <br />
$report->set_path_reporte($path);<br />
</source><br />
(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.)<br />
<br><br><br />
Aquí también se realizará el pasaje de parámetros a la plantilla con sentencias del estilo: <br><br />
<source lang="php" enclose="div"><br />
$report->set_parametros($params); dónde $params es un arreglo asociativo<br />
</source><br />
Y, para el caso de la segunda alternativa, también se encontrarán las sentencias donde se asocia el xml correspondiente, por ejemplo:<br />
<source lang="php" enclose="div"><br />
$xml = $this→dep('cuadro')→vista_xml(); //Se genera un xml a partir de los datos del cuadro<br />
$report->set_xml(utf8_e_seguro($xml));<br />
</source><br />
<br />
== Personalizar Certificados y Constancias ==<br />
<br />
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.<br />
Para ser más específicos, vamos a dar ejemplos prácticos para personalizar y generar nuevos Certificados en el sistema.<br />
<br />
=== CASO 1: Agregar un nuevo certificado === <br />
'''Los pasos a seguir son:'''<br />
#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:<br />
#* Guardar la constancia con un nombre diferente de los existentes en el directorio : ''$toba_dir/proyectos/guarani/personalizaciones/exportaciones/jasper''<br />
#* 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). Recordar que además de los provistos, se pueden enviar mas parámetros que los anteriormente mencionados.<br />
#* 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.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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. '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br />
#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.<br />
<br />
=== CASO 2: Personalizar un certificado existente ===<br />
Para dar un mayor detalle en esta tarea, a este caso lo vamos a dividir en ''3 sub-casos''.<br><br />
'''<u>IMPORTANTE:</u> 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.''' <br />
<br />
==== Reemplazar la constancia o certificado provisto por el sistema por uno nuevo ====<br />
Este proceso implica realizar algo similar a lo que se debe hacer cuando se desea agregar un certificado del sistema (se agrega una nueva plantilla pero en lugar de asociarla a un nuevo certificado, se la asocia a uno existente). Para esto, realizar los siguientes pasos: <br />
#Realizar todos los pasos del '''"Caso 1"''' expuesto anteriormente (''Agregar un nuevo certificado'') a excepción del punto '''(4)'''.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
==== Cambiar el logo o el texto de una constancia o certificado provisto por el sistema ====<br />
===== Cambiar el texto =====<br />
#Abrir la constancia que se desea modificar (''archivo .jrxml desde iReport v5.6'')<br />
#Realizar las modificaciones correspondientes.<br />
#Guardar la plantilla con otro nombre.<br />
#Compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.<br />
#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''.<br />
#:<u>IMPORTANTE:</u> 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.<br />
#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.<br />
#:<u>ATENCIÓN:</u> 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).<br />
<br />
===== Cambiar el logo =====<br />
Existen tres formas de realizar el cambio del logo:<br />
#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.<br />
#:<u>ATENCIÓN:</u> la imagen debe estar ubicada en un directorio donde apache tenga permisos para acceder.<br />
#Agregar el archivo "''logo_institucion.jpg''" en el directorio: $toba_dir/proyectos/guarani/personalizacion/www/img/<br />
#:<u>ATENCIÓN:</u> Realizando esto la imagen sera adaptada al tamaño definido en la plantilla a modificar y ubicada en el lugar definido en la misma.<br />
#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)<br />
<br />
==== Agregar más datos a un certificado o constancia existente ====<br />
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 '''[[SIU-Guarani/Version3.11.0/personalizaciones/constancias/anexo_constancias|Anexo]]'''.<br><br />
'''<u>IMPORTANTE:</u>''' <br />
* 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.<br />
* 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'''.<br />
* Una vez realizadas las modificaciones, recordar compilarla para generar el archivo ''.jasper'' que utiliza el sistema para la impresión de la constancia.</div>Gfranz