Preinscripcion 3.6 Datos obligatorios

Hola, podrían orientarme para saber como configurar obligatorio el dato correspondiente a Financiamiento de estudios?
Necesitamos que sea obligatorio tildar al menos una de las opciones que se muestran (aportes familiares, planes sociales, trabajo, beca, otra fuente) .
Intenté a través de la Configuración de campos del formulario pero no obtengo este resultado.
Es en la Pantalla Financiamiento de estudios, Sección ¿Cómo costeás tus estudios? del Formulario de Preinscripción.
Muchas gracias.

Hola Nora,

En los campos “Sí / No”, que están representados en la interfaz mediante un checkbox, marcar como obligatorio en el panel de administración no tiene mucho impacto, porque el valor destildado representa una “N”, que es un valor válido (no nulo).

Lo que necesitás hacer requiere de una personalización. En primer lugar, aunque probablemente ya lo hayas visto, te dejo el link de la documentación general de personalizaciones. La personalización podrías realizarla en JavaScript o en PHP. Tal vez en PHP sea un poco más simple. Para ello, deberías personalizar operaciones/censo/financiamiento/form_financiamiento.php, haciendo extender por herencia del original:


<?php

namespace <tu_personalizacion>\operaciones\censo\financiamiento;

use ...

use siu\operaciones\censo\financiamiento\form_financiamiento as form_financiamiento_siu;

class form_financiamiento extends form_financiamiento_siu
{
	...
}


Allí, deberías redefinir la función validar(). En primer lugar, conservar las validaciones originales (invocación al parent, y guardar el resultado). Luego, podrías testear que al menos un valor de un grupo de campos tenga el valor “S”. El valor lo podés obtener con $this->get_dato(‘nombre_campo’). Si no pasa la validación, el mensaje de error se lo podrías pegar al primer campo de la lista como en este boceto:


function validar()
{
	$form_valido = parent::validar();
	
	$validacion_seleccion = ... (tu validación)
	
	if (!$validacion_seleccion) {
		$mensaje = '...';
		$this->agregar_error('primer_campo_de_la_lista', $mensaje);
		return false; // << el formulario no pasa las validaciones
	}
	
	// Si pasó la validación de selección, retornás el resultado de la validación original
	return $form_valido;
}

Probalo y cualquier cosa avisanos.

Saludos!
Fernando

Hola Fernando, recién pude realizar esta personalización. Actualmente estamos en Preinscripción 3.8. La validación se realiza correctamente pero no consigo que aparezca la leyenda indicando que falta seleccionar alguna de las opciones. Cuando no queda seleccionada ninguna de las opciones de Financiamiento y queremos pasar a otro grupo de datos o guardar, aparece directamente el mensaje “Se han encontrado errores. No se pudieron guardar los cambios”. Estaba buscando la forma para que aparezca la leyenda al igual que en el caso de la fecha de nacimiento: cuando se ingresa un año anterior a 1900 aparece debajo del dato una leyenda en rojo además de la otra leyenda (Se han encontrado errores…). Personalicé como vos me indicaste y también probé con el traductor (agregué una leyenda de error en mensajes.es.php personalizada) pero no funcionó.
Espero tus sugerencias. Muchas gracias!
Saludos.

Hola Nora,

¿Querés adjuntar los archivos que tienen que ver con esta personalización puntual y les doy una mirada?

Saludos!
Fernando

¿Resolvieron este tema Nora?

Buenas tardes. Quería comentarles que yo trabajo con Nora, y estoy siguiendo el tema de la personalización de los datos financieros, para hacer que sea obligatorio que ingresen una de la opciones. El problema es en que no le muestra al usuario el mensaje de que debe seleccionar un opción, solo da el mensaje en la parte superior de que ocurrieron errores y no se pudo guardar los datos, que es el mensaje del sistema cuando uno no completa datos obligatorios o los datos no son válidos.
El código de la personalización quedó de la siguiente forma:

<?php namespace unlz\operaciones\censo\financiamiento; use SIU\Chulupi\kernel; use SIU\Chulupi\util\form; use SIU\Chulupi\util\validador; use siu\operaciones\_comun\preinscripcion_form; use siu\operaciones\censo\financiamiento\form_financiamiento as form_financiamiento_siu; class form_financiamiento extends form_financiamiento_siu { //Función agregada para validar que se haya seleccionado al menos una opcion function validar() { $form_valido = parent::validar(); $form_valido = $form_valido & $this->validar_finan(); return $form_valido; } protected function validar_finan() { $valido = true; $validacion_seleccion = $this->get_datos(); if ( ($validacion_seleccion['alu_cos_est_ap_fam'] == 'N') && ($validacion_seleccion['alu_cos_est_plsoc'] == 'N') && ($validacion_seleccion['alu_cos_est_trab'] == 'N') && ($validacion_seleccion['alu_cos_est_beca'] == 'N') && ($validacion_seleccion['alu_cos_est_otra'] == 'N') ) { $mensaje = 'Debe seleccionar una opción'; $this->agregar_error('alu_cos_est_otra',$mensaje); $valido = false; } return $valido; } } ?>

Si alguien me puede guiar y decirme en que estoy equivocado, o que me falta agregar a ese código para que le muestre al usuario la leyenda de que debe seleccionar una opción, estaría muy agradecido.
Saludos, David

Buenas noches, trabajando con el código de la personalización me dí cuenta que el mismo funciona bien. El tema es que en la ventana de financiamiento, solo hay casilla de chequeo, solo la última de estas habilita la vista de un textbox. En ese caso, si yo refiero el error a ese item, me muestra el mensaje. Quería saber si tengo otra forma de enviar un mensaje al usuario indicando que debe seleccionar una opción.
Saludos.