Guarani 3, Activar en G3W un requisito de tipo proceso con regla personalizada

Hola que tal, estamos desarrollando un control en la inscripción a cursadas para Guaraní 3.13.1 , actualmente está funcionando en la interfaz de Gestión pero no está funcionando en la interfaz de Autogestión, necesitamos saber que nos faltaría hacer para que funcione.

Actualmente el requisito lo tenemos asociado a la accion de cursadas, y habilitado para ambas interfaces en la operación “800SIUCUR001 - Inscribir a Cursadas” , como mencionamos arriba, el control funciona perfectamente para la interfaz de gestión pero en autogestion no funciona.

  • Se creo un archivo nuevo para la regla en :

/usr/local/proyectos/gestion/personalizacion/php/nucleo/_lib/reglas/regla_algunos_datos_censales_completos.php

<?php
class regla_algunos_datos_censales_completos extends regla
{
	function validar()    {
		 
                 //$datos = guarani::co('co_personas')->algunos_datos_completos($persona);
           
                 $persona = $this->get_parametro('persona');

                 $datos_compeltos = true;
                 $nombre_persona = toba::consulta_php('co_personas')->get_nombre_persona($persona);

                 $id_datos = guarani::co('co_datos_censales')->get_id_dato_censal($persona);
                 $id_datos = $id_datos['dato_censal'];
                 
                 //---
                 //--- Datos personales
                 //---        
                 $campos_obligatorios = array ('estado_civil','unido_hecho', 'cantidad_hijos' , 'cantidad_familia', 'situacion_padre', 'situacion_madre', 'turno_preferido', 'cobertura_salud');
                 $datos_personales = guarani::co('co_datos_censales')->get_datos_personales($id_datos);
                 $datos_personales = $datos_personales[0];

                 // ei_arbol($datos_personales);
                 foreach ($campos_obligatorios as $campo) {
                     if ($datos_personales[$campo] === null OR $datos_personales[$campo] === '') {
                         echo $campo; 
                         $datos_compeltos = false;
                     }
                 }
                 if  (!$datos_compeltos) {
                    $this->set_parametros_mensaje_validacion(array($nombre_persona, 'DATOS PERSONALES'), true);
                    return false;
                 }
                 
                 //---
                 //--- Domicilio 
                 //--- 
                 $campos_obligatorios = array('periodo_lectivo_calle', 'periodo_lectivo_localidad', 'tipo_vivienda', 'vive_con', 'procedencia_calle', 'procedencia_localidad');                
                 
                 foreach ($campos_obligatorios as $campo) {
                     if ($datos_personales[$campo] === null OR $datos_personales[$campo] === '') {
                          $datos_compeltos = false;
                     }
                 }
                 if  (!$datos_compeltos) {
                    $this->set_parametros_mensaje_validacion(array($nombre_persona, 'DOMICILIO'), true);
                    return false;
                 }
                 
                 //---
                 //--- Datos economicos: financiamiento y datos laborales
                 //--- 
                 
                 $datos_economicos = guarani::co('co_datos_censales')->get_datos_economicos($id_datos);
                 $datos_economicos = $datos_economicos[0];
                 
                 // en este caso al menos uno tiene que estar en "S"
                 $seleccion_obligatoria = array ('costeo_estudios_familiar','costeo_estudios_plan_social', 'costeo_estudios_trabajo', 'costeo_estudios_beca', 'costeo_estudios_otro');
                 $eligio_uno = false;  
                 
                 foreach ($seleccion_obligatoria as $campo) {
                     if ($datos_economicos[$campo] === 'S') {
                          $eligio_uno = true;
                     }
                 }       
                 
                 if  (!$eligio_uno) {
                    $this->set_parametros_mensaje_validacion(array($nombre_persona, 'FINANCIAMIENTO'), true);
                    return false;
                 }
                 
                 if  ($datos_economicos['trabajo_existe'] === null OR $datos_economicos['trabajo_existe'] === ''){
                    $this->set_parametros_mensaje_validacion(array($nombre_persona, 'DATOS LABORALES'), true);
                    return false;
                 }
                 
                 //---
                 //--- Tecnologia
                 //--- 
                 
                 $datos_actividades = guarani::co('co_datos_censales')->get_datos_actividades($id_datos); 
                 $datos_actividades = $datos_actividades[0];
                 
                 $seleccion_obligatoria = array ('tecnologia_pc_casa', 'tecnologia_pc_trabajo', 'tecnologia_pc_universidad', 'tecnologia_pc_otro_lugar');
                 $eligio_uno = false;  
                 
                 foreach ($seleccion_obligatoria as $campo) {
                     if ($datos_actividades[$campo] === 'S') {
                          $eligio_uno = true;
                     }
                 }       
                 
                 if  (!$eligio_uno OR $datos_actividades['tecnologia_int_regularidad'] === null OR $datos_actividades['tecnologia_int_regularidad'] === '') {
                    $this->set_parametros_mensaje_validacion(array($nombre_persona, 'TECNOLOGIA'), true);
                    return false;
                 }
                 
                 //---
                 //--- Antecedentes profesionales
                 //--- 
         
                $antecedente_profesional = guarani::co('co_preinscripciones')->existe_registro_antecedente_profesional($persona, array());  

                if  (!$antecedente_profesional ) {
                   $this->set_parametros_mensaje_validacion(array($nombre_persona, 'ACTUACION PROFESIONAL'), true);
                   return false;
                }
                
                
                return true;

	}

}
?>


