-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_ultima_cursada_valida -- -- Retorna la ultima cursada aprobada vigente de la actividad cursada por el el alumno -- -- Recibe: get_ultima_cursada_valida(integer, integer) -- 1. Alumno -- 2. Actividad -- Retorna: -- 1. Datos de la Cursada separada por $PARAM$. (año academico | periodo lectivo | fecha regularidad | condición de regularidad | nota | resultado | ubicacion | catedra) -- Ejemplo: 2010$PARAM$1er Cuatrimestre$PARAM$25/06/2010$PARAM$Aprobó Parciales$PARAM$8$PARAM$Aprobado$PARAM$Lujan$PARAM$Romero -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_ultima_cursada_valida(integer, integer); CREATE OR REPLACE FUNCTION get_ultima_cursada_valida(_alumno INTEGER, _actividad INTEGER) RETURNS TEXT AS $BODY$ DECLARE _retorno text; cur1 record; BEGIN _retorno := '$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$$PARAM$'; -- Recupero el nombre de las modalidades de cursada FOR cur1 IN SELECT vw_periodos_lectivos.anio_academico as anio_academico, vw_periodos_lectivos.nombre as periodo_lectivo, to_char(vw_regularidades.fecha, 'DD/MM/YYYY') as fecha_regular , sga_cond_regularidad.nombre as condicion_regularidad, COALESCE(vw_regularidades.nota, '') as nota, sga_escalas_notas_resultado.descripcion as resultado_desc, COALESCE(sga_ubicaciones.nombre, '') as ubicacion, COALESCE(sga_catedras.nombre, '') as catedra FROM vw_regularidades LEFT JOIN sga_cond_regularidad ON vw_regularidades.cond_regularidad = sga_cond_regularidad.cond_regularidad, sga_comisiones LEFT JOIN sga_ubicaciones ON sga_comisiones.ubicacion = sga_ubicaciones.ubicacion LEFT JOIN sga_catedras ON sga_comisiones.catedra = sga_catedras.catedra, vw_periodos_lectivos, sga_escalas_notas_resultado WHERE vw_regularidades.alumno = _alumno AND sga_comisiones.comision = vw_regularidades.comision AND sga_comisiones.elemento = _actividad AND vw_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_escalas_notas_resultado.resultado = vw_regularidades.resultado AND (vw_regularidades.fecha_vigencia IS NULL OR vw_regularidades.fecha_vigencia >= CURRENT_DATE) AND vw_regularidades.resultado = 'A' -- Aprobado ORDER BY vw_regularidades.fecha DESC LOOP -- Recupero datos de la ultima cursada aprobada vigente _retorno := cur1.anio_academico::text || '$PARAM$' || cur1.periodo_lectivo || '$PARAM$' ||cur1.condicion_regularidad || '$PARAM$' ||cur1.fecha_regular || '$PARAM$' || cur1.condicion_regularidad; _retorno := _retorno || '$PARAM$' ||cur1.nota || '$PARAM$' || cur1.resultado_desc || '$PARAM$' ||cur1.ubicacion || '$PARAM$' || cur1.catedra; EXIT; END LOOP; RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function get_ultima_cursada_valida(integer, integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_ultima_cursada_valida (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION get_ultima_cursada_valida (integer, integer) to public;