Personalizar datos censales

Buenas tardes. Queria consultarles cúales serian los pasos para agregar (personalizar) campos censales y que aparecan en autogestion para que completen los alumnos. Gracias
Version Guarani 3.20.2


Screenshot_20.png

Screenshot_20.png

Hola Juan,

En la operación » Administración » Datos Censales » Configurar Campos de Datos Censales (interfaz alumno) podes decidir que campos serán visibles y/u obligatorios. Autogestión (interfaz alumno) usa cache, quizás por eso no ves reflejados los cambios, podes ejecutar el comando bin/guarani limpiar_cache o reiniciar el contenedor (en caso de usar Docker) o el servidor Apache para que limpie la cache.

saludos.
2

Leonel, gracias por tu respuesta. Lo que necesitaria es agregar nuevos campos. Ya logré que se vean desde la operacion en Gestion que mencionas y los agregué en autogestion al formulario en la seccion “datos laborales” ya que los necesito dentro de esa seccion. Lo que esta fallando es que no se estan guardando en la base. Los coloqué en la tabla mdp_datos_economicos. Cuando presiono guardar no arroja ningun error y aparece el cartel de que se guardaron los datos correctamente, pero al verificar en la base, los campos estan en null.

Gracias

Revisa la documentación sobre ¿Cómo personalizo el sistema?.

En Gestión:

  1. Agregar los campos nuevos en la tabla mdp_datos_censales_config, ej:

INSERT INTO mdp_datos_censales_config (tabla, campo, etiqueta, orden, visible, obligatorio)
						       VALUES ('mdp_datos_economicos', 'sueldo', '¿Cuanto cobras?', 79, 'S', 'N');

  1. Agregar las nuevas columnas en la tabla correspondiente, ej: tabla mdp_datos_economicos.
  2. En php/operaciones/administracion/datos_censales/config_campos/ci_config_campos.php vas a tener que incrementar la variable $this->indice_final de la sección correspondiente para que tome los nuevos campos. Ej:

	function conf__datos_laborales()
	{
		$this->indice_inicial = 70;
		$this->indice_final = 79;
	}

  1. Si los campos tienen dependencias entre si lo podes configurar en php/operaciones/administracion/datos_censales/config_campos/form_ml_config_campos.php.

En Autogestión:

  1. Agregar el nuevo campo en el formulario, ej: src/siu/operaciones/datos_censales/datos_laborales/form_datos_laborales.php.
  2. Mostrar el campo en el HTML src/siu/operaciones/datos_censales/datos_laborales/default.twig.
  3. En la función evt__guardar de src/siu/modelo/transacciones/datos_censales.php podes preprocesar los datos antes de que se almacenen en la DB.

Todo esto lo tenes que hacer personalizando, no modifiques los archivos del core.

saludos.
4

Leonel, lo que me estaba faltando era agregar los campos a la funcion get_campos_dc de la clase siu\operaciones\datos_censales_comun\util_form_censo, y en la funcion get_campos_secciones.
Ahora se guardan en la base, pero no se ven reflejados en el formulario, ni al guardarlos, ni entrando al rato. No se si me explico

Gracias

Otro dato, en el metodo generar_definicion de la clase src/siu/operaciones/datos_censales/datos_laborales/form_datos_laborales.php, cuando asigno por ej en $this->set_campo(‘nombre_campo’, array(form::label => ‘datos_censales.nombre_campo’ … )) no me muestra el nombre del campo en el formulario. No se si esto tiene que ver con que no muestra en la vista los datos de la base. Me falta agregar los campos en otro lado mas?

Gracias

Hola Juan,

Te toma como ejemplo el dato censal Describí la tarea que realizás de la solapa Datos laborales:

Archivo src/siu/operaciones/datos_censales/_comun/util_form_censo.php, lo tenes que agregar en las funciones get_campos_dc y get_campos_secciones dentro de una subsección como ser datos_laborales_sit.

