Diferencia entre revisiones de «SIU-Guarani/Version3.21.0/personalizaciones/CriteriosPrioridadInscCursada»

De SIU
Saltar a: navegación, buscar
(Personalizar criterios de prioridad de procesamiento de inscripciones a actividades por prioridad)
 
(No se muestran 4 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
<span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span>
 
<span style="float: right; margin: 0 0 15px 15px;">{{TOClimit|4}}</span>
==  Personalizar criterios de prioridad de procesamiento de inscripciones a actividades por prioridad ==
+
==  Personalizar criterios de ordenamiento de alumnos para el procesamiento de inscripciones a actividades por prioridad ==
  
 
=== Crear un nuevo criterio de ordenamiento de alumnos a procesar ===
 
=== Crear un nuevo criterio de ordenamiento de alumnos a procesar ===
Línea 6: Línea 6:
  
 
Alli se debe registrar los siguientes datos:<br>
 
Alli se debe registrar los siguientes datos:<br>
'''criterio'' =  id correlativo<br>
+
'''criterio''' =  id correlativo<br>
 
'''nombre''' = Nombre del Criterio de ordenamiento (El que ve el usuario al procesar inscripciones por prioridad)<br>
 
'''nombre''' = Nombre del Criterio de ordenamiento (El que ve el usuario al procesar inscripciones por prioridad)<br>
 
'''descripcion''' = Descripción detallada del criterio.<br>
 
'''descripcion''' = Descripción detallada del criterio.<br>
 
'''orden''' = Nro de orden en que aparece el criterio listado.<br>
 
'''orden''' = Nro de orden en que aparece el criterio listado.<br>
''activo''' = Indica si el criterio esta activo y disponible para el usuario o esta dado de baja. Valores: 1 = Activo / 0 = Inactivo<br>
+
'''activo''' = Indica si el criterio esta activo y disponible para el usuario o esta dado de baja. Valores: '''1''' = Activo / '''0''' = Inactivo<br>
 
'''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.<br><br>
 
'''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.<br><br>
  
Línea 18: Línea 18:
 
Como esa tabla ya es consultada en la tabla que recupera lso alumnos, entonces este criterio se define agregando el registro en la tabla:<br>
 
Como esa tabla ya es consultada en la tabla que recupera lso alumnos, entonces este criterio se define agregando el registro en la tabla:<br>
  
</source>
+
<source lang="php" enclose="div">
 
INSERT INTO sga_criterios_prioridad_cursada (criterio, nombre, descripcion, orden, activo, criterio_base)  
 
INSERT INTO sga_criterios_prioridad_cursada (criterio, nombre, descripcion, orden, activo, criterio_base)  
 
   VALUES (10, 'Coeficiente', 'Coeficiente del alumno', 10, 'sga_alumnos.coeficiente DESC');
 
   VALUES (10, 'Coeficiente', 'Coeficiente del alumno', 10, 'sga_alumnos.coeficiente DESC');
<?php>
+
</source>
  
 
''Ejemplo 2'':
 
''Ejemplo 2'':
Línea 28: Línea 28:
 
Supongamos que la funcion de la base de datos se llama  '''f_alumno_tiene_cud(<ALUMNO>)'''<br>
 
Supongamos que la funcion de la base de datos se llama  '''f_alumno_tiene_cud(<ALUMNO>)'''<br>
  
 +
<source lang="php" enclose="div">
 +
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.alumno)');
 
</source>
 
</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>
 
  
 
<br>
 
<br>
 
Ejemplo de la función tiene CUD:<br>
 
Ejemplo de la función tiene CUD:<br>
  
</source>
+
<source lang="php" enclose="div">
 
CREATE OR REPLACE FUNCTION f_alumno_tiene_cud (pAlumno integer)
 
CREATE OR REPLACE FUNCTION f_alumno_tiene_cud (pAlumno integer)
 
   RETURNS integer AS
 
   RETURNS integer AS
Línea 65: Línea 65:
  
 
GRANT EXECUTE ON FUNCTION f_alumno_tiene_cud(integer) TO public;
 
GRANT EXECUTE ON FUNCTION f_alumno_tiene_cud(integer) TO public;
<?php>
+
</source>

Revisión actual del 16:44 27 abr 2023

Personalizar criterios de ordenamiento de alumnos para el 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:

INSERT INTO sga_criterios_prioridad_cursada (criterio, nombre, descripcion, orden, activo, criterio_base)
  VALUES (10, 'Coeficiente', 'Coeficiente del alumno', 10, 'sga_alumnos.coeficiente DESC');

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

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


Ejemplo de la función tiene CUD:

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;