SIU-Guarani/Version3.21.0/personalizaciones/CriteriosPrioridadInscCursada

De SIU
Revisión del 16:34 27 abr 2023 de Adelu (discusión | contribuciones) (Personalizar criterios de prioridad de procesamiento de inscripciones a actividades por prioridad)
Saltar a: navegación, buscar

Personalizar criterios de prioridad de procesamiento de inscripciones a actividades por prioridad

Crear un nuevo criterio de ordenamiento de alumnos a procesar

Los criterios por los que se va a ordenar los alumnos para procesar sus inscripciones se registran en al tabla sga_criterios_prioridad_cursada,

Alli se debe registrar los siguientes datos:
criterio = id correlativo
nombre = Nombre del Criterio de ordenamiento (El que ve el usuario al procesar inscripciones por prioridad)
descripcion = Descripción detallada del criterio.
orden = Nro de orden en que aparece el criterio listado.
activo' = Indica si el criterio esta activo y disponible para el usuario o esta dado de baja. Valores: 1 = Activo / 0 = Inactivo
criterio_base = Código SQL que será agreagdo a la consulta de alumnos inscriptos a las actividades por prioridad que será el que indique en que orden se listan los alumnos. Este codigo se agrega en el ORDER BY de la query que recupera alumnos.


Ejemplo 1:
Agregar el criterio de Coeficiente que tiene asignado el alumno. A mayor coeficiente mayor prioridad para inscribirse. En este caso se debe usar el dato coeficiente de la tabla sga_alumnos.
Como esa tabla ya es consultada en la tabla que recupera lso alumnos, entonces este criterio se define agregando el registro en la tabla:

</source> INSERT INTO sga_criterios_prioridad_cursada (criterio, nombre, descripcion, orden, activo, criterio_base)

 VALUES (10, 'Coeficiente', 'Coeficiente del alumno', 10, 'sga_alumnos.coeficiente DESC');

<?php>

Ejemplo 2: Agregar el criterio de que el alumno tiene el CUD. Si tiene el CUD tiene prioridad sobre quien no lo tiene.
En este caso, como no es un dato que se encuentra en la query principal, se debe desarrollar una funcion que devuelva 0 si tiene CUD y 1 si no tiene CUD. De esta forma quien tenga CUD se va a listar primero de quien no lo tenga.
Supongamos que la funcion de la base de datos se llama f_alumno_tiene_cud(<ALUMNO>)

</source> INSERT INTO sga_criterios_prioridad_cursada (criterio, nombre, descripcion, orden, activo, criterio_base)

 VALUES (11, 'Tiene CUD', 'Alumno tiene CUD', 11, 'f_alumno_tiene_cud(sga_alumnos.coeficiente)');

<?php>


Ejemplo de la función tiene CUD:

</source> CREATE OR REPLACE FUNCTION f_alumno_tiene_cud (pAlumno integer)

 RETURNS integer AS

$BODY$

-- Variables locales
DECLARE _tiene_cud smallint;

BEGIN

 /* Valor de retorno:

0 = Tiene CUD 1 = NO tiene CUD

 */		
_tiene_cud := 1; -- NO tiene CUD
 SELECT CASE WHEN mdp_datos_discapacidad.tiene_cud = 'S' THEN 0 ELSE 1 END INTO _tiene_cud
   FROM sga_alumnos
   JOIN sga_datos_censales ON sga_datos_censales.persona = sga_alumnos.dato_censal
   JOIN mdp_datos_discapacidad.dato_censal = sga_datos_censales.dato_censal
 WHERE sga_alumnos.alumno = pAlumno;
RETURN _tiene_cud;

END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_alumno_tiene_cud ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

GRANT EXECUTE ON FUNCTION f_alumno_tiene_cud(integer) TO public; <?php>