Generar Comisiones Masivamete se queda "procesando"

Estimados:

Les pido si me pueden dar una mano con este inconveniente, dado que aun estamos iniciando nuestro camino con Guaraní 3.20.2.

En el flujo de generación de comisiones masivamente, al finalizar el proceso y tocar en general la siguiente pantalla comienza a tener el indicador de “procesando” en el margen superior derecho, que aparece y desaparece constantemente pero no se marca progreso alguno.

He revisado los pasos de la Guía de instalación, aplicando nuevamente por ejemplo los permisos recursivos sobre todos los archivos de la instalación (paso 6 de la instalación) sin éxito.

En la consola de Firefox no se muestra error, y si el jquery que a cada rato tira el GET sin éxito. En Chrome sin embargo luego de un ratito se muestra el siguiente error en la consola:

jquery-migrate.js:69 JQMIGRATE: Migrate is installed, version 3.3.2 content_script.js:4650 Could not establish connection. Receiving end does not exist., sendMessage, [{"type":"CS_ASK_BG_2131","uid":"ipcp_1678748151531_27","cmd":"CS_ACTIVATE_ME","args":{}}] callback @ content_script.js:4650 content_script.js:4650 Could not establish connection. Receiving end does not exist., sendMessage, [{"type":"CS_ASK_BG_2131","uid":"ipcp_1678748151542_28","cmd":"CS_ACTIVATE_ME","args":{}}] callback @ content_script.js:4650 content_script.js:4650 Could not establish connection. Receiving end does not exist., sendMessage, [{"type":"CS_ASK_BG_2131","uid":"ipcp_1678748151550_29","cmd":"CS_ACTIVATE_ME","args":{}}] callback @ content_script.js:4650 content_script.js:4650 Could not establish connection. Receiving end does not exist., sendMessage, [{"type":"CS_ASK_BG_2131","uid":"ipcp_1678748151575_30","cmd":"CS_ACTIVATE_ME","args":{}}] callback @ content_script.js:4650 content_script.js:4650 Could not establish connection. Receiving end does not exist., sendMessage, [{"type":"CS_ASK_BG_2131","uid":"ipcp_1678748151586_31","cmd":"CS_ACTIVATE_ME","args":{}}] callback @ content_script.js:4650 content_script.js:4650 Could not establish connection. Receiving end does not exist., sendMessage, [{"type":"CS_ASK_BG_2131","uid":"ipcp_1678748151599_32","cmd":"CS_ACTIVATE_ME","args":{}}] callback @ content_script.js:4650

Luego de un rato, al presionar abortar se muestra el mensaje:

Error en la respuesta. Error JS: TypeError: Cannot read properties of null (reading 'comisiones') Mensaje Server: Mas

Ver el log del sistema para más información

Al tocar en Mas, dice “null”

Desde ya les agradezco si me pueden orientar en qué podría revisar para avanzar con esto. Intuyo que debe ser algo simple que no estoy revisando porque no encontré nada similar en los foros.

Saludos.

Hola Julio,

Hay un problema con los procesos en background que genera dicho error, dicho problema va a salir arreglado en la versión 3.21.1 con los siguientes tickets:

https://redmine.siu.edu.ar/redmine/issues/44669 (Analizar de incrementar timeout de los procesos en background)
https://redmine.siu.edu.ar/redmine/issues/43827 (Mejorar estado de procesos en background)

Si necesitas un adelanto de la solución crea un GDS (anotame el numero del mismo en este foro) que te adelantamos la misma.

saludos.
2

Muchas gracias por la pronta respuesta. Avanzo entonces con la generación del GdS.

Saludos.

Hola Julio,

