-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: get_ultima_cursada -- -- Retorna la ultima cursada del alumno. La cursada puede estar aprobada/reprobada, vigente o no vigente -- -- Recibe: get_ultima_cursada(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 | fecha de fin de vigencia | vigente (SI/NO)| ubicacion | catedra) -- Ejemplos: -- 2010$PARAM$1er Cuatrimestre$PARAM$25/06/2010$PARAM$Aprobó Parciales$PARAM$8$PARAM$Aprobado$PARAM$01/01/2013$PARAM$SI$PARAM$Lujan$PARAM$Romero -- 2010$PARAM$1er Cuatrimestre$PARAM$28/06/2010$PARAM$Promocionó$PARAM$9$PARAM$Aprobado$PARAM$$PARAM$SI$PARAM$Capital$PARAM$ -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION get_ultima_cursada(integer, integer); CREATE OR REPLACE FUNCTION get_ultima_cursada(_alumno INTEGER, _actividad INTEGER) RETURNS TEXT AS $BODY$ DECLARE _retorno text; cur1 record; BEGIN -- Retorna 10 parámetros. _retorno := '$PARAM$$PARAM$$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, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'Sin Venc.' WHEN vw_regularidades.fecha_vigencia IS NOT NULL THEN to_char(vw_regularidades.fecha_vigencia, 'DD/MM/YYYY') END as fecha_vigencia, CASE WHEN vw_regularidades.resultado <> 'A' THEN '' WHEN vw_regularidades.fecha_vigencia IS NULL THEN 'SI' WHEN vw_regularidades.fecha_vigencia >= CURRENT_DATE THEN 'SI' WHEN vw_regularidades.fecha_vigencia < CURRENT_DATE THEN 'NO' END as vigente, 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 ORDER BY vw_regularidades.fecha DESC LOOP -- Recupero datos de la ultima cursada de la actividad _retorno := cur1.anio_academico::text || '$PARAM$' || cur1.periodo_lectivo || '$PARAM$' || cur1.fecha_regular || '$PARAM$' || cur1.condicion_regularidad || '$PARAM$' ||cur1.nota; _retorno := _retorno || '$PARAM$' || cur1.resultado_desc || '$PARAM$' || cur1.fecha_vigencia || '$PARAM$' || cur1.vigente || '$PARAM$' || cur1.ubicacion || '$PARAM$' || cur1.catedra; EXIT; END LOOP; RETURN _retorno; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function get_ultima_cursada(integer, integer) ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) FROM public; GRANT EXECUTE ON FUNCTION get_ultima_cursada (integer, integer) to public;