-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- SIU-GUARANI 3
-- Version 3.0.0
-- Function: f_estado_requisito
--
--  Dado una persona y un requisito de esa persona retorna el estado del mismo
--
-- Recibe:
--   f_estado_requisito(integer,integer);
--		1. ID de la Persona
--		2. ID del requisito del cual se quiere conocer el estado
--
-- Retorna: Varchar 1) Estado del Requisito ("PENDIENTE","VIGENTE","VENCIDO")
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- DROP FUNCTION f_estado_requisito(integer,integer);
CREATE OR REPLACE FUNCTION f_estado_requisito(idpersona INTEGER, idrequisito INTEGER)
	RETURNS VARCHAR(9) AS


$BODY$
	DECLARE
		_fecha_presentacion	DATE;
		_fecha_vencimiento	DATE;

	BEGIN
		SELECT	sga_requisitos_presentados.fecha_presentacion,
				sga_requisitos_presentados.fecha_vencimiento
		INTO	_fecha_presentacion,
				_fecha_vencimiento

		FROM sga_requisitos_presentados
		WHERE sga_requisitos_presentados.requisito_presentado = (	SELECT		sga_requisitos_presentados.requisito_presentado
																	FROM		sga_requisitos_presentados
																	WHERE		persona		= idpersona
																	AND			requisito	= idrequisito
																	ORDER BY	fecha_presentacion DESC
																	LIMIT		1 );

		IF NOT FOUND THEN
			RETURN 'PENDIENTE';
		END IF;

		IF _fecha_vencimiento >= CURRENT_DATE OR _fecha_vencimiento IS NULL THEN
			RETURN 'VIGENTE';
		ELSE
			RETURN 'VENCIDO';
		END IF;

	END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
-- ++++++++++++++++++++++++++++++ Fin Function f_estado_requisito(integer,integer) ++++++++++++++++

-- REVOKE EXECUTE ON FUNCTION f_estado_requisito (integer, integer) FROM public;
GRANT EXECUTE ON FUNCTION f_estado_requisito (integer, integer) to public;

