Diferencia entre revisiones de «SIU-Guarani/Version3.12.0/personalizaciones/requisito proceso»

De SIU
Saltar a: navegación, buscar
m (Revertidos los cambios de Adelu (disc.) a la última edición de Gfranz)
 
(No se muestra una edición intermedia de otro usuario)
Línea 1: Línea 1:
 
__TOC__
 
__TOC__
== Circuito de Egreso ==
+
== Pasos para crear un requisito de tipo proceso ==
  
A continuación se detallan los pasos para agregar nuevos datos de la institución en una transición del circuito.
+
A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:
 +
* <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión
  
== Agregar nuevos datos a solicitar en una transición del circuito de egreso ==
+
=== Crear la regla ===
  
 +
Se define regla al proceso que contiene la lógica para resolver el caso propuesto.<br>
 +
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.<br>
 +
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación.
 +
Se deben ejecutar los inserts en las siguientes tablas: <br>
 +
{| class="wikitable"
 +
! '''Tabla'''               
 +
! '''Observaciones'''
 +
|-
 +
|  ''sga_reglas''             
 +
|  Registro de la Regla <br> El dato de regla_tipo = '''3''' (Tipo Proceso)<br> '''IMPORTANTE''': el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999. <br>
 +
|-
 +
|''sga_reglas_parametros'' 
 +
| Se indica con qué parámetros se ejecuta la regla. <br>Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas. <br> En este caso la regla tendrá dos parámetros: <br>  Parametro 1: cantidad de actividades aprobadas  <br>  Parámetro 2: cantidad de créditos de materias aprobadas  <br>
 +
|-
 +
| ''sga_reglas_param_contexto''
 +
| Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)<br> Los parámetros disponibles son los que estén definidos en la tabla ''par_puntos_control_parametros'' <br>
 +
|-
 +
| ''sga_reglas_mensajes''   
 +
| Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap <br><br> Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato <span style="color: red;">$nro_parametro$</span> <br> Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales. <br> donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo<br>Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando <span style="color: red;">%nro_parametro%</span> (son los parámetros definidos en la tabla sga_reglas_parametros). <br>Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final. <br>donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla. <br>
 +
|}
  
=== Agregar los nuevos campos ===
+
Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <tt><path proyecto Guaraní>/personalizacion/BD/Datos/_nucleo/Controles/Reglas</tt>
 +
<br><br>
 +
Ejemplo: [[SIU-Guarani/Version3.12.0/control_encuestas_comision| Encuestas de la Comisión]]  <br>
 +
Archivo '''Regla_326_EncuestasComision.dca'''<br>
  
Se deben agregar los nuevos campos en la tabla <b>mce_campos</b>.<br>
+
<source lang="php" enclose="div">
Supongamos que queremos agregar los datos "Nro de expediente de ingreso" y "Fecha recepción solicitud".<br>
+
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agregamos los nuevos campos:<br>
+
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto
 +
-- Versión: 3.0.0
 +
-- Control: Que el alumno haya contestado las encuestas definidas para la comision
 +
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 +
 
 +
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario,  mensaje_validacion, php_clase)
 +
  VALUES (326,
 +
          3,
 +
          'Encuestas Contestadas',
 +
          'Que el alumno haya contestado todas las encuestas de la comisión',
 +
          'Que el alumno haya contestado todas las encuestas de la comisión',
 +
          'El alumno no contestó encuestas de la comisión',
 +
          'regla_encuestas_comision');
 +
 
 +
-- Mensajes
 +
-- $1$ = Nombre del Alumno
 +
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
 +
  VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');
 +
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
 +
  VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');
 +
 
 +
-- Parametros
 +
 
 +
-- Parámetros de Contexto
 +
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');
 +
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');
 +
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');
 +
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');
 +
</source>
 +
 
 +
<br>
  
 +
=== Crear el archivo php que contiene la clase que corresponde a la regla ===
 +
 +
El archivo se debe guardar en <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas</tt>, hereda de la clase '''regla''' e implementa el método '''validar''' el cual realizará la validación. <br>
 +
A continuación ejecutar el comando <source lang="php" enclose="div"> guarani pers_autoload </source> que agregará la clase nueva personalizada a los archivos de autoload correspondientes utilizados por Gestión y Autogestión. <br>
 +
Ejemplo:
 
<source lang="php" enclose="div">
 