Y luego insertamos en la base de negocio lo siguiente…


INSERT INTO negocio.sga_reglas(
		regla, 
		nombre, 
		descripcion ,
		regla_tipo , 
		mensaje_usuario , 
		mensaje_validacion , 
		mensaje_validacion_negado , 
		php_clase)
VALUES (
		81901, 
		'Algunos datos censales completos', 
		'Que el alumno tenga los datos censales completos (los que figuran en Tramites --> Mis datos personales), pueden no tener completo: Discapacidad, idioma, Deportes, Allegados, Actuación docente. El resto de las pestañas debe tener los datos completos.', 
		3, 
		'Que el alumno tenga los datos censales completos (los que figuran en Tramites --> Mis datos personales), pueden no tener completo: Discapacidad, idioma, Deportes, Allegados, Actuación docente. El resto de las pestañas debe tener los datos completos.', 
		'Debe completar los datos censales',
		'',
		'regla_algunos_datos_censales_completos'
);

INSERT INTO negocio.sga_reglas_param_contexto (regla, parametro) VALUES (81901, 'persona');
INSERT INTO negocio.sga_reglas_param_contexto (regla, parametro) VALUES (81901, 'fecha');

-- Mensajes
-- DELETE FROM negocio.sga_reglas_mensajes WHERE regla = '81901'
INSERT INTO negocio.sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) 
VALUES (81901, 1, 'El alumno $1$ debe completar los datos censales, faltan datos en la solapa: $2$', 'El alumno $1$ completó sus datos censales');
INSERT INTO negocio.sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not) 
VALUES (81901, 2, 'Debes completar tus datos censales', 'Completaste tus datos censales');

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++,
-- Tabla: sga_requisitos, sga_requisitos_validos
-- Versión: 3.13.1
-- Control: Completar datos censales -- 
-- Usa la regla nro 81901 - Que el alumno tenga los datos censales completos
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INSERT INTO negocio.sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla) 
VALUES (81901, 5, '"Completar datos censales"', NULL, '"Que el alumno tenga los datos censales completos (los que figuran en Tramites --> Mis datos personales), pueden no tener completo: Discapacidad, idioma, Deportes, Allegados, Actuación docente. El resto de las pestañas debe tener los datos completos."', 81901);

-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:
INSERT INTO negocio.sga_requisitos_validos (accion, requisito) VALUES (1, 81901); -- Inscripción a Cursadas

-- En el caso que el requisito sea usado como un control configurable, se debe definir en qué puntos de control se puede vincular el requisito:
INSERT INTO negocio.sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 81901, 1); -- Persona - Operación


Luego desde la interfaz de gestion lo asignamos a la accion y operaciones correspondientes como mencionamos mas arriba.

Si el control funciona en la interfaz de gestion, deberia entonces tambien funcionar en la interfaz de autoestion de alumnos.

En ese punto de control hay configurados otros requisitos, que devuelve la siguiente consulta?

SELECT * FROM sga_requisitos_x_punto_control WHERE pto_controL = 1;

Si en la funcion de la regla haces que falle siempre, es decir pones al comienzo del codigo:

$this->set_parametros_mensaje_validacion(array($nombre_persona, 'PROBANDO EL CONTROL DE DATOS PERSONALES'), true);
 return false;

¿Tampoco salta el control?
Lo unico que pareciera es que si en Gestion funciona, es que este requisito no este activo en la operación de inscripcion a cursada para la interfaz de autogestión.

Hola Alejandro gracias por la respuesta. El control en la interfaz de gestión funciona bárbaro, pero en autogestion no hace nada, la prueba que nos mencionas ya la habíamos hecho y notamos que no se estaba ejecutando el control porque permite al alumno inscribirse por mas que la regla retorne falso en todos los casos.

Respecto a los requisitos que usan ese punto de control si hay varios definidos, te paso la salida de la consulta en un adjunto.

El control esta configurado para la interfaz de autogestion para la operación de inscripción a cursadas, va el adjunto también.

Nuestra duda era si había algún parámetro global o algo que configurar para que funcione el control en autogestion ya que inicialmente tampoco nos funcionaba en gestión y utilizando el debugger de toba encontramos que no se estaba disparando ningún control dado que el parámetro “cur_ejecuta_controles” estaba desactivado, pensamos que tal vez haya algo similar para autogestion?


