Posible error o ajuste en requisito de proceso de ausencia en mesa anterior

Hola, comunidad. Planteo un tema que encontré en el requisito de proceso de ausencia en la mesa anterior. Encontré que en mi Facultad no estaba funcionando, por lo que revisé el código y me encontré que en la consulta sql que llama que se encuentra en la función get_llamado_anterior que se encuentra en la clase co_mesas_de_examen , parece faltar algo.
Lo detallo. La consulta original es:
SELECT sga_llamados_turno.llamado
FROM sga_llamados_turno,
sga_turnos_examen,
sga_periodos
WHERE sga_llamados_turno.turno_examen = sga_turnos_examen.turno_examen AND
sga_llamados_turno.periodo = sga_periodos.periodo AND
sga_turnos_examen.turno_tipo = ‘“.turno_de_examen::tipo_normal.”’ AND
sga_periodos.fecha_inicio = ( SELECT MAX(periodos.fecha_inicio)
FROM sga_periodos as periodos
WHERE periodos.fecha_inicio < $periodo_fecha_inicio AND
periodos.periodo <> $periodo);

En la última subconsulta, creo entender que falta una claúsula más para que la máxima fecha que encuentre, sea de un turno de examen tipo normal, tal como la fecha que se busca fuera de la subconsulta. SI esto fuera correcto, la consulta completa en esa función sería:

SELECT sga_llamados_turno.llamado
FROM sga_llamados_turno,
sga_turnos_examen,
sga_periodos
WHERE sga_llamados_turno.turno_examen = sga_turnos_examen.turno_examen AND
sga_llamados_turno.periodo = sga_periodos.periodo AND
sga_turnos_examen.turno_tipo = ‘“.turno_de_examen::tipo_normal.”’ AND
sga_periodos.fecha_inicio = ( SELECT MAX(periodos.fecha_inicio)
FROM sga_periodos as periodos
WHERE periodos.fecha_inicio < $periodo_fecha_inicio AND
periodos.periodo <> $periodo AND
periodo IN (SELECT periodo FROM sga_llamados_turno WHERE turno_examen IN
(SELECT turno_examen FROM sga_turnos_examen WHERE turno_tipo = ‘“.turno_de_examen::tipo_normal.”’))
);

En negrita se encuentra lo que agregué en el código. Quisiera saber si alguien más tuvo este problema y por otro lado si sería correcta la corrección.

Como corresponde, al cambio lo realicé extendiendo la clase en la carpeta personalizacion.

Aguardo comentarios al respecto.

Desde ya muchas gracias!!!

Pablo

Hola

La regla, como está se aplica a llamados normales, y busca el llamado anterior cualquiera sea el tipo.
En todo caso si para tu institución, el llamado anterior tambien tiene que ser normal, te aconsejaría modificar la regla.

La funcion get_llamado_anterior tambien se usa en otra regla.

Emilio

Hola, Emilio. Gracias por responder. Entiendo eso, pero creo entender que al buscar por un lado los llamados normales, pero la máxima fecha anterior de todos los llamados (incluyendo los “no normales”), de haber un llamado “no normal” entre medio, el requisito no traerá correctamente la fecha del llamado anterior normal y por ende no funcionará en esos casos. Yo lo estoy cambiando ya que justo encontré un caso así en UNER y creo que no es tan extraño tener este tipo de casos.
De todas maneras, revisaré que otros requisitos utilizan esta función para evitar inconvenientes.
Abrazo!!!

Pablo