Hemos migrado estudiantes y no tenemos el dato del colegio secundario, ni el título secundario. He visto que el estudiante lo puede cargar por autogestión. ¿Hay alguna forma de hacer que ese campo sea obligatorio? Queremos hacer una campaña de actualización de datos censales para mejorar las estadísticas.
En la operación CONFIGURAR CAMPOS DE DATOS CENSALES (INTERFAZ ALUMNO) no aparece la pestaña que ven los estudiantes llamada “Estudios” para ponerlo como obligatorio.
Estamos en la versión 3.13 próximos a migrar a la 3.15.
Los datos de estudios no se pueden configurar desde Gestión (operación CONFIGURAR CAMPOS DE DATOS CENSALES (INTERFAZ ALUMNO)), ya que no se consideran datos censales en si.
Lo que podes hacer es personalizar la obligatoriedad de dichos campos en la función generar_definicion del archivo src/siu/operaciones/datos_censales/datos_estudios/form_datos_estudios.php (esto en 3W), lo podes personalizar de la siguiente forma:
Personalizar el archivo replicando la estructura de directorios dentro de pers. El archivo personalizado quedaría en src/pers/unx/operaciones/datos_censales/datos_estudios/form_datos_estudios.php
Extender del archivo del SIU, y personalizar la función generar_definicion:
<?php
namespace unx\operaciones\datos_censales\datos_estudios;
use SIU\Chulupi\util\form;
use SIU\Chulupi\util\validador;
use siu\operaciones\datos_censales\datos_estudios\form_datos_estudios as form_datos_estudios_siu;
class form_datos_estudios extends form_datos_estudios_siu
{
protected function generar_definicion()
{
parent::generar_definicion(); // <===> Fundamental para que cargue la configuración del SIU
// Desde acá se sobrescribe/personaliza lo del SIU
$this->set_campo('colegio', array(
form::label => 'datos_censales.est.colegio',
form::obligatorio => true,
form::filtro => validador::TIPO_TEXTO,
form::elemento => array('tipo' => 'hidden'),
));
$this->set_campo('colegio_descr', array(
form::label => 'datos_censales.est.colegio',
form::obligatorio => true,
form::filtro => validador::TIPO_TEXTO,
form::elemento => array('tipo' => 'text'),
form::clase_css => 'js-input js-campo_descr',
));
$this->set_campo('titulo', array(
form::label => 'datos_censales.est.titulo',
form::obligatorio => true,
form::filtro => validador::TIPO_TEXTO,
form::elemento => array('tipo' => 'hidden'),
));
$this->set_campo('titulo_descr', array(
form::label => 'datos_censales.est.titulo',
form::obligatorio => true,
form::filtro => validador::TIPO_TEXTO,
form::elemento => array('tipo' => 'text'),
form::clase_css => 'js-input js-campo_descr',
));
}
}
Fíjate que los puse como obligatorios (form::obligatorio => true,). Proba con eso y cualquier cosa nos avisas.
Muchas gracias. Hicimos la prueba y cuando el estudiante, por autogestión, elige la solapa “Estudios” y luego >>>Agregar Estudio, no deja guardarlo si no se completan los datos correspondientes, asique funcionaría correctamente.
Ahora pregunto: hay alguna forma de poner que sea obligatorio “Agregar Estudio”, porque lo anterior solo funcionaría cuando se va a agregar un estudio, pero no pasa nada si no se ha agregado un estudio.
Podrías controlar que no pueda guardar ni confirmar, a no ser que haya agregado un estudio. Dicho control lo podes hacer personalizando el archivo src/siu/operaciones/datos_censales/controlador.php, específicamente las funciones accion__guardar, accion__confirmar y todas las accion__guardar_xxx.
Allí debes hacer un control, y solo dejar guardar si existen datos de estudios para esa persona (tabla mdp_datos_estudios).
Ojo que en la función accion__guardar_edicion, cuando $formulario es “datos_estudios” no deberías controlar, ya que aquí es donde se agregan los estudios.