-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- SIU-GUARANI 3 -- Version 3.0.0 -- Function: f_criterio_trabaja() -- Verifica si la persona trabaja o trabajó en los ultimos 30 dias según registro de últimos datos censales -- -- Recibe: Id de la Persona. -- Retorna: Integer: 0 - Trabaja / 1 - NO Trabaja -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP FUNCTION f_criterio_trabaja(integer); CREATE OR REPLACE FUNCTION f_criterio_trabaja(_persona integer) RETURNS integer AS $BODY$ -- Variables locales DECLARE _Trabaja integer; DECLARE _Fecha date; BEGIN _Trabaja := 1; -- No trabaja _Fecha := NULL; SELECT Max(fecha_relevamiento) INTO _Fecha FROM mdp_datos_censales WHERE persona = _persona; IF _Fecha IS NULL THEN -- No hay dato censal, retorno como que no trabaja RETURN 1; END IF; -- Recupero cantidad de hijos... SELECT mdp_datos_economicos.trabajo_existe INTO _Trabaja FROM mdp_datos_censales, mdp_datos_economicos WHERE mdp_datos_censales.persona = _persona AND mdp_datos_censales.fecha_relevamiento = _Fecha AND mdp_datos_economicos.dato_censal = mdp_datos_censales.dato_censal; IF _Trabaja = 1 THEN -- 1 = Trabajó al menos una hora (incluye a los que no trabajaron por licencia, vacaciones, enfermedad) RETURN 0; ELSE -- No trabaja ni trabajó RETURN 1; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; -- ++++++++++++++++++++++++++++++ Fin Function f_criterio_trabaja ++++++++++++++++ -- REVOKE EXECUTE ON FUNCTION f_criterio_trabaja(integer) FROM public; GRANT EXECUTE ON FUNCTION f_criterio_trabaja(integer) TO public;