Mensajes en controles

Hola!
Hemos creado una regla con unos controles personalizados, muy particulares de una UA.

En la regla, se setearon diferentes mensajes explicativos para cada situación por la que no pasaría el control. (Ej: No es de la carrera,No tiene las materias aprobadas, No tiene las materias regulares).
El punto de control es (18 Persona Propuesta).
En la operación por 3w cuando no pasa el control dice “Error ejecutando controles” sin mostrar los mensajes configurados.
Que podría ser?

Saludos.
Flavia

Hola Flavia! como estás? En Gestión funciona bien?
Saludos!

Hola Flavia, agrego a lo que pregunta Hernán:

¿Esto lo subieron al COLAB?
¿Se puede ver el cambio para saber que es lo que ocurre?

saludos.

Hola!!
En gestión los mensajes salen correctamente.
Recién subi a colab lo que está hecho para que puedan verlo. No subí el archivo acc_Alumno.php para que no quede disponible en el menú por ahora.

Saludos!

Hola Flavia, por lo que veo ocurre lo siguiente:

En el archivo src/pers/cordoba/modelo/transacciones/u_hospitalaria.php función control__inicial, cuando haces $proceso->ejecutar(), si el estado del control es Rechazado lanza una excepción del tipo error_guarani y ahí te muestra el mensaje “Error ejecutando controles”.

En el controlador accion__index deberías poner un try/catch:


                try {
			$mensajes = $this->modelo()->control__inicial();
		} catch (\siu\errores\error_guarani $e) {
			$mensajes = $e->get_mensajes_usuario();
		}

En $mensajes vas a tener los mensajes para mostrar al usuario.

Fíjate como se usa en otras operaciones, ejemplo:

Función controles_solicitud_constancia del archivo src/siu/modelo/transacciones/solicitud_constancias.php.

saludos.

Flavia, en la nueva regla definiste el mensaje que se envia al usuario (usuario de Gestion o el alumno en autogestion) para la interfaz de autogestion (interfaz = 2)?
Esto se define en la tabla sga_reglas_mensajes.
Fijate un ejemplo de cualquier otra regla. Si el mensaje recibe algún dato de un parámetro como ser el nombre del alumno/nombre de la actividad/… estos se deben poner en orden con $1$, $2$ … $n$ dentro del mensaje para que luego sean reemplazados por el valor que corresponde segun para que alumno se esta ejecutando el requisito.

Hola!
Con los cambios que me dijo Leonel funcionó bien el control inicial. Gracias!
En el guardar hay otro control (de cupo) y siempre da como resultado A, aunque no lo pase. Donde puedo ver porque falla eso?
Subí a colab unos cambios para que puedan ver el código

Saludos!

Hola Flavia,

Claro, el punto de control 1: Persona-Operación no controla cupo, por eso siempre te da aprobado dicho control.

¿ustedes personalizaron el punto de control para que controle cupo?

saludos.

Si, faltaba configurarlo en requisito por acción, ahora está bien el control, pero el mensaje contiene “No se permiten más inscripciones a la Unidad Hospitalaria: $1$” como le paso por autogestión el valor correspondiente al $1$
Subi los cambios en colab. Es en accion__guardar
Gracias!

Hola Flavia, eso se hace en la regla:

En src/pers_gestion/php/nucleo/_lib/reglas/regla_ctr_comUH_uncor.php cuando haces:


$this->set_parametros_mensaje_validacion(array($mensaje), true);

El primer parámetro debe ser un array con los valores a reemplazar en el mensaje (tabla sga_reglas_mensajes). Si tenes un mensaje como sigue:

Gestión: “El alumno/a $1$ esta inscrito en la carrera $2$”
3W: “Estas inscrito en la carrera $2$”

Entonces el array debería ser algo así: array(“Jose Perez”, “Licenciatura en Sitemas”).

Decime cual es la regla y los mensajes en cuestión (Gestión y 3W).

saludos.

Hola! La regla es esa: src/pers_gestion/php/nucleo/_lib/reglas/regla_ctr_cupounapas_uncor.php
Es la regla_1238_ctr_cupounapas_uncor.php

Cuando quiero guardar y no pasa el control, no se como enviarle ese valor. Va en evt__guardarUH o accion__guarani?
Saludos!

Hola Flavia,

Veo que en src/pers_gestion/php/nucleo/_lib/reglas/regla_ctr_cupounapas_uncor.php estas haciendo:


