Personalizacion de Preinscripcion - Modificacion consultas BDD de Gestion

Buenas,

Estamos encarando las personalizaciones para agregar turno elegido, en base a los que se ofrecen según modalidad / propuesta.

La idea es desde Gestion cargar los turnos de cada propuesta, y obtener esa informacion tanto desde Preinscripcion como desde Autogestion.

Fui modificando el formulario, los controles visuales y varias cosas, pero al momento de implementar la consulta nueva a Gestion, no puedo descubrir cual es la forma correcta de personalizar el archivo. Es decir, como tengo que hacer para tener dentro de la estructura de carpetas de personalizacion una con la consulta nueva y que el resto las recupere del archivo original.

View Issue

Hola Romina,

Cuando podamos lo vemos con los técnicos y te orientamos.

Saludos

Buen día Romina,

En qué versión se encuentran actualmente?, podrías comentarnos qué están queriendo personalizar, y qué archivo o función en particular?

Gracias

Como estas? La versión es la 3.22.2

La idea es agregar, en el popup que selecciona la propuestas, el campo turno.

Por lo tanto necesito una nueva funcion (get_turnos_propuestas) que consulte la información a Gestion. Seria muy similar a get_modalidades_propuesta que se encuentra en modelo/g3/consultas_bd/propuestas.php

Hola @rmansilla

El Turno preferido lo puede seleccionar el aspirante en la solapa Datos adicionales, se termina guardando en la columna sga_preinscripcion.turno_preferido. Si lo queres hacer obligatorio lo podes hacer desde la operación Configuración de campos de formulario del perfil administrador de Preinscripción, te adjunto capturas:

Igualmente te dejo donde se encuentra el popup para seleccionar la propuesta: src/siu/operaciones/censo/propuesta/selector_propuesta.twig.

Si, comprendo esa parte. El tema es que en ese lugar el turno elegido es genérico y lo que me piden es que segun la propuesta elegida, se habiliten solo los turnos que existen.

Se me ocurrio agregarlo en el popup, pero podria llegar a ser desde el lugar que decis. Igual, entiendo que tendria que agregar la consulta nueva y vuelvo al mismo problema de como manejar la personalizacion.

Veo que en Gestión operaciones Administrar Propuestas Formativas y Administrar Planes de Estudio no da la opción de seleccionar el turno, si da la opción para cursadas y exámenes.

Para personalizar pueden seguir ¿Cómo personalizo el sistema? o también estos videos de la Playlist Personalizaciones SIU-Guaraní.

Te dejo que cosas tenes que ver:

src/siu/operaciones/censo/propuesta/selector_propuesta.twig: es donde tenes que agregar el control_group para el turno:

src/siu/operaciones/censo/propuesta/form_propuesta.php: es el form builder.

src/siu/operaciones/censo/propuesta/pagelet_propuesta.js: JS para la cascada de selección usando AJAX, fíjate como se hace con Ubicación y Modalidad.

src/siu/operaciones/censo/controlador.php: Dichos AJAXs llaman a este controlador.

src/siu/operaciones/censo/pagelet_propuesta.php: para generar las URLs y que las pueda usar el js, ej:

$this->add_var_js('url_propuestas', kernel::vinculador()->crear('censo', 'cascada_propuestas'));
$this->add_var_js('url_ubicaciones', kernel::vinculador()->crear('censo', 'cascada_ubicaciones'));
$this->add_var_js('url_modalidades', kernel::vinculador()->crear('censo', 'cascada_modalidades'));

Luego dentro de src/siu/modelo/g3/consultas_bd/ tenes que agregar una clase de consulta que hagas las queries.

Todo esto lo tenes que hacer personalizando, no debes tocar nada dentro de src/siu/, sino todo dentro de src/pers/.

Saludos.

Muchas gracias por la respuesta. Los primeros pasos parece que los descule bien, aunque voy a revisar si me falta algo, hasta visualizar el campo turno en el popup voy bien.

Con respecto a esto, como tengo que hacer? Probe creando en src/pers/general/modelo/g3/consultas_bd/propuestas.php y creando la funcion. Pero no pude llamarla.

Tambien probe agregar en la estructura de carpetas personalizadas el archivo g3.php que devuelve la interfaz y el archivo interface_propuestas. Pero o estoy armando mal los encabezados, o no los estoy llamando bien.

@rmansilla

Podes crear la clase src/pers/unla/modelo/g3/consultas_bd/turnos_propuesta.php:

<?php

namespace unla\modelo\g3\consultas_bd;

use SIU\Chulupi\kernel;
use siu\modelo\g3\consultas_bd\entidad_g3;

class turnos_propuesta extends entidad_g3
{
	protected static $instancia;

	static function instancia()
	{
		$clase = substr(strrchr(get_class(), "\\"), 1);
		if (!isset(static::$instancia)) {
			static::$instancia = kernel::localizador()->instanciar("modelo\\g3\\consultas_bd\\$clase");
		}
		return static::$instancia;
	}
}

y src/pers/unla/modelo/g3/g3.php:

<?php

namespace unla\modelo\g3;

use SIU\Chulupi\kernel;
use unla\modelo\g3\consultas_bd\turnos_propuesta;

use siu\modelo\g3\g3 as g3_siu;

class g3 extends g3_siu
{
	
