-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_comision_con_insc_vigente -- -- Chequea si existe un período de inscripción vigente para la fecha actual -- -- Recibe: -- 1.- ID de la Version de Plan (del alumno) -- 2.- ID de la Comisión -- -- Retorna: Boolean determina si la comisión tiene un período de inscripción vigente para la fecha actual -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Recibe plan_version y comision de la Inscripción. -- DROP FUNCTION f_comision_con_insc_vigente(integer, integer); CREATE OR REPLACE FUNCTION f_comision_con_insc_vigente(integer, integer) RETURNS boolean AS $BODY$ DECLARE _id_plan_version ALIAS for $1; _id_comision ALIAS for $2; fecha RECORD; BEGIN FOR fecha IN (SELECT COALESCE(sga_comisiones_excep_perinsc.fecha_inicio, sga_periodos_inscripcion_fechas.fecha_inicio) as fecha_inicio, COALESCE(sga_comisiones_excep_perinsc.fecha_fin, sga_periodos_inscripcion_fechas.fecha_fin) as fecha_fin FROM sga_comisiones, sga_periodos_lectivos, sga_periodos, sga_periodos_inscripcion, sga_periodos_inscripcion_aplanado, sga_periodos_inscripcion_fechas LEFT JOIN sga_comisiones_excep_perinsc ON (sga_comisiones_excep_perinsc.comision = _id_comision AND sga_comisiones_excep_perinsc.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc) WHERE sga_comisiones.comision = _id_comision AND sga_comisiones.inscripcion_habilitada = 'S' AND sga_periodos_inscripcion_fechas.habilitado = 'S' AND sga_periodos_lectivos.periodo_lectivo = sga_comisiones.periodo_lectivo AND sga_periodos.periodo = sga_periodos_lectivos.periodo AND sga_periodos_inscripcion.periodo = sga_periodos.periodo AND sga_periodos_inscripcion_fechas.periodo_inscripcion = sga_periodos_inscripcion.periodo_inscripcion AND sga_periodos_inscripcion_aplanado.periodo_insc = sga_periodos_inscripcion_fechas.periodo_insc AND sga_periodos_inscripcion_aplanado.plan_version = _id_plan_version ) LOOP IF (CURRENT_DATE BETWEEN fecha.fecha_inicio AND fecha.fecha_fin) THEN RETURN TRUE; END IF; END LOOP; RETURN FALSE; END $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- REVOKE EXECUTE ON FUNCTION f_comision_con_insc_vigente FROM public; GRANT EXECUTE ON FUNCTION f_comision_con_insc_vigente(integer, integer) TO public; -- ++++++++++++++++++++++++++ Fin Function f_comision_con_insc_vigente(integer,integer) +++++++++++++++++++++++++++++++++++++++