Luego lo debes agregar al formulario src/siu/operaciones/datos_censales/datos_laborales/form_datos_laborales.php, ej:


		$this->set_campo('trabajo_tarea_descripcion', array(
			form::label			=> 'datos_censales.trabajo_tarea_descripcion',
			form::filtro		=> validador::TIPO_TEXTO,
			form::obligatorio	=> false,
			form::elemento		=> array('tipo' => 'text'),
			form::clase_css		=> 'input-largo',
			form::largo			=> 255
		));

La etiqueta ‘datos_censales.trabajo_tarea_descripcion’ la podes encontrar en el archivo src/siu/mensajes/mensajes.es.php:


	'datos_censales.trabajo_tarea_descripcion' => 'Describí la tarea que realizás',

Luego lo debes agregar al TWIG src/siu/operaciones/datos_censales/datos_laborales/default.twig, ej:

{{ form.control_group('trabajo_tarea_descripcion') }}

NOTA: Si estas en modo producción debes ejecutar el comando bin/guarani compilar_recursos para que compile los TWIGS. Luego ejecuta bin/guarani limpiar_cache por las dudas.

Todo eso lo debes hacer personalizando.

Ahora bien, vas a tener que personaliza la función guardar_datos_laborales de src/siu/modelo/transacciones/datos_censales.php, ya que por lo que veo guarda en la tabla mdp_datos_economicos y no en la tabla personalizada, podría quedar algo asi:


	protected function guardar_datos_laborales($datos)
	{       parent::guardar_datos_laborales($datos);
		$clave = array('dato_censal' => $this->get_id_dato_censal());
		$datos_pers = [];
		$datos_pers['campo_pers'] = $datos['campo_pers'];
		abm::modificacion('mdp_datos_economicos_pers', $datos_pers, $clave);
	}

Ya debes tener un registro preparado en la tabla mdp_datos_economicos_pers con la columna dato_censal haciendo referencia a la columna dato_censal de mdp_datos_censales (foreing key).

saludos.
4

Leonel,
Todos los pasos que me indicaste, ya estan hechos y va todo bien (estoy trabajando sobre la personalizacion, sin tocar archivos del core). Una sola cosa, con el tema de recuperar los datos en la vista, creo que sucede lo siguiente. Adjunto captura del metodo que no esta trayendo los campos nuevos a la vista, creo que por eso no se muestran. El método en cuestion es info__datos_censales dentro de siu/modelo/transacciones/datos_censales.php
Que a su vez invoca al metodo get_datos_censales dentro de siu/modelo/datos/db/datos_censales.php. Es decir que debo agregar al select los campos nuevos.
Qué archivos debo personalizar para que este último metodo sea invocado desde la personalizacion.
Gracias


Screenshot_22.png

Screenshot_22.png

Hola Juan,

Claro, la función info__datos_censales de src/siu/modelo/transacciones/datos_censales.php llama a la función get_datos_censales de src/siu/modelo/datos/db/datos_censales.php, vas a tener que personalizar esta ultima para agregar el/los campos que agregaste, ej:


	/**
	 * 
	 * parametros: persona
	 * cache: memoria
	 * filas: 1
	 */
	function get_datos_censales($parametros)
	{
		$persona = $parametros['persona'];
		
		$sql = "SELECT 
					mdp_personas.identidad_genero_otro,
					mdp_personas.identidad_genero,
					*****************
					mdp_datos_discapacidad.otra_apoyo_vida_diaria,
					mdp_datos_discapacidad.informacion_importante,

					mdp_datos_economicos_pers.campo_pers <---> Se agrega columna al SELECT

					FROM 
					mdp_datos_censales
					*****************
					JOIN mdp_datos_economicos_pers ON mdp_datos_economicos_pers.dato_censal = mdp_datos_censales.dato_censal <---> Se agrega tabla al JOIN

Recorda luego de ejecutar el comando bin/guarani generar_catalogo .

saludos.
2