	/**
	 * Instancia el objeto de consultas de Parámetros mediante el patrón Singleton.
	 *
	 * @return turnos_propuesta
	 */
	static function turnos_propuesta()
	{
		$modo_consultas = kernel::proyecto()->get_modo_consultas_g3();
		return kernel::localizador()->instanciar_singleton("modelo\\g3\\$modo_consultas\\turnos_propuesta");
	}

}

Luego podes usarlo así:

use unla\modelo\g3\g3;
g3::turnos_propuesta()->funcion_ejemplo($par1, $par2);

funcion_ejemplo la tenes que definir dentro de src/pers/unla/modelo/g3/consultas_bd/turnos_propuesta.php.

Perfecto, voy por ese camino. Gracias

Ya pude avanzar con todo lo que me dijeron y va bien, pero me surge otra pregunta.

En el config de preinscripcion esta el acceso a la BDD de guarani gestion:

‘modo_consultas_g3’ => ‘consultas_bd’,
‘database_guarani’ => [
‘vendor’ => ‘pgsql’,
‘dbname’ => ‘guarani3’,
‘schema’ => ‘negocio’,
‘host’ => ‘xxxxx’,
‘port’ => ‘xxxxx’,
‘pdo_user’ => ‘xxxx’,
‘pdo_passwd’ => ‘xxxxx’,
],

Viendo la documentación para personalizar Gestion (https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.22.0/personalizaciones/extender_tablas) entiendo que no esta bueno crear una tabla nueva en el esquema NEGOCIO, sino que tendria que ser en NEGOCIO_PERS.

Como hago para consultar a dicho esquema desde preinscripcion?

Listo, solo con indicar el esquema en la consulta funcionó.

Exacto @rmansilla

Tenes dos opciones:

  1. Usando search_path, ej:
SET search_path TO negocio_pers,negocio;

Primero va a buscar a negocio_pers y si no encuentra la tabla buscará en negocio.

  1. La segunda opción es poner como prefijo negocio_pers, ej:
SELECT * FROM negocio_pers.tabla_pers;

Saludos.

Hola! Sigo con la misma personalizacion. Desde el modulo pude hacer todas las modificaciones necesarias ya. Pero desde la parte de Autogestion, no logro personalizar la impresion de la ficha de preinscripcion.

Si modifico esta clase me toma los cambios:

image

Pero cuando quiero hacerlo con la estructura de personalizacion correcta no lo logro.

De esta forma no me funciono:

Y así tampoco,

image

Alguna idea?

@rmansilla Vos deberías personalizar en personalizacion/php/nucleo/_lib/guarani_ficha_preinscripcion.php de Guaraní Gestión, luego debido a la Interconexión entre SIU-Guaraní Gestión y 3w al ejecutar svn update en 3w vas a ver los cambios en src/pers_gestion/php/nucleo/_lib/guarani_ficha_preinscripcion.php (es como si fuera un link simbólico).

Luego dicha clase se utiliza en la función accion__generar_pdf de src/siu/operaciones/preinscripcion/controlador.php.

Contame si con eso toma dichas personalizaciones.

Saludos.

Bien, pude hacer que tome los cambios con lo que me sugeriste. Ahora lo que se me complica es la consulta a la BDD para traer el dato extra en la impresion.

Desde Gestion hice la personalizacion de la clase co_preinscripciones, con las configuraciones en toba y la estructura sugerida. Desde allí la impresion esta bien y con el dato.

Cuando traigo en 3w el pers_gestion actualizado, la ficha sale modificada (con el espacio que agregue para el dato nuevo) pero esta llamando a la clase de consulta (co_preinscripcion) original y no la personalizada. En la estructura de carpetas de pers_gestion figura la nueva clase de consulta, pero no la esta llamando desde el metodo de imprimir.

Que me puede estar faltando?

Encontré esta referencia en otro FORO:

En el Toba Editor, anda a la solapa Datos => Consultas PHP. Luego hace click en el icono azul (el de la derecha de todo) de co_certificados, cámbiale el Punto de Montaje y el Archivo a lo personalizado.

Luego de esto corre el comando bin/guarani pers_autoload. Comitea en Gestión, y hace un svn up en 3W para ver los cambios.

Lo hice, y se actualizo correctamente el autoload con la nueva clase, y la tengo en 3w.

Pero sigue llamando a la clase consulta original. Log:

– ############# se incluyo la clase co_preinscripciones del co co_preinscripciones ##############

nucleo/matriculas/inscripciones/propuestas_preinscripcion/co_preinscripciones.php


Hola @rmansilla

Te dejo documentación:

Personalizaciones SIU-Guaraní

Personalizar un reporte - Modificar la clase de consulta

Ojo, en el Toba Editor solapa Consultas PHP el Identificador debe seguir siendo co_preinscripciones, lo único que cambia es el Archivo y la Clase, ya que luego en el código se llama así toba::consulta_php('co_preinscripciones')->funcion($parametros);.

Saludos.

Como andas Leo? Se me habia pasado el autoload, pero esta como decis:

Gracias por la captura!!!

¿como tenes en Autogestión src/siu/modelo_g3/nucleo/g3w_autoload.php y src/siu/modelo_g3/nucleo/g3w_clases_consultas.php?

Revisa Interconexión entre SIU-Guaraní Gestión y 3w, ¿ejecutaste bin/guarani pers_autoload?