Me da error de nulo en ef_editable_fecha en toba 3.4

Quiero hacer un filtro entre dos fechas (fecha desde y fecha hasta) y en fecha hasta pongo la fecha del día y dejo el ef como solo lectura, pero cuando hago clic en el botón filtrar me da error de ef nulo en fecha hasta.
Adjunto captura de pantalla:


Tengo una extensión del formulario de filtro donde valido que la fecha desde sea menor que fecha hasta, este es el código:

<?php
class form_cheques extends matger_ei_formulario
{
	//-----------------------------------------------------------------------------------
	//---- JAVASCRIPT -------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function extender_objeto_js()
	{
		echo "
		//---- Validacion de EFs -----------------------------------
		
		{$this->objeto_js}.evt__fecven_hasta__validar = function()
		{
		    if(this.ef('fecven_desde').get_estado() != apex_ef_no_seteado &&
		    this.ef('fecven_hasta').get_estado() != apex_ef_no_seteado) 
			{
				if(this.ef('fecven_desde').fecha() > this.ef('fecven_hasta').fecha())
				{
					this.ef('fecven_desde').set_error('Debe ingresar una fecha menor');
				}
			}
		}
		";
	}

}
?>

Por favor diganme donde está el error por el que me da error de valor nulo cuando no lo es.

Hola Matias,

tenes 2 inconvenientes en el snippet que veo :

  • apex_ef_no_seteado suele utilizarse con los ef_combo, ef_popup, etc.. en este caso para una fecha o tenes valor.. o no lo tenes. Por ende el primer condicional no esta chequeando realmente nada.

  • la funcion fecha() internamente hace validacion de estado y de valor, si alguno de ambos chequeos falla… retorna null, que entiendo debe ser lo que te esta complicando.

Por otra parte, tene en cuenta que estas necesitando validar el estado para hacer la validacion… lo cual hace que sea un poco complicado por no decir recursivo. Yo haria algo asi

function extender_objeto_js()
	{
		echo "
		//---- Validacion de EFs -----------------------------------
		
		{$this->objeto_js}.evt__fecven_hasta__procesar= function(es_inicial)
		{
                        if (! es_inicial) {     //Se ejecuta ante un cambio por parte del usuario
                                 var desde = this.ef('fecven_desde').fecha();
                                 var hasta = this.ef('fecven_hasta').fecha();
                                 var necesita_chequeo = (null !== desde && null !== hasta);

				if(necesita_chequeo && desde > hasta)	{
					this.ef('fecven_desde').set_error('Debe ingresar una fecha menor');
				}
                       }
		}
		";
	}

Variables mas variables menos, eso deberia realizar algo equivalente a lo que buscabas estimo.

Saludos

¿Cómo puedo solucionar este error?
Hice lo que me mandaste pero me sigue validando como null la fecha hasta.
Envío captura de pantalla:

Ya descubrí cual era el error, el evento de validación del ef debe devolver true para que no de error de valor nulo.