<source lang="php" enclose="div">
INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('nro_expediente_ingreso', 'Nro de Expediente de ingreso', 'S', 'Nro de expediente de ingreso de la solicitud del título', 0, 0);
+
<?php
INSERT INTO mce_campos (campo, etiqueta, tipo_de_dato, descripcion, longitud, cant_decimales) VALUES ('fecha_recepcion_solicitud', 'Fecha Recepción Solicitud', 'D', 'Fecha de recepción de la solicitud por mesa de entrada', 0, 0);
+
class regla_alumno_no_sancionado extends regla
 +
{
 +
function validar()
 +
        {
 +
    $esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));
 +
  return $this->resultado_final(! $esta_sancionado);
 +
}
 +
}
 +
?>
 
</source>
 
</source>
  
 +
=== Agregar el requisito ===
 +
 +
El requisito puede darse de alta por sistema o ingresarse directamente a la base.<br>
 +
El ''tipo de requisito'' es el '''Proceso relacionado con actividades'''. (Nro 6)<br>
 
<br>
 
<br>
Los tipos de datos de los campos se encuentran en la tabla <b>par_tipo_dato</b>.<br>
 
  
 +
Tablas involucradas:
 +
{| class = "wikitable"
 +
! '''Tabla'''
 +
! '''Descripción'''
 +
|-
 +
|  ''sga_requisitos''
 +
|  Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define. <br> '''IMPORTANTE''': el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999 <br>
 +
|-
 +
|  ''sga_requisitos_validos''
 +
|  Define, para el caso de requisitos usados como ''controles configurables'', las acciones del sistema donde es válido el requisito.<br> Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc... <br> La tabla de acciones es ''sga_acciones'' <br>
 +
|-
 +
|  ''sga_requisitos_x_punto_control''
 +
|  Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito. <br>
 +
|}
 +
 +
=== Configurar el requisito ===
  
=== Agregar los nuevos campos al circuito de egreso ===
+
Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema. <br>
 +
El usuario deberá agregar el requisito a la acción que corresponda por la operación '''Requisitos por Acción''' (Acciones del punto anterior). <br>
 +
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo.
 +
Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).
  
Se deben agregar los campos al circuito de egreso para que esten disponibles al editar el circuito y agregarlos en la transición correspondiente.<br>
+
Tablas involucradas:
Para ello los agregamos en la tabla <b>mce_circuitos_tipos_campos</b>. <br>
+
{| class = "wikitable"
 +
! '''Tabla'''
 +
! '''Descripción'''
 +
|-
 +
|  ''sga_requisitos_grupos'' 
 +
|  Aquí se registran los diferentes grupos de configuración de un requisito en una acción.
 +
|-
 +
|  ''sga_requisitos_accion'' 
 +
|  Asocia al requisito en las acciones del sistema. <br>
 +
|-
 +
|  ''sga_requisitos_aplanado''
 +
|  Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción
 +
|-
 +
|  ''sga_requisitos_conf_x_oper''
 +
|  Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo.  
 +
|}
 +
 
 +
== Ejemplo ==
 +
Objetivo: <br>
 +
* Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.
 +
* Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.
 +
 
 +
=== Alta de la regla ===
 +
Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.<br>
 +
 
 +
Archivo '''Regla_1300_ActividadesAprobadas1erAnio.dca'''<br>
  
 
<source lang="php" enclose="div">
 
<source lang="php" enclose="div">
INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'nro_expediente_ingreso');
+
 
INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_recepcion_solicitud');
+
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario,  mensaje_validacion, php_clase)
 +
  VALUES (1300,
 +
          3,
 +
          'Tener aprobadas n actividades de 1er año',
 +
          'Que el alumno tenga aprobadas n actividades de 1er año',
 +
          'Que el alumno tenga aprobadas n actividades de 1er año',
 +
          'El alumno no aprobó la cantidad de %1% actividades de 1er año',
 +
          'regla_actividades_aprobadas_1er_anio');
 +
 
 +
-- Mensajes
 +
-- $1$ = Nombre del Alumno
 +
-- %1% = Cantidad de actividades aprobadas de 1er año
 +
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
 +
  VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');
 +
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
 +
  VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');
 +
 
 +
-- Parametros de la regla.
 +
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta)  
 +
  VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');
 +
 
 +
-- Parámetros de Contexto
 +
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');
 +
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');
 +
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');
 
</source>
 
</source>
 +
<br>
 +
 +
=== Crear el archivo php de la regla ===
 +
 +
