error en el notif_solicitudes_sube

hola! estamos probando en test el boleto estudiantil (nunca lo tuvimos aún) y cuando corremos el comando notif_solicitudes_sube nos dice esto:

" Se enviaran 2 solicitud/es a sube.
cURL error 60: SSL certificate problem: certificate has expired (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)PHP Warning: Invalid argument supplied for foreach() in /usr/local/proyectos/guarani3190A/php/extension_toba/guarani_modelo.php on line 2117"

Pareciera que el servidor de sube no tuviera el certificado, pero desde allá me dicen que es un servidor de test y no tiene certificado. Yo la url que uso es
http://test.boletoestudiantil.gba.gob.ar/ws
Lo que estoy probando es poner pasivo a un estudiante para sacarle el beneficio. En la base de datos de guaraní se registra la baja, pero a ellos no le llega.

qué puede estar pasando?
Desde ya muchas gracias por responder, estamos apurados con este tema porque quieren implementarlo luego de tanto tiempo esperando. gracias!!!

Hola Jacqueline,

Parece que https://test.boletoestudiantil.gba.gob.ar/ws no tiene certificados o los tiene vencidos.

En el archivo instalacion/i_desarrollo/p_guarani/rest/sube/cliente.ini de SIU-Guaraní Gestión proba agregando la siguiente opcion:


;cliente.ini
[conexion]
to = "<url_ws_sube>"
auth_tipo = basic
auth_usuario = <usuario>
auth_password = <password>
auth_ua = <ua>
verify = false

PHP Warning:  Invalid argument supplied for foreach() in /usr/local/proyectos/guarani3190A/php/extension_toba/guarani_modelo.php on line 2117"

Eso es quizás por PHP 7.4, vamos a ver de corregirlo, ¿ustedes tienen Guaraní 3.20.0, no?

saludos.
2

No, tenemos guarani 3.19.0.
El viernes a última hora lo resolvimos, estaba mal puesta la URL. Pero encontramos otro problema que aprovecho a comentarles.
En el archivo /php/extension_toba/guarani_modelo.php en la función procesar_solicitud cambiamos el CURRENT_DATE por NOW() debido a que por alguna razón, cuando quería insertar una baja, dejaba la hora en 0. Esto hacía que cuando el proceso de notificar buscara la última actualización de una persona, no encontrara esa baja (debido a que el registro de alta si tenía la hora, por lo tanto siempre encontraba como última actualización el alta y no la baja), y entonces no la informara a Sube.
No sé si está bien el cambio que hicimos pero pudimos terminar el circuito de pruebas para que podamos habillitar el boleto en la UNiversidad.

Hola Jacqueline,

Si, quedo mal parece, la columna fecha_solicitud de la tabla mbe_solicitudes es un timestamp with time zone. CURRENT_DATE no le asigna la hora.

En lugar de NOW() le podes pasar CURRENT_TIMESTAMP que es el valor por defecto que viene en el diferencial.sql.

vamos a ver de corregirlo.

saludos y gracias por reportarlo.
2

Te paso lo que deberías reemplazar en el archivo php/extension_toba/guarani_modelo.php:

Función procesar_solicitud:


	protected function procesar_solicitud($solicitud)
	{
		//Valido si el usuario es Regular y Calidad Activo		
		$otorgar_beneficio = $this->verificar_beneficio($solicitud['persona']);
		if ($solicitud['operacion'] == 'A' && $otorgar_beneficio < 0) {
			$mensaje = "No podés solicitar el boleto estudiantil porque no sos alumno regular";
			$sql = "INSERT INTO mbe_solicitudes (persona, hash, url_formulario_sube, fecha_solicitud, condicion, observaciones, operacion, procesado) VALUES " .
					"({$solicitud['persona']},'BAJA:{$solicitud['id']};{$solicitud['hash']}', '{$solicitud['url_formulario_sube']}', CURRENT_TIMESTAMP, null, '{$mensaje}', 'B', 'N');";
			$this->get_base()->ejecutar($sql);
			return false;
		} elseif ($solicitud['operacion'] == 'B' && $otorgar_beneficio > 0) {
			$mensaje = "OK. Puede solicitar el boleto estudiantil ";
			$condicion = ($otorgar_beneficio == 1 ? 'I' : 'C');
			$sql = "INSERT INTO mbe_solicitudes (hash, url_formulario_sube, fecha_solicitud,condicion,observaciones,operacion,procesado) VALUES " .
					"('ALTA:{$solicitud['id']};{$solicitud['hash']}', '{$solicitud['url_formulario_sube']}', CURRENT_TIMESTAMP, '{$condicion}', '{$mensaje}', 'A', 'N');";
			$this->get_base()->ejecutar($sql);
			return false;
		}
		return true;
	}

Función actualizar_solicitudes:


	function actualizar_solicitudes($solicitudes)
	{
		$exito = true;
		if (is_array($solicitudes)) {
			foreach ($solicitudes as $solicitud) {
				if ($solicitud['exito']) {
					$this->actualizar_solicitud($solicitud['id'], $solicitud['msg'], $solicitud['msg_id']);
				} else {
					$this->manejador_interface->mensaje('Error con la solicitud id=' . $solicitud['id'] . ': ' . $solicitud['msg'] . ' (' . $solicitud['msg_id'] . ')');
					$exito = false;
				}
			}
		}
		return $exito;
	}

Te pediría que lo pruebes y me confirmes si funciona bien con dichos cambios.

saludos.
2