Control de superposición horaria en mesas de examen

Hola.

Estamos necesitando controlar que los alumnos no se inscriban a mesas de examen en una misma fecha y horarios superpuestos, para lo cual, he creado una regla, requisito y punto de control de manera similar a la que hay para el control de superposición horaria en comisiones.

Seguí los pasos del instructivo para definir un nuevo requisito de proceso, pero por algún motivo que aún no descubrí, no me está considerando el nuevo punto de control al hacer esta consulta:
SELECT DISTINCT
sga_requisitos_x_accion.requisito_accion,
sga_requisitos_x_accion.tipo,
sga_requisitos_x_accion.operador_not,
sga_requisitos.requisito,
sga_acciones_operacion.accion,
cast(null as integer) as entidad,
sga_requisitos_x_accion.estado,
sga_requisitos.nombre,
sga_requisitos.requisito_subordinado_de,
sga_requisitos_conf_x_oper.actua_como,
sga_requisitos_conf_x_oper.interfaz,
COALESCE(sga_requisitos_x_accion.regla, sga_requisitos.regla) as regla,
COALESCE(sga_requisitos_x_accion.parametros, ‘’) as parametros,
sga_requisitos_x_punto_control.orden as orden
FROM sga_acciones_operacion
JOIN sga_requisitos_grupos ON (sga_requisitos_grupos.accion = sga_acciones_operacion.accion)
JOIN sga_requisitos_x_accion ON (sga_requisitos_x_accion.grupo_requisito = sga_requisitos_grupos.grupo_requisito)
JOIN sga_requisitos_x_punto_control ON (sga_requisitos_x_punto_control.requisito = sga_requisitos_x_accion.requisito)
JOIN sga_requisitos_conf_x_oper ON (sga_requisitos_conf_x_oper.requisito_accion = sga_requisitos_x_accion.requisito_accion)
JOIN sga_requisitos ON (sga_requisitos.requisito = sga_requisitos_x_accion.requisito)
JOIN sga_requisitos_aplanado ON (sga_requisitos_aplanado.requisito_accion = sga_requisitos_x_accion.requisito_accion)

            WHERE    sga_requisitos_aplanado.plan_version        = '5' 
            AND        sga_requisitos_x_punto_control.pto_control    = '19'
            AND        sga_acciones_operacion.operacion            = '800SIUEXA003'
            AND        sga_requisitos_x_accion.tipo                = 'R'
            AND        sga_requisitos_conf_x_oper.activo            = 'S'
            AND        sga_requisitos_conf_x_oper.operacion        = '800SIUEXA003'
            AND        sga_requisitos_conf_x_oper.interfaz            = 1
            
            ORDER BY 12

El punto de control nuevo no es el que se muesta ahí, sino que es otro ya definido (1318), y sólo está considerando el 8, el 9 y el 19 para esta operación.
Seguramente me está faltando el dato en alguna tabla…

Muchas gracias.
Besos. Vero

Existe el requisito nro 103 = Que el alumno no esté inscripto en otra mesa de examen en la misma fecha
Este requisito se implementa con la regla nro 346
Una opción es personalizar esta regla 346 (regla_alumno_existe_en_otra_mesa_examen_misma_fecha) o crear una nueva regla y asignar esa al requisito 103.
La regla 346 solo valida que el alumno no este inscripto en esa fecha, no controla superposición horaria.
De esta forma no tenes que configurar mas que eso.

El tema de agregar un punto de control es que en el código php donde se ejecutan controles (inscripción a examen, cerrar acta de examen, procesar inscripciones a examen, etc…) tenes que agregar explicitamente el llamado al punto de control que agregaste (el punto de control 1318.
No es necesario agregar nuevos puntos de control. Se supone que con los que ya existen reciben todos los parámetros necesarios para hacer los controles que se requieran.

El requisito 103 se ejecuta en el punto de control nro 9 (Alumno - Mesa de Examen) que recibe los parametros: alumno, elemento, llamado_mesa y fecha
Si igualmente queres agregar un requisito fijate de agregarlo en este punto de control.


Resumiendo lo que podes hacer (de menor a mayor esfuerzo):

  1. Modificar la regla 346 implementada en regla_alumno_existe_en_otra_mesa_examen_misma_fecha y agregarla como personalizada para que ademas controle superposición horaria.

  2. Crear una nueva regla y en el requisito 103 cambiar la regla 346 por tu regla. Esto implica crear un nuevo archivo php que implemente la regla.

  3. Crear un nuevo requisito, una nueva regla y agregar el requisito en el punto de control nro 9

  4. Idem punto 3, pero incluir el requisito en el punto de control personalizado. Esto implica modificar el codigo de las diferentes operaciones de examenes para que se ejecute el punto de control personalizado.
    Por lo comentado fuiste por esta opción que es la mas complicada.

2

Hola Ale.

Muchas gracias por la pronta respuesta.

Estamos en la versión 3.17, no tengo ese requisito… por eso estuve armando este control… qué lástima!

“El tema de agregar un punto de control es que en el código php donde se ejecutan controles (inscripción a examen, cerrar acta de examen, procesar inscripciones a examen, etc…) tenes que agregar explicitamente el llamado al punto de control que agregaste (el punto de control 1318).” Me imaginaba que tenía que venir por ese lado… porque ya me fijé en todas las tablas del sistema… ja

Me fijo en el php, sino, tendría que pedirles todos los scripts necesarios para instalar este requisito al standard. No sé qué me recomendás.

Muchas gracias.
Besos. Vero

Recomiendo que actualicen la version, se estan quedando muy atras!!!
Mas alla de eso, de necesitar ya este requisito para los examenes, podes bajar la version 3.18 que fue donde se implementó este requisito.
En el script de conversion 001310.sql estan los inserts de la regla y requisito.
Para que no te de error cuando conviertan a 3.10 podes tomar eso de base y generar tu propio requisito y regla con los Ids de Uds.

Hola Ale.

Sí, lo se, la actualización de versión está pensada para el año que viene, ya iríamos por la 3.20 o la última que esté vigente, pero lo tenemos en cartera…
Respecto al control, usé los que ya existen y funcionó perfectamente, así que solucioné el problema.

Esto lo necesito para la inscripción del lunes, por lo que ya lo dejo así, y para Febrero veo de incorporar lo de la versión 3.18 personalizado, que tengo más tiempo.

Muchas gracias.
Besos. Vero

Perfecto! Saludos!!!