Se crea el archivo  <tt><path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php</tt><br>
 +
A continuación ejecutar el comando <source lang="php" enclose="div"> guarani pers_autoload </source> que agregará la clase nueva personalizada a los archivos de autoload correspondientes utilizados por Gestión y Autogestión. <br>
 +
 +
Archivo: ''regla_actividades_aprobadas_1er_anio.php''
 +
<source lang="php" enclose="div">
 +
<?php
 +
class regla_actividades_aprobadas_1er_anio extends regla
 +
{
 +
    function validar()
 +
{
 +
        // Obtiene los parámetros
 +
  $alumno = $this->get_parametro('alumno');
 +
  $cant_minima_materias_aprobadas = $this->get_parametro('actividades');
 +
 +
        // Recupero cantidad de materias aprobadas de primer año por el alumno
 +
        $cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos_XXX')->get_cantidad_materias_aprobadas($alumno, 1);
 +
 +
        // Verifico si llegó al minimo de materias aprobadas
 +
$resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);
  
=== Agregar los campos en la tabla de solicitud ===
+
if (! $resultado) {
 +
          // No llegó al mínimo requerido de actividades aprobdas de 1er año.
 +
          // Seteo los parámetros del mensaje (Los parámetros $x$)
 +
          // El parámetro de la regla "actividades" se setea automáticamente (%1%).
 +
  $nombre_alumno = toba::consulta_php('co_alumnos_XXX')->get_alumno_nombre($alumno);
  
Los datos que se solicitan en el circuito de egreso que estan definidos por defecto se registran en la tabla de solicitud de certificado (sga_certificados_otorg). <br>
+
  $this->set_parametros_mensaje_validacion(array($nombre_alumno), true);
Como cualquier personalización donde se agregen nuevos campos en una tabla, se deberá crear una tabla con la misma PK que la tabla original y que contenga los nuevos campos de la personalización.<br>
+
}
En este caso por ejemplo podemos crear la tabla <b>sga_certificados_otorg_pers</b>.
+
        // Devuelvo el resultado del control
 +
        Return $resultado;
 +
    }
 +
}
 +
?>
 +
</source>
  
<source lang="php" enclose="div">
+
Archivo: ''co_alumnos_XXX.php'' (clase de consulta personalizada, donde XXX es el nodo de institución otorgado por el SIU)
CREATE  TABLE sga_certificados_otorg_pers
+
<source lang="php" enclose="div">
(
+
    .....
nro_solicitud INTEGER NOT NULL,
+
    function get_cantidad_materias_aprobadas($alumno, $anio_cursada)
nro_expediente_ingreso varchar(50) NULL,
+
    {
fecha_recepcion_solicitud Date NULL
+
      // Cantidad de actividades aprobadas de 1er año del Plan del Alumno.
);
+
      $sql = "SELECT count(*) as cant_aprobadas
 +
                FROM sga_alumnos as a,
 +
                    vw_elementos_plan as ep,
 +
                    vw_hist_academica as v
 +
              WHERE a.alumno = $alumno
 +
                AND ep.plan_version = a.plan_version
 +
                AND ep.anio_de_cursada = $anio_cursada
 +
                AND v.alumno  = a.alumno
 +
                AND v.elemento = ep.elemento
 +
                AND v.estado = 'A'
 +
              ";
 +
      // Ejecuto la consulta en la base 
 +
      $rs = guarani_db::consultar_fila($sql);
  
ALTER TABLE sga_certificados_otorg_pers ADD CONSTRAINT pk_sga_certificados_otorg_pers PRIMARY KEY (nro_solicitud);
+
      // Retorno el resultado
 +
      return $rs['cant_aprobadas'];
 +
    }
 +
  .......
 
</source>
 
</source>
  
 +
=== Alta del requisito ===
 +
El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.<br>
 +
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.<br>
 +
 +
Archivo: '''Requisito_1300_ActiviadesAprobadas1erAnio.dca'''
  
=== Crear la plantilla para el formulario ===
+
<source lang="php" enclose="div">
 +
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 +
-- Tabla: sga_requisitos, sga_requisitos_validos
 +
-- Versión: 3.7.0
 +
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año
 +
--
 +
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año
 +
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  
Los datos serán solicitados al usuario en el sistema. Para ello debe crearse una plantilla que contenga estos dos datos que serán solicitados al usuario a través de un formulario.<br>
+
INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla)
La plantilla será creada desde el Toba Editor y luego hay que registrarla en la tabla <b>mce_plantillas</b>
+
  VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);
