SELECT * FROM drop_function_if_exists('gtcobterrestricoes','person int4');
SELECT * FROM drop_function_if_exists('gtcobterrestricoesparasagu','person int4');

DROP FUNCTION IF EXISTS gtcObterRestricoes(p_personid bigint);
DROP FUNCTION IF EXISTS gtcobterrestricoesparasagu(p_personid bigint); 

DROP TYPE IF EXISTS type_obter_restricoes; 
CREATE TYPE type_obter_restricoes AS ( tipo text, quantidade bigint );

--retorna as restrições do usuário na instituição
CREATE OR REPLACE FUNCTION gtcObterRestricoes(p_personid bigint) 
RETURNS SETOF type_obter_restricoes AS
/*************************************************************************************
  NAME: gtcObterRestricoes
  DESCRIPTION: Verifica se a pessoa possui pendências no Gnuteca.
**************************************************************************************/
$BODY$
DECLARE
  v_sql varchar;
  v_parameter varchar;
BEGIN
    v_sql := '';
    SELECT INTO v_parameter value FROM basconfig WHERE parameter = 'PENDENCIAS_NADA_CONSTA';
    
    IF strpos(v_parameter, 'P') > 0
    THEN
        v_sql := v_sql || 'SELECT ''Penalidade''::text AS "tipo",
                                  obterQuantPenalidades(' || p_personid || ') AS "quantidade"';
    END IF;

    IF strpos(v_parameter, 'M') > 0
    THEN
        IF length(v_sql) > 0
        THEN
            v_sql := v_sql || ' UNION ';
        END IF;
 
        v_sql := v_sql || 'SELECT ''Multas''::text AS "tipo",
                                  obterQuantMultas(' || p_personid || ') AS "quantidade"';
    END IF;

    IF strpos(v_parameter, 'E') > 0
    THEN
        IF length(v_sql) > 0
        THEN
            v_sql := v_sql || ' UNION ';
        END IF;
	
        v_sql := v_sql || 'SELECT ''Empréstimos atrasados''::text AS "tipo",
                                  obterQuantEmprestimos(' || p_personid || ') AS "quantidade"';
    END IF;

    IF strpos(v_parameter, 'D') > 0
    THEN
        IF length(v_sql) > 0
        THEN
            v_sql := v_sql || ' UNION ';
        END IF;

        v_sql := v_sql || 'SELECT ''Empréstimos dentro do prazo''::text AS "tipo",
                                  obterQuantEmprestimosDentroDoPrazo(' || p_personid || ') AS "quantidade"';
    END IF;

    IF length(v_sql) = 0
    THEN
        v_sql := v_sql || ' SELECT ''Verifique o parâmetro PENDENCIAS_NADA_CONSTA. O parâmetro não está configurado corretamente.''::text, 1::bigint';
     END IF;

    RETURN QUERY EXECUTE v_sql;
END;
$BODY$
language plpgsql;
