informar aplazos en analítico

En G3 necesito incluir los aplazos de actas de regulares/promoción en los certificados de materias y analíticos de los alumnos.

Veo que la vista de la historia académica no los incluye…

Pensé en agregar un filtro similar a este:

... and ((ha.origen='P' and ((ha.nota::integer<4 and ha.resultado='R') or (ha.resultado='A'))) or (ha.origen='E' and ha.resultado<>'U') or ha.origen not in ('P','E'))

También pensé optar por trabajar con las escalas de notas y su resultado, sacando los Reprobados del acta de regular + los Aprobados del acta de Promoción pero me pasa que dependiendo de la escala no siempre el reprobado del acta de regulares es un aplazo.

En resumen, todo aplazo en un acta de regulares debe estar en la historia académica (nota<4). Si pudiera agregar resultados intermedios sin miedo a que G3 se comporte de forma anómala agregando una escala 4…6:C (cursó), 0…3:R (reprobó), 7…10 (promocionó) sería fantástico. Con ese cambio alcanzaría con preguntar por el resultado…

Completo un poco… el tema es que tengo materias que no se pueden cursar… su escala es 0…6:R, 7…10:A, otras cuya escala es 0…5:R,6…10:P y la mayoría de los casos son 0…6:R, 7…10:P

¿Cómo sugieren que debería encararse este tema? ¿Está bien preguntar por ha.nota::integer<4? ¿Sugieren corregir las escalas de notas?

Buen día…
La vw_hist_academica y la básica contemplan todas las notas, con ausentes y aplazos, no se que vista de historia académica mencionan que no las incluyen?
De todas formas les conviene utilizar condiciones directamente sobre el resultado, que es un character (que lo toma de sga_escala_notas_resultado), no sobre la nota porque según la escala puede ser numérica o conceptual, y si ponen una condición de mayor o menor sobre una nota conceptual (un aprobado o desaprobado) no les va andar la consulta que realicen.
Son algunas recomendaciones nomas…

A eso me refería… ya lo escribí pero intentaré ser claro.

En la escala de notas de las actas de promoción, el resultado ‘R’ (reprobó) incluye, aparte de los aplazos, las notas menores a 7 (mínima nota para promocionar): 6, 5 y 4.Por lo tanto preguntar únicamente por resultado para las promociones no sirve.

Para evitar algun error en la verificación de la nota < 4, incluí una verificación de nota numérica. Pero eso solamente complicó mas el filtro…

Agregué esta función:

CREATE OR REPLACE FUNCTION isnumeric(text) RETURNS BOOLEAN AS $$
DECLARE x NUMERIC;
BEGIN
    x = $1::NUMERIC;
    RETURN TRUE;
EXCEPTION WHEN others THEN
    RETURN FALSE;
END;
$$
STRICT
LANGUAGE plpgsql IMMUTABLE;

y en el filtro agregué una llamado a la función:

... and ((ha.origen='P' and ((isnumeric(ha.nota) and ha.nota::integer<4 and ha.resultado='R') or (ha.resultado='A'))) or (ha.origen='E' and ha.resultado<>'U') or ha.origen not in ('P','E'))

PD: La idea de modificar la escala de notas y crear un estado intermedio ya la deseché…