El id de plantilla deber ser un numero mayor a 1000. El SIU se reserva los numeros del 1 al 999.<br>
 
  
<source lang="php" enclose="div">
+
-- En el caso que el requisito sea usado como un control configurable, se debe definir para que acciones se usa el requisito:
INSERT INTO mce_plantillas (plantilla, nombre, descripcion,  archivo_plantilla, admite_solicitud) VALUES (1000, 'Datos Ingreso Solicitud', 'Datos ingreso de la solicitud de titulo', 'IngresoSolicitudTitulo.jasper', 1);
+
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (1, 1300); -- Inscripción a Cursadas
</source>
+
-- INSERT INTO sga_requisitos_validos (accion, requisito) VALUES (2, 1300); -- Inscripción a Examen
  
 +
-- 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 sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación
  
=== Editar el circuito de egreso ===
+
</source>
  
Una vez creada la plantilla y los datos en la base, se debe editar el circuito de egreso para agregar el formulario en una transición existente o una nueva transición del circuito.<br>
+
== Puntos de control ==
Alli se debe seleccionar el formulario que corresponde agregando la plantilla creada en el punto anterior que contendrà los nuevos campos a solicitar al usuario. <br>
+
En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000. <br>
Alli se indicará para cada campo si el dato es de ingreso obligatorio.<br>
+
El SIU se reserva los números del 1 al 999.<br>

Revisión actual del 13:30 11 oct 2016

Pasos para crear un requisito de tipo proceso

A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:

  • <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión

Crear la regla

Se define regla al proceso que contiene la lógica para resolver el caso propuesto.
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.
En el caso de crear una nueva regla se debe dar de alta la misma definiéndola en un conjunto de tablas que se detallan a continuación. Se deben ejecutar los inserts en las siguientes tablas:

Tabla Observaciones
sga_reglas Registro de la Regla
El dato de regla_tipo = 3 (Tipo Proceso)
IMPORTANTE: el id de la regla debe comenzar en 1000. El SIU se reserva los números del 1 al 999.
sga_reglas_parametros Se indica con qué parámetros se ejecuta la regla.
Para los casos donde el usuario que utiliza el requisito que contiene esta regla lleve parámetros, como por ejemplo la regla que controla si un módulo está cumplido teniendo una cierta cantidad de actividades aprobadas o habiendo obtenido una cantidad de créditos de materias aprobadas.
En este caso la regla tendrá dos parámetros:
Parametro 1: cantidad de actividades aprobadas
Parámetro 2: cantidad de créditos de materias aprobadas
sga_reglas_param_contexto Son los parámetros relacionados con los puntos de control donde se ejecutará el requisito que use la regla. Se indica a quién se le aplicará la regla (a qué alumno, sobre qué actividad, en qué fecha, etc..)
Los parámetros disponibles son los que estén definidos en la tabla par_puntos_control_parametros
sga_reglas_mensajes Se definirá el mensaje correspondiente según interfaz -> gestion /autogestion web / autogestion wap

Si se quieren mostrar datos de parámetros en el mensaje se deben insertar en orden creciente con el formato $nro_parametro$
Ejemplo: El alumno $1$ con legajo nro $2$ debe actualizar sus datos personales.
donde $1$ será reemplazado por el nombre del alumno y $2$ será reemplazado por el número de legajo
Si la regla tuviere parámetros, por ejemplo la regla que el alumno tenga x materias cursadas sin final, entonces ese parámetro puede mostrarse en el mensaje insertando %nro_parametro% (son los parámetros definidos en la tabla sga_reglas_parametros).
Ejemplo: El alumno $1$ ya superó la cantidad de actividades (%1%) cursadas sin final.
donde %1% será reemplazado por la cantidad de materias cursadas definida para el requisito que usa esta regla.

Para catalogar la regla, se debe crear un archivo por cada regla en la carpeta <path proyecto Guaraní>/personalizacion/BD/Datos/_nucleo/Controles/Reglas

Ejemplo: Encuestas de la Comisión
Archivo Regla_326_EncuestasComision.dca

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto
-- Versión: 3.0.0
-- Control: Que el alumno haya contestado las encuestas definidas para la comision
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario,  mensaje_validacion, php_clase)
   VALUES (326,
           3,
           'Encuestas Contestadas',
           'Que el alumno haya contestado todas las encuestas de la comisión',
           'Que el alumno haya contestado todas las encuestas de la comisión',
           'El alumno no contestó encuestas de la comisión',
           'regla_encuestas_comision');

-- Mensajes
-- $1$ = Nombre del Alumno
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (326, 1, 'El alumno $1$ tiene encuestas obligatorias de la comisión por contestar', 'El alumno $1$ contestó todas las encuestas de la comisión');
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (326, 2, 'Tenes encuestas de la comisión sin contestar', 'Contestaste todas las encuestas de la comisión');

-- Parametros

-- Parámetros de Contexto
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'alumno');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'actividad');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'comision');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (326, 'fecha');


Crear el archivo php que contiene la clase que corresponde a la regla

El archivo se debe guardar en <path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas, hereda de la clase regla e implementa el método validar el cual realizará la validación.

A continuación ejecutar el comando
 guarani pers_autoload
que agregará la clase nueva personalizada a los archivos de autoload correspondientes utilizados por Gestión y Autogestión.

Ejemplo:

<?php
class regla_alumno_no_sancionado extends regla
{
        function validar()
        {
           $esta_sancionado = guarani::co('co_personas')->persona_sancionada($this->get_parametro('persona'));
           return $this->resultado_final(! $esta_sancionado);
        }
}
?>

Agregar el requisito

El requisito puede darse de alta por sistema o ingresarse directamente a la base.
El tipo de requisito es el Proceso relacionado con actividades. (Nro 6)

Tablas involucradas:

Tabla Descripción
sga_requisitos Define el requisito identificando el tipo de requisito y la regla que contiene la lógica de lo que el requisito define.
IMPORTANTE: el id del requisito debe comenzar en 1000. El SIU se reserva los números del 1 al 999
sga_requisitos_validos Define, para el caso de requisitos usados como controles configurables, las acciones del sistema donde es válido el requisito.
Ejemplo: Inscripción a Actividades, Inscripción a Examenes, etc...
La tabla de acciones es sga_acciones
sga_requisitos_x_punto_control Para el caso de requisito de tipo "Procesos" define los puntos de control donde puede vincularse el requisito.

Configurar el requisito

Luego de asociar un requisito a una acción, el mismo está disponible para ser configurado. Hasta este momento el requisito aún no está activo en ninguna operación del sistema.
El usuario deberá agregar el requisito a la acción que corresponda por la operación Requisitos por Acción (Acciones del punto anterior).
Una vez agregado estará disponible en las operaciones de la acción seleccionada permitiendo activar/desactivar el control, indicar cómo actúa el mismo y para qué interfaces del sistema estará activo. Es en esta operación donde el requisito se podrá configurar por niveles (Para toda la institución, por Responsable Académica, por Tipo de Propuesta, por Propuesta o por Plan de estudios).

Tablas involucradas:

Tabla Descripción
sga_requisitos_grupos Aquí se registran los diferentes grupos de configuración de un requisito en una acción.
sga_requisitos_accion Asocia al requisito en las acciones del sistema.
sga_requisitos_aplanado Se registra cada requisito para cada versión de plan de estudios que está alcanzado segun la configuración del mismo en una acción
sga_requisitos_conf_x_oper Asocia al requisito a las diferentes operaciones de la acción a la cual se asoció. Aqui se configura el estado del requisito en la operación en cada interfaz del sistema y la forma en que actúa el mismo.

Ejemplo

Objetivo:

  • Crear un nuevo requisito para correlativas que verifique que el alumno haya aprobado x cantidad de actividades de 1er año.
  • Dejar libre la definición de cantidad de actividades aprobadas que se le requerirá al alumno dependiendo de a qué atividad se le agrega este requisito como correlativa.

Alta de la regla

Definimos la regla que se utilizará para el requisito que se necesita agregar en las correlativas de alguna actividad.

Archivo Regla_1300_ActividadesAprobadas1erAnio.dca

INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario,  mensaje_validacion, php_clase)
   VALUES (1300,
           3,
           'Tener aprobadas n actividades de 1er año',
           'Que el alumno tenga aprobadas n actividades de 1er año',
           'Que el alumno tenga aprobadas n actividades de 1er año',
           'El alumno no aprobó la cantidad de %1% actividades de 1er año',
           'regla_actividades_aprobadas_1er_anio');

