fallo en un control

Hola

Estamos queriendo cerrar un acta de 17/10/2016 con un solo alumno y no la deja cerrar puesto que dice:

El alumno .... existe en la mesa de examen del 17/10/2016 en la misma actividad

Justamente es la fecha del acta.
Como hago para ver si está dos veces o algo por el estilo.

Emilio

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;

Hola Alejandro

No devuelve nada.
No debería ser sga_eval_detalle_examenes si el acta está abierta?

Me parece que la regla está funcionando incorrectamente. No está en otra mesa/acta/evaluacion.

Te paso el log. y sigo buscando algun problema.

Emilio


sistema.rar (8.2 KB)

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.

lo mismo.

sigue devolviendo el acta que queres cerrar.
inclusive cree una a proposito con fecha de hoy y me da error.

Creé una solicitud con esta información.
Ya veré en otros estados del proceso del acta, que pasa y lo informo.

Gracias

Emilio

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.

Hay alguna documentación de como debería funcionar? Me la podes pasar por el gds?

En esa consulta hay al menos dos problemas. Pero el punto no es la consulta sino como se maneja el resultado.

Emilio

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.

La otra es en la baja de inscripcion a examen.

Preguntaba por la documentación porque tengo que verlo la semana que viene indefectiblemente.
Si servia para todos lo pasaba.

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.

Si. Estaba activo. Pero el alumno no estaba en ninguna mesa.

Donde si o si tiene que funcionar es en la baja de inscripciones. Cosa que creo que reporte en junio o julio.

El punto es que en realidad no estaba en una acta.
El left join con actas complica.

Emilio

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.

Hola Alejandro

En baja es fundamental. No se puede borrar la inscripcion si está en el acta.

Emilio

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.

Dejo esto para el control.
Abrí un nuevo hilo con la discrepancia entre gestion y autogestion.

Despues sigo con el control

Emilio

Hola Alejandro

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…

Emilio

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)