[SOLUCIONADO]Validacion de EFs

Saludos,

El día de hoy, me encontré con problema que no puedo solucionar. Estoy trabajando con la version de toba: 2.6
Lo que quiero hacer es, básicamente, validar un par de fechas del tipo inicio-fin donde la fecha de “inicio” tiene que ser menor o igual que la de “fin”; al tener dos campos ef del tipo fecha, definí una funcion que me genera el js genérico


function jsValidarFechas($fechaInicio, $fechaFin)
	{
		$jsStr = "
					var val_ff = this.ef('{$fechaFin}').get_estado();
					var val_fi = this.ef('{$fechaInicio}').get_estado();

					if ((val_ff == '') && (val_fi == ''))
					{
						return true;
					}
					var fecha1 = new Date(val_fi.split('/').reverse().join('-'));
					var fecha2 = new Date(val_ff.split('/').reverse().join('-'));

					return fecha1 < fecha2;
				";
		return $jsStr;
	}

Entonces puedo así, hacer el siguiente código para el evento validar de los ef:


function extender_objeto_js()
	{
		echo "//---- Validacion de EFs -----------------------------------
		
		{$this->objeto_js}.evt__fecha_inicio__validar = function(fila)
		{"
			. $this->jsValidarFechas('fecha_inicio', 'fecha') .
		"}
		
		{$this->objeto_js}.evt__fecha__validar = function(fila)
		{"
			. $this->jsValidarFechas('fecha_inicio', 'fecha') .
		"}
		";
	}

El problema está en cuando no valida y toba genera el mensaje de error; por más que tengan valores, me genera la siguiente notificacion.

Fecha de inicio de vigencia null Fecha de vencimiento de vigencia null

Si, dentro del código de validación yo pongo algún tipo de mensaje mediante el elemento js “notificacion”, lo único que me hace es agregar tal mensaje , i.e. sigue diciendome que los campos son null, al validar, y además me da el mensaje que le pongo.
Entonces, pregunto:
¿Existe alguna manera de poder cambiar el mensaje por defecto que pone toba al no validar un campo?

Desde ya, muchas gracias.

Hola Ramiro,

Esta parte la podes hacer mas sencilla, los efs de tipo fecha ya devuelven un objeto Date mediante el metodo fecha(). Con lo cual te podes ahorrar parte de la conversion.

Entonces puedo así, hacer el siguiente código para el evento validar de los ef:

function extender_objeto_js()
	{
		echo "//---- Validacion de EFs -----------------------------------
		
		{$this->objeto_js}.evt__fecha_inicio__validar = function(fila)
		{"
			. $this->jsValidarFechas('fecha_inicio', 'fecha') .
		"}
		
		{$this->objeto_js}.evt__fecha__validar = function(fila)
		{"
			. $this->jsValidarFechas('fecha_inicio', 'fecha') .
		"}
		";
	}

El problema está en cuando no valida y toba genera el mensaje de error; por más que tengan valores, me genera la siguiente notificacion.

Fecha de inicio de vigencia null Fecha de vencimiento de vigencia null
Estas trabajando con un form comun o con un ML?.. en el ultimo caso, te estaria faltando un parametro previo a la fila que te indica si el disparo es inicial o se produce por una interaccion del usuario. Por otro lado, por como se disparan justamente los eventos.. en el momento que completaste la primera fecha, tenes un disparo de validacion.. pero ahi aun no podes asegurar que la fechaFin tenga valor, por tanto la validacion va a ser contra una fecha nula. La validación la deberias realizar unicamente cuando tenes ambas fechas.
Si, dentro del código de validación yo pongo algún tipo de mensaje mediante el elemento js "notificacion", lo único que me hace es agregar tal mensaje , i.e. sigue diciendome que los campos son null, al validar, y además me da el mensaje que le pongo. Entonces, pregunto: ¿Existe alguna manera de poder cambiar el mensaje por defecto que pone toba al no validar un campo?
Para cambiar el mensaje de error, deberias redefinir el metodo validar del ef_editable_fecha en Js y desde alli setear el msg de error que desees, tene en cuenta que dicha modificacion va a afectar a todos los campos del tipo fecha, sino tenes que redefinir el de la instancia particular... pero eso es bastante mas rebuscado.

Saludos

Muchas gracias por la respuesta.
Funcionó perfecto!