-- Mensajes
-- $1$ = Nombre del Alumno
-- %1% = Cantidad de actividades aprobadas de 1er año
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (1300, 1, 'El alumno $1$ no tiene aprobadas al menos %1% actividades de 1er año', 'El alumno $1$ aprobó al menos %1% actividades de 1er año');
INSERT INTO sga_reglas_mensajes (regla, interfaz, mensaje_validacion, mensaje_validacion_not)
   VALUES (1300, 2, 'Debés tener aprobadas al menos %1% actividades de 1er año', 'Aprobaste al menos %1% actividades de 1er año');

-- Parametros de la regla.
INSERT INTO sga_reglas_parametros (regla, parametro, etiqueta, tipo_de_dato, orden, valor_desde, valor_hasta)
   VALUES (1300,'actividades', 'Actividades aprobadas de 1er año', 'E', 1, '1', '100');

-- Parámetros de Contexto
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'alumno');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'actividad');
INSERT INTO sga_reglas_param_contexto (regla, parametro) VALUES (1300, 'fecha');


Crear el archivo php de la regla

Se crea el archivo <path proyecto Guaraní>/personalizacion/php/nucleo/_lib/reglas/regla_actividades_aprobadas_1er_anio.php

A continuación ejecutar el comando
 guarani pers_autoload
que agregará la clase nueva personalizada a los archivos de autoload correspondientes utilizados por Gestión y Autogestión.

Archivo: regla_actividades_aprobadas_1er_anio.php

 <?php
 class regla_actividades_aprobadas_1er_anio extends regla
 {
    function validar()
        {
        // Obtiene los parámetros
        $alumno = $this->get_parametro('alumno');
        $cant_minima_materias_aprobadas = $this->get_parametro('actividades');
 
        // Recupero cantidad de materias aprobadas de primer año por el alumno
        $cant_materias_aprobadas_1er_anio = guarani::co('co_alumnos_XXX')->get_cantidad_materias_aprobadas($alumno, 1);

        // Verifico si llegó al minimo de materias aprobadas
        $resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);

        if (! $resultado) {
          // No llegó al mínimo requerido de actividades aprobdas de 1er año.
          // Seteo los parámetros del mensaje (Los parámetros $x$)
          // El parámetro de la regla "actividades" se setea automáticamente (%1%).
          $nombre_alumno = toba::consulta_php('co_alumnos_XXX')->get_alumno_nombre($alumno);

          $this->set_parametros_mensaje_validacion(array($nombre_alumno), true);
        }
        // Devuelvo el resultado del control
        Return $resultado;
     }
 }
 ?>

Archivo: co_alumnos_XXX.php (clase de consulta personalizada, donde XXX es el nodo de institución otorgado por el SIU)

    .....
    function get_cantidad_materias_aprobadas($alumno, $anio_cursada)
    {
      // Cantidad de actividades aprobadas de 1er año del Plan del Alumno.
      $sql = "SELECT count(*) as cant_aprobadas
                FROM sga_alumnos as a,
                     vw_elementos_plan as ep,
                     vw_hist_academica as v
               WHERE a.alumno = $alumno
                 AND ep.plan_version = a.plan_version
                 AND ep.anio_de_cursada = $anio_cursada
                 AND v.alumno   = a.alumno
                 AND v.elemento = ep.elemento
                 AND v.estado = 'A'
              "
;
      // Ejecuto la consulta en la base  
      $rs = guarani_db::consultar_fila($sql);

      // Retorno el resultado
      return $rs['cant_aprobadas'];
    }
   .......

Alta del requisito

El requisito puede darse de alta generando los inserts en las tablas relacionadas con requisitos.
Para ello se generará un archivo para catalogar el requisito personalizado asociando la regla creada en el anterior.

Archivo: Requisito_1300_ActiviadesAprobadas1erAnio.dca

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Tabla: sga_requisitos, sga_requisitos_validos
-- Versión: 3.7.0
-- Control: Verificar si el alumno tiene aprobada n actividades de 1er año
--
-- Usa la regla nro 1300 - Tener aprobadas n actividades de 1er año
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

INSERT INTO sga_requisitos (requisito, requisito_tipo, nombre, requisito_subordinado_de, descripcion, regla)
   VALUES (1300, 6, 'Tener aprobadas n actividades de 1er año', NULL, 'Tener aprobadas n actividades de 1er año', 1300);

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

-- 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 sga_requisitos_x_punto_control (pto_control, requisito, orden) VALUES (1, 1300, 5); -- Persona - Operación

Puntos de control

En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000.
El SIU se reserva los números del 1 al 999.