Para el error en la operación » Cursadas » Comisiones » Generar Comisiones Masivamente proba reemplazar la función extender_objeto_js de php/operaciones/cursadas/comisiones/generacion_masiva_comisiones/pant_finalizar.php por lo siguiente:


        function extender_objeto_js()
	{
		$destino = $this->controlador()->get_seleccion_valor('info_destino');
		$parametros = array($destino['anio_academico_destino'], $destino['periodo_lectivo_nombre']);
		$mensaje_ok = guarani_mensajes::get('800cur_ok_comision', $parametros);
                
		$timeout = comunes::get_timeout_procesos_bk();

		echo "
			{$this->objeto_js}.set_progreso = function(count)
			{
				var image = 360;
				var width = -1 * ((image/200)*(100-count));
				var img = document.getElementById('barra_progreso');
				img.style.backgroundPosition = + width + 'px 0pt';
				img.alt   = count + '%';
				img.title = count + '%';

				var txt = document.getElementById('texto_progreso');
				txt.innerHTML = count + '%';
			}

			var finalizo_proceso = false;
			var progreso_cero = false;

			{$this->objeto_js}.consultar_estado_proceso = function()
			{
				// Hace un AJAX a la función 'ajax__estado_proceso' del CI.
				this.ajax('estado_proceso', [], this, this.set_estado_proceso);
			}

			{$this->objeto_js}.set_estado_proceso = function(datos)
			{
				console.log('Respuesta del estado del proceso:');
				console.log(datos);

				// Si datos viene con valores
				if (datos !== null) {

                                        // Si el progreso viene en 0 es una falla en Chrome y Brave cuando no hay datos a procesar
					if (datos['progreso'] == 0) {
						progreso_cero = true;
                                                datos['progreso'] = 100;
					}

					if (datos['progreso'] == 100) {
						finalizo_proceso = true;
						this.set_progreso(100);
					}

					if (datos['mensaje'] != false) {
						//-- Actualizo el porcentaje completado
						this.set_progreso(parseInt(datos['progreso'], 10));
					}
					if (finalizo_proceso && datos['progreso'] == 100) {
						{$this->objeto_js}.activar_boton('finalizar');
						{$this->objeto_js}.desactivar_boton('abortar');
					}
				}

                                // Si el proceso finalizo
                                if (finalizo_proceso) {

					// Elimino el Timeout
					clearTimeout(timeout_estado_proceso);

                                        // Si el progreso viene en 0 es una falla en Chrome y Brave cuando no hay datos a procesar
                                        if (progreso_cero) {

                                            var datos = [];
                                            datos['comisiones'] = 0;
                                            datos['comisiones_con_obs'] = 0;
                                            datos['actividades_con_comisiones'] = 0;
                                            datos['actividades_sin_comisiones'] = 0;
                                            this.set_resultados_proceso(datos);

                                        } else {
                                            // Se invoca por primera vez para comenzar a consultar el resultado del proceso.
                                            {$this->objeto_js}.consultar_resultados_proceso();
                                        }

				} else {// Si el proceso no finalizo

					// Vuelvo a consultar el estado del proceso
					var timeout_estado_proceso = setTimeout(\"{$this->objeto_js}.consultar_estado_proceso()\", $timeout);

				}
			}

			{$this->objeto_js}.consultar_resultados_proceso = function()
			{
                                // Hace un AJAX a la función 'ajax__resultados_proceso' del CI.
				this.ajax('resultados_proceso', [], this, this.set_resultados_proceso);
			}

			{$this->objeto_js}.set_resultados_proceso = function(datos)
			{
				console.log('Respuesta del resultado del proceso:');
				console.log(datos);

                                // Si datos es null vuelvo a intentar
				if (datos === null) {

                                    // Vuelvo a consultar el resultado del proceso
                                    var timeout_resultados_proceso = setTimeout(\"{$this->objeto_js}.consultar_resultados_proceso()\", $timeout);

				} else { // Sino los muestro en pantalla

                                    // Elimino el Timeout
                                    clearTimeout(timeout_resultados_proceso);

                                    this.dep('form_totales').ef('comisiones').set_estado(datos['comisiones']);
                                    this.dep('form_totales').ef('comisiones_con_obs').set_estado(datos['comisiones_con_obs']);
                                    this.dep('form_totales').ef('actividades_con_comisiones').set_estado(datos['actividades_con_comisiones']);
                                    this.dep('form_totales').ef('actividades_sin_comisiones').set_estado(datos['actividades_sin_comisiones']);

                                    if (datos['comisiones'] > 0) {
                                            {$this->objeto_js}.dep('form_totales').activar_boton('rep_comisiones');
                                    }

                                    if (datos['comisiones_con_obs'] > 0) {
                                            {$this->objeto_js}.dep('form_totales').activar_boton('rep_comisiones_obs');
                                    }

                                    if (datos['actividades_sin_comisiones'] > 0) {
                                            {$this->objeto_js}.dep('form_totales').activar_boton('rep_actividades_sin_comisiones');
                                    }

                                    if (datos['actividades_con_comisiones'] > 0) {
                                            {$this->objeto_js}.dep('form_totales').activar_boton('rep_actividades');
                                    }

                                    {$this->objeto_js}.activar_boton('finalizar');

                                    alert('$mensaje_ok');

                                }
			}

			{$this->objeto_js}.set_progreso(0);
                        // Se invoca por primera vez para comenzar a consultar el estado del proceso.
			{$this->objeto_js}.consultar_estado_proceso();
			{$this->objeto_js}.dep('form_totales').desactivar_boton('rep_comisiones');
			{$this->objeto_js}.dep('form_totales').desactivar_boton('rep_comisiones_obs');
			{$this->objeto_js}.dep('form_totales').desactivar_boton('rep_actividades_sin_comisiones');
			{$this->objeto_js}.dep('form_totales').desactivar_boton('rep_actividades');
			{$this->objeto_js}.desactivar_boton('finalizar');

		";
	}

Luego contame si con ese cambio deja de dar el error.

saludos.
2