El control que falla pareciera ser que es el que dice “el alumno no exista en otro acta de examen abierta de la misma actividad”
Fijate de correr esta consulta para ese alumno y ves en que actas abiertas de examen de la misma actividad esta ese alumno:
SELECT *
FROM sga_actas_detalle as d1, sga_actas as a1, vw_mesas_examen as m1,
sga_actas as a2, sga_actas_detalle as d2, vw_mesas_examen as m2
WHERE d1.id_acta = a1.id_acta
AND a1.estado = 'A' -- Acta Abierta
AND a1.origen = 'E' -- Acta de Examen
AND d1.alumno = <ID ALUMNO>
AND m1.llamado_mesa = a1.llamado_mesa
AND m2.mesa_examen_elemento = m1.mesa_examen_elemento -- Misma Actividad
AND a2.llamado_mesa = m2.llamado_mesa
AND a2.id_acta <> a1.id_acta
AND a2.estado = 'A'
AND a2.origen = 'E'
AND d2.id_acta = a2.id_acta
AND d2.alumno = d1.alumno;
Si, perdon me confundi de tabla. Esa consulta que envie es para actas cerradas.
Para verificar si el alumno esta en actas abiertas de examen la consulta es la siguiente:
SELECT *
FROM sga_eval_detalle_examenes as d1, sga_actas as a1, vw_mesas_examen as m1,
sga_actas as a2, sga_eval_detalle_examenes as d2, vw_mesas_examen as m2
WHERE d1.evaluacion = a1.evaluacion
AND a1.estado = 'A' -- Acta Abierta
AND a1.origen = 'E' -- Acta de Examen
AND d1.alumno = <ID ALUMNO>
AND m1.llamado_mesa = a1.llamado_mesa
AND m2.mesa_examen_elemento = m1.mesa_examen_elemento -- Misma Actividad
AND a2.llamado_mesa = m2.llamado_mesa
AND a2.id_acta <> a1.id_acta
AND a2.estado = 'A'
AND a2.origen = 'E'
AND d2.evaluacion = a2.evaluacion
AND d2.alumno = d1.alumno;
Fijate, porque por ahi el alumno puede estar en otro acta abierta de examen pero con resultado desaprobado, asi que tenes que tener en cuenta el resultado tambien. Si fuera asi debieran primero cerrar el otro acta y luego el acta mas reciente.
Si ingresas por el Toba Editor al sistema veras que en el listado de operaciones existe la operacion Pruebas > Reglas el cual ingresa a una operación que permite probar los proceso utilizados en los requisitos/controles configurables.
Fijate de buscar el requisito que falla y ejecutarlo con los datos de ese alumno/acta de examen, etc . .para probar dicho control.
Emilio, viendo el log que enviaste, pareciera que el control que falla y envia ese mensaje al usuario es el siguiente:
[DEBUG][guarani] Validando Control: b Que el alumno no exista en otra mesa de examen de la actividad sin estar en acta de examen cerrada[/b]
[DEBUG][guarani] SQL con perfil de datos:
SELECT to_char(sga_llamados_mesa.fecha,‘DD/MM/YYYY’) as fecha_formato_visual
FROM sga_eval_detalle_examenes
LEFT JOIN sga_actas ON sga_eval_detalle_examenes.id_acta = sga_actas.id_acta,
sga_alumnos,
sga_evaluaciones,
sga_llamados_mesa,
sga_mesas_examen
WHERE sga_eval_detalle_examenes.alumno = sga_alumnos.alumno AND
sga_eval_detalle_examenes.evaluacion = sga_evaluaciones.evaluacion AND
sga_evaluaciones.entidad = sga_llamados_mesa.entidad AND
sga_llamados_mesa.mesa_examen = sga_mesas_examen.mesa_examen AND
sga_alumnos.persona = ( SELECT alumnos.persona
FROM sga_alumnos as alumnos
WHERE alumnos.alumno = ‘2615’) AND
sga_mesas_examen.elemento = ‘45’ AND
(sga_eval_detalle_examenes.id_acta IS NULL OR sga_actas.tipo_acta <> 'R')
ORDER BY sga_llamados_mesa.fecha
LIMIT 1
Esta consulta coresponde al metodo get_fecha_examen_alumno_actividad del archivo php\nucleo\matriculas\alumnos \co_alumnos.php que es ejecutada desde la regla regla_alumno_existe_en_acta_examen_abierta
Si, pareciera que a esa regla le falta pasar el dato del llamado y mesa de examen para que no controle sobre la mesa de examen que esta el alumno y se desea cerrar el acta.
La documentación de los controles configurables se encuentra aqui. Pero creo que en este caso falta agregar la documentación de ese control.
Esta claro que es como lo mencionas en la solicitud, el control funciona en la inscripción a examen o cuando se agrega un alumno a un acta (sin inscripcion) pero no al cerrar el acta si se controla alli ya que no se esta considerando la mesa a la que pertenece el acta para no tenerla en cuenta en el control.
Emilio, tengo una duda. Este control no estaba activo en la inscripción a examen o en la operacion para agregar alumnos a un acta de examen?
Porque es alli donde debe ser configurado y de estar activo no debio dejarlo inscribir en la mesa o agregarlo al acta por estar en otra mesa/acta de examen.
Es decir, tal cual esta el control hoy tiene sentido activarlo en la inscripcion a examen y frenarlo alli para no dejarlo inscribir, o si no se genera inscripcion y se lo agrega directamente a la mesa de examen, alli tambien configurar el control.
En la baja de inscripciones no tiene sentido activar este control, no?
Y tampoco debiera estar activo en el cierre de actas (al menos como esta desarrollado hoy ese control).
Alcanza con configurarlo en la inscripción a examen y en la operacion de agregar alumnos a la mesa de examen.
Se modificará el control para la version 3.13.0, para que reciba el dato de la mesa de examen para que no busque al alumno en la misma mesa de examen de la cual se esta cerrando el acta de examen.
La solucion actual es no configurar ese control en el cierre de acta de examen y si configurarlo en las operaciones de inscripción a examen o agregado de alumnos a la mesa de examen.
Pero esa es una restricciòn en la accion de dar de baja la inscripción. No tiene que ver con este control.
El control fijo que existe actualmente en la baja de inscripcion es si el alumno esta en un acta cerrada, faltaria este control de si esta asignado a un acta abierta.
Si cargaste una solicitud por este tema decinos cual es asi realizamos el ajuste y sino carga una solicitud asi seguimos por este control en la baja de inscripciones.
Este control no tiene sentido en esta operacion de baja de inscripción a cursada. Es mas deberiamos ocultarlo para que no se pueda configurar en esta operacion.
Solicitud número 21361: control de alumno en actas abiertas al momento de dar de baja la inscripcion
Fijate. Creo que hay que separar las dos cosas. El control en actas abiertas y el hecho que no pueda darse de baja si ya está en el acta.
Parece lo mismo…
Si son dos cosas diferentes.
El control de que no pueda darse de baja si esta en un acta (abierta o cerrada) es un control fijo (no configurable) que se hace en l abaja de inscripción. Esto va para 3.13 (incluído el tema de si existe en acta anulada)