Função que lista responsável conforme prazos de mandato e vigência.

parent a9f6f6fc
-- DROP FUNCTION par.get_responsaveis_termo(integer, varchar, varchar, date, date, date, varchar);
CREATE OR REPLACE FUNCTION par.get_responsaveis_termo(i_itrid integer ,i_cnpj character varying, i_muncod character varying, i_datainiciovigencia date, i_datafimvigencia date, i_datafimpc date, i_tipoprograma character varying)
RETURNS TABLE(_rrpid integer, _cpf character varying, _nomeprefeito character varying, _dtiniciomandato date, _dtfimmandato date, _naturezainteresse character varying)
LANGUAGE plpgsql
AS $function$
DECLARE
responsavel record;
BEGIN
IF i_itrid = 2 THEN
FOR responsavel IN(
SELECT
distinct
rrpid,
rrpdtiniciomandato,
rrpdtfimmandato,
usucpf,
rrpnomeprefeito,
trim(par.naturezainteresse_v2(
rrpdtiniciomandato,
rrpdtfimmandato,
i_datainiciovigencia,
i_datafimvigencia,
i_tipoprograma)
) as naturezainteresse
FROM
par.rollresponsaveisprefeitos
WHERE
muncod in(i_muncod)
and ( rrpdtfimmandato between i_datainiciovigencia and i_datafimpc or rrpdtiniciomandato between i_datainiciovigencia and i_datafimpc )
order by rrpdtiniciomandato desc
)
LOOP
_rrpid := responsavel.rrpid;
_cpf := responsavel.usucpf;
_nomeprefeito := responsavel.rrpnomeprefeito;
_dtiniciomandato := responsavel.rrpdtiniciomandato;
_dtfimmandato := responsavel.rrpdtfimmandato;
_naturezainteresse := responsavel.naturezainteresse;
return next;
END LOOP;
ELSE
FOR responsavel IN(
SELECT
distinct
rrsid,
rrsdtiniciomandato,
rrsdtfimmandato,
usucpf,
rrsnomesecretario,
trim(par.naturezainteresse_v2(
rrsdtiniciomandato,
rrsdtfimmandato,
i_datainiciovigencia,
i_datafimvigencia,
i_tipoprograma)
) as naturezainteresse
FROM
par.rollresponsaveissecretarios
WHERE
rrscnpj in(i_cnpj)
and ( rrsdtfimmandato between i_datainiciovigencia and i_datafimpc or rrsdtiniciomandato between i_datainiciovigencia and i_datafimpc )
order by rrsdtiniciomandato desc
)
LOOP
_rrpid := responsavel.rrsid;
_cpf := responsavel.usucpf;
_nomeprefeito := responsavel.rrsnomesecretario;
_dtiniciomandato := responsavel.rrsdtiniciomandato;
_dtfimmandato := responsavel.rrsdtfimmandato;
_naturezainteresse := responsavel.naturezainteresse;
return next;
END LOOP;
END IF;
END; $function$;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment