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?
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.
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:
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
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!
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í:
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
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’].
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.
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.
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!
$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.