-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_fin_vigencia_equivalencia -- -- Retorna la fecha de fin de vigencia de una equivalencia parcial -- -- Recibe: -- 1. ID del Alumno -- 2. Alcance de la Equivalencia: R - Equivalencia de Regularidad / P - Equivalencia Parcial -- 3. Una fecha que es la fecha en que se le otorgará la equivalencia -- -- Retorna: -- 1. Fecha de fin de vigencia de la equivalencia -- -- Observaciones: se recibe la identificacon del alumno pero no se utiliza. En el caso que la fecha -- de fin de vigencia sea difernente en cada propuesta podra evaluarse a partir del alumno al que se le -- otorgará la equivalencia. -- Por default la fecha de fin de vigencia de la equivalencia es de dos años a partir de la fecha de la equivalencia -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_fin_vigencia_equivalencia (integer, char, date); CREATE OR REPLACE FUNCTION f_fin_vigencia_equivalencia (pAlumno integer, pTipoEquiv char(1), pFecha date) RETURNS DATE AS $$ DECLARE _f_fin_vigencia DATE; _f_equivalencia DATE; BEGIN _f_fin_vigencia := NULL; IF pFecha IS NOT NULL THEN _f_equivalencia := pFecha; ELSE _f_equivalencia := CURRENT_DATE; END IF; -- Calculo la fecha de fin de vigencia de la equivalencia según la fecha de la equivalencia a otorgar. IF pTipoEquiv = 'R' THEN -- Equivalencia de Regularidad _f_fin_vigencia := _f_equivalencia + 730; -- Le suma dos años ELSEIF pTipoEquiv = 'P' THEN -- Equivalencia Parcial _f_fin_vigencia := _f_equivalencia + 730; -- Le suma dos años END IF; RETURN _f_fin_vigencia; END; $$ LANGUAGE plpgsql; -- ++++++++++++++++++++++++++++++ Fin Function f_fin_vigencia_equivalencia ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_fin_vigencia_equivalencia (integer, char, date); GRANT EXECUTE ON FUNCTION f_fin_vigencia_equivalencia(integer, char, date) to public; /* select * from f_fin_vigencia_equivalencia('2011-03-25'::date, 1::smallint); select * from f_fin_vigencia_equivalencia('2011-03-25'::date, 2::smallint); */