puntos_control.png

puntos_control.png

requisito_datos_censales.png

requisito_datos_censales.png

Podes enviar el log desde que seleccionas la operación de Inscripcion a Materias en el menu hasta que lo inscribis.
Ahi veremos que puntos de control se ejecutan y que controles y sus resultados.

¿La prueba por Gestion y Autogestión la estas haciendo con el mismo alumno?

Hola Alejandro, si la prueba es con el mismo alumnos. Te adjunto los logs.


log_elegir_materia.txt (45.3 KB)

log_inscribirse_materia.txt (17.2 KB)

Hola Diego,

Por lo que veo en los logs el usuario que estas usando no es un alumno, sino un usuario con perfil de tipo curso (es un tipo de perfil para inscribirse a cursos de extensión).

En autogestión estas accediendo a la operación Inscripción a Cursos (código 800SIUCUR051), y en gestión me imagino que estas accediendo a la operación Inscribir a Cursadas (código 800SIUCUR001). Según la captura que enviaste de “Configurar requisitos por operación”, el requisito lo asociaste para Inscripción a cursada y no a Inscripción a cursos, por eso en gestión salta el control y en autogestión no. Osea, estas accediendo a operaciones diferentes, en gestion accedes a Inscribir a Cursadas y en autogestión a Inscripción a Cursos.

Tenes dos opciones:

  1. Asocias el requisito también a la Inscripción a cursos (código 800SIUCUR051), si queres que en dicha operación también se controle.

  2. Inscribís al usuario en una carrera, luego en autogestión elegís perfil alumno (combo ubicado en la parte superior derecha de la pantalla), y finalmente vas a la operación Inscripción a materias. En este caso si van a saltar los controles como lo tenes configurado ahora.

Cualquier duda nos consultas!!!

saludos.

Hola que tal, disculpas, se me mezclaron un poco los términos, paso en limpio…

El control es para la inscripción a cursos, dado que necesitamos que el control funcione en ambas interfaces, y que en gestión no existe la operación de inscripción a cursos se ve que en algún momento haciendo pruebas me quedó inhabilitado en la interfaz de autogestión. Ahi lo volvi a activar, borre la caché del web y con el comando ./guarani limpiar_cache, y por las dudas reinicie el docker. Al parecer algo levanta en los logs se pueden ver datos del control pero sigue sin funcionar, ya sea que el control devuelva directamente true o false, al hacer click en el botón de inscribirse no hace nada, no permite inscribir a la persona al curso y tampoco muestra ningún mensaje, les dejo el log a ver si nos pueden guiar por donde viene el problema , muchas gracias.

Saludos. Diego


log_inscribirse_curso.txt (37.6 KB)

Hola Diego,

en gestión no existe la operación de inscripción a cursos
Si existe la operación en Gestión, búscala como [b]Inscribir a Cursos[/b] (código [b]800SIUCUR051[/b]).

Por lo que veo en los logs esta trayendo el control, pero se ve que se rompe al querer ejecutarlo. Arriba de todo dice:


================================================================================
=================================   ERRORES   ==================================
================================================================================

clase: SIU\Chulupi\ErrorKernel
mensaje: SHUTDOWN
traza: [TRAZA]

---[ 0 ]-----------------------------------------

- function: SIU\Chulupi\nucleo\AccesoWeb::shutdown
- file: /var/local/autogestion/vendor/siu/chulupi-framework/src/SIU/Chulupi/nucleo/AccesoWeb.php, linea 166

cuando dice así hay que ver los logs de Apache, para verlos podes correr sudo tail - f /var/log/apache2/error.log.

quedo a la espera de los logs de Apache!!!

saludos.

Gracias =), en la base que tome para el desarrollo por algún motivo estaba desactivada desde el toba_usuarios para el perfil de adminitrador y no sabia de su existencia. De todos modos el control funcionaba bien en la inscripción a cursadas en gestión.

Respecto al problema que estábamos teniendo que no funcionaba en autogestión ya quedo resuelto, el problema era que el web no encontraba el archivo de la regla, me faltaba hacer el “svn update” en autogestión para que me baje la regla creada en la carpeta de gestión. Yo tenía entendido (erróneamente) que en el ambiente de desarrollo del docker la conexión entre ambas aplicaciones era por medio de un link simbólico.

En mi caso y para cualquier otro que use el docker de guarani3 para ver los logs de apache se hace de la siguiente forma, en una consola correr el comando:

sudo docker attach dockerguarani_web_1

Muchas gracias por la ayuda. Saludos.

Diego.

Hola Diego,

La conexión entre Gestión y 3W es llevada a cabo a través de Externals de SVN por eso tenes que hacer el svn update, ver acá.

Me alegro que lo hayas podido solucionar.

saludos.