Problema Reinscripcion Anual Alumnos con VISADO

Buenas tardes, tenemos un problema en particular con la reinscripcion de los alumnos que tienen en datos censales información de las fechas del VISADO.
Cuando el alumno realiza la reinscripcion en G3W tira el siguiente mensaje:
“La página no recibió la información necesaria, ejecutá la operación nuevamente”
Luego mirando el archivo error.log del PHP el mensaje especifico es:

[26-Feb-2015 12:47:21] PHP Notice: La sentencia SQL: EXECUTE PROCEDURE sp_i_dc_princ(‘ECONO’,‘22348’,‘1’,‘N’,‘jp*****@hotmail.com’,‘TEMPORAL’, to_date(‘œ]J1^ê’,‘œ]J1^ê’), to_date(‘œ]J1^ê’,‘œ]J1^ê’),‘R’,‘2’,'Rawson ',‘0000’,‘5’,‘a’,NULL,‘17052’,‘7600’,'0229111111 ','13 ',‘1146’,NULL,NULL,NULL,‘17086’,‘7607’,'423071 ',‘Francisco Cipo…’,‘Rawson’,‘2’,NULL,NULL,NULL,‘17086’,‘7600’,'2291522222 ',‘1’,‘0-2291-15-22222’,‘MOVI’,‘2’,‘N’,‘0’,‘0’,‘1’,NULL,NULL); provocó error nro: -202 [An illegal character has been found in the statement.

Claramente está fallando con las fechas, tenemos instalado la version 2.7 de Guarani

Muchas Gracias.

Hola Pablo, por lo que estuve viendo en el código de la versión 2.7.0, el error se está dando al querer actualizar los datos censales.

Si te fijás en: www/a_alumnos/updateDatosCens.php, allí se arma el execute de sp_i_dc_princ, con todos los parámetros correspondientes a los datos censales. Los datos correspondientes a las fechas de otorgamiento y vencimiento de la visa, se cargan en $strSql_1, donde cada dato pasa previamente por la función ‘check’, definida en el mismo archivo php.
Para el caso que sea fecha, como ves hace una validación:

    if ($key  == "vencimiento_visa" || $key  == "otorgamiento_visa" || $key == "fecrespreotorg" || $key == "fecresprevenc" ) {
	  $fecha_control = date($_SESSION["ses_formato_fecha_server"], cadena_a_mktime($parametros[$key],$_SESSION["ses_formato_fecha_server"] ));
      return " to_date('".$fecha_control."','" . $_SESSION["ses_formato_fecha_motor"]. "')";

La función cadena_a_mktime está en www/library/std_functions.lib.php, sugiero que corrobores los valores que entran a dicha función, para determinar porqué el date() está generando una salida con formato incorrecto.

Yo intenté reproducir el caso y no tuve inconvenientes para grabar los datos censales de alumnos con visa y realizar correctamente su reinscripción anual. Los parámetros de formato fecha de motor y server que tengo en mi ambiente son:
[“ses_formato_fecha_server”]=> string(5) “d/m/Y”
[“ses_formato_fecha_motor”]=> string(8) “%d/%m/%Y”

Avisanos si podés detectar cuál es inconveniente, y sino, lo seguimos analizando

Hola Juliana, estuve depurando un poco el código y llegue al error creo.
El SP que esta devolviendo basura es el de informix:

execute procedure a807ag_formfecweb()

Que devuelve estos dos valores, donde el primero es basura: ']J1^ê’ , 12/31/1987

Te copio el script:

create procedure “dba”.a807ag_formfecweb()
returning varchar(10), date;
define fecha date;
define vc_fecha varchar(10);
begin
let fecha=to_date(‘31-12-1987’, ‘%d-%m-%Y’);
let vc_fecha = to_char(fecha);
return vc_fecha, fecha;
end ;
end procedure

Seguimos en contacto, saludos.

Pablo.

Diego, te pido que agregues el siguiente código en www/a_alumnos/updateDatosCens.php, dentro de la función ‘check’ y nos pases la salida correspondiente a las claves: otorgamiento_visa y vencimiento_visa.


	print_r("key:  ");
	print_r($key);
	echo '<p></p>';

	print_r("ses_formato_fecha_server:  ");
	print_r($_SESSION["ses_formato_fecha_server"]);
	echo '<p></p>';

	print_r("ses_formato_fecha_motor:  ");
	print_r($_SESSION["ses_formato_fecha_motor"]);
	echo '<p></p>';

	print_r("cadena_a_mktime:  ");
	print_r(cadena_a_mktime($parametros[$key],$_SESSION["ses_formato_fecha_server"] ));
	echo '<p></p>';

	print_r("date:  ");
	print_r(date($_SESSION["ses_formato_fecha_server"], cadena_a_mktime($parametros[$key],$_SESSION["ses_formato_fecha_server"] )));
	echo '<p></p>';	

Por otro lado, cuál es la salida de la ejecución de las siguientes consultas desde SQL Editor?

select to_date('31-12-1987', '%d-%m-%Y') from systables where tabid  = 1;
select to_char(to_date('31-12-1987', '%d-%m-%Y'))  from systables where tabid  = 1;

Por último, la variable DBDATE la tenés seteada en DMY4/ ?

Esta es la primera vez que les aparece este tipo de error?
Aguardo novedades

Hola Juliana, con respecto a lo que me preguntabas no hay muchos alumnos con Visado (alrededor de 50 por Facultad) y es la primera vez que nos está pasando esto.
Lo que pudimos detectar y esto es lo mas grave es que muchos de los ingresantes del año pasado y de ese completan dichos campos del formulario de ingreso como las fechas de otorgamiento y vencimiento de la Tarjeta VISA!!!

Al margen del error en la carga por parte del alumno el error existe, te paso los datos solicitados:

select to_date('31-12-1987', '%d-%m-%Y') from systables where tabid = 1; 1987-12-31 00:00:00.00000

select to_char(to_date(‘31-12-1987’, ‘%d-%m-%Y’)) from systables where tabid = 1;
1987-12-31 00:00:00

Función Check:

key: tipo_visa ses_formato_fecha_server: m/d/Y ses_formato_fecha_motor: %m/%d/%Y cadena_a_mktime: date: 12/31/1969 key: otorgamiento_visa ses_formato_fecha_server: m/d/Y ses_formato_fecha_motor: %m/%d/%Y cadena_a_mktime: 48135600 date: 07/12/1971 key: vencimiento_visa ses_formato_fecha_server: m/d/Y ses_formato_fecha_motor: %m/%d/%Y cadena_a_mktime: 48135600 date: 07/12/1971

Por último una obviedad, pero no tengo/encuentro la variable DBDATE, donde lo puedo mirar?

Muchas Gracias, seguimos en contacto.

Saludos,

Pablo.

Pablo, parecen estar bien las variables del debug. El valor de ‘date’ viene con un valor del tipo fecha y no los caracteres extraños. Ustedes no personalizaron nada en estas funciones, no?

Lo único que veo de distinto a mi ambiente, es el formato de la fecha, lo cual lo podés modificar cambiando el DBDATE.

Por la variable DBDATE, en el setnet 32, podés fijarte en la solapa ENVIRONMENT por esa variable. (adjunto imagen)
Sino, si tienen el server en Linux, correr el comando export DBDATE=DMY4/ en la consola.

Fijate de cambiar el valor de la variable por DMY4/ y volver a probarlo.

Con respecto a los datos de la tarjeta VISA, dónde los llenan? el formulario de ingreso es el del sistema Preinscripción?

Aguardo novedades


setnet.png

setnet.png

Hola Juliana, por lo que pude ver el error está en el SP “a807ag_formfecweb()” haciendo un DROP y un CREATE del mismo se solucionó, pero no se el motivo de por qué estaba funcionando así.
Lo de la variable nunca lo cambié así que se podría decir que esta solucionado.
La confusión del aspirante en la carga del dato tarjeta VISA por VISADO Extranjero está en la página de Preinscripción cuando se anota el Ingresante.

Saludos.

Pablo.

Pablo, a lo mejor en algún momento modificaron algo de ese Stored e influyó en este tema de las fechas.
Si funciona bien con el formato de DBDATE que tienen configurado, no hace falta que lo cambien.
Y con respecto a lo de los datos de Preinscripción, lo voy a informar acá a ver si se puede hacer algún ajuste o aclaración especial para siguientes versiones.
Cualquier otra consulta quedo a su disposición.
Saludos.