-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_es_ingresante(integer, varchar, integer) -- Verifica si un alumno es ingresante segun el año académico correspondiente a una fecha. -- -- Recibe: -- 1. Id Alumno -- 2. Fecha. (Formato string yyyy-mm-dd. Puede ser nulo si se pasa el año académico) -- 3. Año académico (puede ser nulo. en ese caso se calcula el año segun la fecha) -- -- Retorna: 1 - Es Ingresante / 0 - No es Ingresante -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_es_ingresante (integer, varchar, integer); CREATE OR REPLACE FUNCTION f_es_ingresante (pAlumno integer, pFecha varchar(10), pAnioAcademico Integer) RETURNS integer AS $BODY$ -- Variables locales DECLARE _anio integer; DECLARE _cnt integer; DECLARE _dFecha date; DECLARE _es_ingresante smallint; BEGIN _cnt := 0; _anio := NULL; _es_ingresante := 0; -- Si el año academico no viene como parámetro recupero el año académico segun la fecha IF pAnioAcademico IS NULL THEN IF pFecha IS NULL THEN _dFecha := CURRENT_DATE; ELSE -- Convierto la fecha en formato yyyy-mm-dd a date _dFecha := date(pFecha); END IF; -- Busca el año académico correspondiente a la fecha SELECT anio_academico INTO _anio FROM sga_anios_academicos WHERE _dFecha BETWEEN fecha_inicio AND fecha_fin; ELSE _anio := pAnioAcademico; END IF; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Verifica el año académico de la inscripción a propuesta del alumno en estado Aceptada o Pendiente -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SELECT COUNT(*) INTO _cnt FROM sga_alumnos, sga_propuestas_aspira, sga_situacion_aspirante WHERE sga_alumnos.alumno = pAlumno AND sga_propuestas_aspira.persona = sga_alumnos.persona AND sga_propuestas_aspira.propuesta = sga_alumnos.propuesta AND sga_situacion_aspirante.situacion_asp = sga_propuestas_aspira.situacion_asp AND sga_situacion_aspirante.resultado_asp IN ('A','P') AND sga_propuestas_aspira.anio_academico = _anio; IF _cnt > 0 THEN _es_ingresante := 1; END IF; -- Retorna si es ingresante o no. RETURN _es_ingresante; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_es_ingresante ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_es_ingresante (integer, varchar, integer) FROM public; GRANT EXECUTE ON FUNCTION f_es_ingresante(integer, varchar, integer) TO public;