$this->set_parametros_mensaje_validacion(array($mensaje), true);

El tema es que hay que ver el valor de la variable $mensaje, porque si no entra al if no se le asigna un valor, y por ende no se reemplaza en el mensaje.

Los parámetros son los que le pasas al punto de control, y los podes acceder así:


		$alumno = $this->get_parametro('alumno');
		$actividad = $this->get_parametro('elemento');
		$fecha = $this->get_parametro('fecha');

Luego con esos parámetros podes hacer queries para acceder a mas información, fíjate como hace en la regla src/siu/modelo_g3/nucleo/_lib/reglas/regla_actividad_cursada.php.

Fíjate que los mensajes son:
“El alumno $1$ debe tener regularizada la actividad $2$” para Gestión
“Debés tener regularizada la actividad $2$” para 3W

y hace:

$this->set_parametros_mensaje_validacion(array($nombre_alumno, $datos_basicos_elemento['codigo_nombre']), true);

En la primer posición del array le pasa el nombre del alumno, en la segunda el nombre de la materia. En el mensaje de 3W solo usa el nombre de la materia, por eso solo usa $2$. Es decir, $1$ se reemplaza por $nombre_alumno y $2$ por $datos_basicos_elemento[‘codigo_nombre’].

saludos.

Mirá para probar hice algo más simple, le saque las variables a los mensajes puso solo texto fijo.
El tema es que lo mismo no funciona la captura del error, hay algo mal en esa parte que no puedo detectar. Adjunto log de errores.


20190208_121341___6432.rar (7.83 KB)

Hola Flavia,

Eso es porque en la linea 59 de src/pers/cordoba/operaciones/u_hospitalarias/controlador.php estas haciendo:


throw new error_guarani_usuario($mensaje['mcuerpo']);

Eso lo que hace es mostrarte un popup con fondo blanco con el texto del error. ¿No se si eso es lo que vos queres que ocurra?

Sino en lugar de eso podes enviar los mensajes a la vista y mostrarlos allí, ya hay un macro de twig que se encarga de ello.
El macro esta acá vendor/siu/chulupi-framework/src/SIU/Chulupi/interfaz/templates/kernel/macro_notificaciones.twig, podes ver como se usa en Inscripción a materias archivo src/siu/operaciones/cursada/info_materia/default.twig en la linea 30:


        {% if this.data.mensajes %}
            {% import "kernel/macro_notificaciones.twig" as notificaciones %}
            {{ notificaciones.render_notif(this.data.mensajes) }}
        {% endif %}

Fíjate como hace en la función accion__elegir_materia de src/siu/operaciones/cursada/controlador.php, termina llamando a elegir_materia la cual ejecuta los puntos de control, y guarda los mensajes para luego ser pasados a la vista.

Una pavada aparte, en lugar de hacer esto:


			try {
				$mensajes = $this->modelo()->evt__guardarUH($alumno, $u_hospitalaria, $periodo);
			} catch (\siu\errores\error_guarani $e) {
				$mensajes = $e->get_mensajes_usuario();
			}

podes agregar el use siu\errores\error_guarani;, y en lugar de \siu\errores\error_guarani $e le pones error_guarani $e al catch.

saludos.

Gracias Leonel!
Ya vi lo de las notificaciones e hice algo parecido a elegir_materia, pero lo mismo sigo sin ver los mensajes.
Podes ver si lo que está mal es lo de la transacción? Puse en colab los cambios.
Saludos!

Hola Flavia,

Lo siguiente no haría falta:


		$msg = 'Mensaje de prueba';
		kernel::renderer()->add_to_ajax_response('$msg', $msg);
		kernel::renderer()->add($pagelet);

Luego en src/pers/cordoba/operaciones/u_hospitalarias/pagelet_formulario.php deberias crear el siguiente método;


	function get_mensajes()
	{
		return $this->controlador->get_var('mensajes');
	}

y en la función prepare agregas:

$this->data['mensajes'] = $this->get_mensajes();

Y de esa forma van a llegar los mensajes a la vista (src/pers/cordoba/operaciones/u_hospitalarias/formulario/default.twig). Ojo que por lo que veo se va a mostrar abajo de todo, me parece mejor que se muestre arriba.

saludos.

Muchas gracias Leonel!!
Con esos ya se ven los mensajes.

Saludos!!