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

De SIU
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
__TOC__
 
__TOC__
== Pasos para crear un requisito de tipo proceso ==
+
== Circuito de Egreso ==
 +
== Agregar nuevos datos a solicitar en una transición del circuito de egreso ==
  
A continuación se detallan los pasos para crear un requisito de tipo proceso. A lo largo de los mismos se deberá reemplazar:
+
A continuación se detallan los pasos para agregar datos en una transición del circuito.
* <path proyecto Guaraní> por el path donde está instalado el proyecto SIU-Guaraní Gestión
 
  
=== Crear la regla ===
+
=== 1. Agregar los nuevos campos ===
  
Se define regla al proceso que contiene la lógica para resolver el caso propuesto.<br>
+
Se deben agregar los nuevos campos en la tabla <b>mce_campos</b>.<br>
Cuando se define un nuevo requisito se puede reutilizar una regla ya existente o crear una nueva.<br>
+
Supongamos que queremos agregar los datos "Nro de expediente de ingreso" y "Fecha recepción solicitud".<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.
+
Agregamos los nuevos campos:<br>
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>
 
|}
 
 
 
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>
 
  
 
<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);
-- Tabla: sga_reglas, sga_reglas_parametros, sga_reglas_param_contexto
+
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);
-- Versión: 3.0.0
+
</source>
-- 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)
+
<br>
  VALUES (326,
+
Los tipos de datos de los campos se encuentran en la tabla <b>par_tipo_dato</b>.<br>
          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>
+
=== 2. Agregar los nuevos campos al circuito de egreso ===
  
=== Crear el archivo php que contiene la clase que corresponde a la regla ===
+
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>
 +
Para ello los agregamos en la tabla <b>mce_circuitos_tipos_campos</b>. <br>
  
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">
<?php
+
INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'nro_expediente_ingreso');
class regla_alumno_no_sancionado extends regla
+
INSERT INTO mce_circuitos_tipos_campos (tipo, campo) VALUES ('Egreso', 'fecha_recepcion_solicitud');
{
 
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 ===
+
=== 3. Agregar los campos en la tabla de solicitud ===
 
 
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>
 
 
 
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 ===
 
 
 
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).
 
 
 
Tablas involucradas:
 
{| 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>
+
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>
 +
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>.
  
 
<source lang="php" enclose="div">
 
<source lang="php" enclose="div">
 +
CREATE  TABLE sga_certificados_otorg_pers
 +
(
 +
nro_solicitud INTEGER NOT NULL,
 +
nro_expediente_ingreso varchar(50) NULL,
 +
fecha_recepcion_solicitud Date NULL
 +
);
  
INSERT INTO sga_reglas (regla, regla_tipo, nombre, descripcion, mensaje_usuario,  mensaje_validacion, php_clase)
+
ALTER TABLE sga_certificados_otorg_pers ADD CONSTRAINT pk_sga_certificados_otorg_pers PRIMARY KEY (nro_solicitud);
  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>
+
=== 4. Crear la plantilla para el formulario ===
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''
+
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>
<source lang="php" enclose="div">
+
La plantilla será creada desde el Toba Editor y luego hay que registrarla en la tabla <b>mce_plantillas</b>
<?php
+
El id de plantilla deber ser un numero mayor a 1000. El SIU se reserva los numeros del 1 al 999.<br>
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
+
<source lang="php" enclose="div">
$resultado = $this->resultado_final($cant_materias_aprobadas_1er_anio < $cant_minima_materias_aprobadas);
+
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);
 
 
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;
 
    }
 
}
 
?>
 
</source>
 
 
 
Archivo: ''co_alumnos_XXX.php'' (clase de consulta personalizada, donde XXX es el nodo de institución otorgado por el SIU)
 
<source lang="php" enclose="div">
 
    .....
 
    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'];
 
    }
 
  .......
 
 
</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'''
+
=== 5. Editar el circuito de egreso ===
 
 
<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
 
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 
 
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
 
 
 
</source>
 
  
== Puntos de control ==
+
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>
En el caso que quieran agregar nuevos puntos de control, comenzar desde el 1000. <br>
+
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>
El SIU se reserva los números del 1 al 999.<br>
+
Alli se indicará para cada campo si el dato es de ingreso obligatorio.

Revisión del 12:10 11 oct 2016

Circuito de Egreso

Agregar nuevos datos a solicitar en una transición del circuito de egreso

A continuación se detallan los pasos para agregar datos en una transición del circuito.

1. Agregar los nuevos campos

Se deben agregar los nuevos campos en la tabla mce_campos.
Supongamos que queremos agregar los datos "Nro de expediente de ingreso" y "Fecha recepción solicitud".
Agregamos los nuevos campos:

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);
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);


Los tipos de datos de los campos se encuentran en la tabla par_tipo_dato.


2. Agregar los nuevos campos al circuito de egreso

Se deben agregar los campos al circuito de egreso para que esten disponibles al editar el circuito y agregarlos en la transición correspondiente.
Para ello los agregamos en la tabla mce_circuitos_tipos_campos.

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');

3. Agregar los campos en la tabla de solicitud

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).
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.
En este caso por ejemplo podemos crear la tabla sga_certificados_otorg_pers.

CREATE  TABLE sga_certificados_otorg_pers
(
        nro_solicitud INTEGER NOT NULL,
        nro_expediente_ingreso varchar(50) NULL,
        fecha_recepcion_solicitud Date NULL
);

ALTER TABLE sga_certificados_otorg_pers ADD CONSTRAINT pk_sga_certificados_otorg_pers PRIMARY KEY (nro_solicitud);


4. Crear la plantilla para el formulario

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.
La plantilla será creada desde el Toba Editor y luego hay que registrarla en la tabla mce_plantillas El id de plantilla deber ser un numero mayor a 1000. El SIU se reserva los numeros del 1 al 999.

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);


5. Editar el circuito de egreso

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.
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.
Alli se indicará para cada campo si el dato es de ingreso obligatorio.