Função lista responsáveis por natureza de responsabilidade dia do processo.

parent d6e307b7
-- DROP FUNCTION par.get_responsaveis(integer , varchar, varchar, date, date, date, varchar);
CREATE OR REPLACE FUNCTION par.get_responsaveis(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(
WITH prefeitos as(
SELECT
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 (i_datainiciovigencia between rrpdtiniciomandato and rrpdtfimmandato or i_datafimpc between rrpdtiniciomandato and rrpdtfimmandato )
UNION
SELECT * FROM (
SELECT
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)
) AS subquery WHERE TRIM(subquery.naturezainteresse) IN('Atual Gestor', 'Atual Gestor /Responsável /Corresponsável', 'Atual Gestor /Corresponsável')
)SELECT DISTINCT rrpid, rrpdtiniciomandato, rrpdtfimmandato, usucpf, rrpnomeprefeito, naturezainteresse FROM prefeitos order by rrpdtiniciomandato desc
)
LOOP
_rrpid := responsavel.rrpid;
_cpf := responsavel.usucpf;
_nomeprefeito := responsavel.rrpnomeprefeito;
_dtiniciomandato := responsavel.rrpdtiniciomandato;
_dtfimmandato := responsavel.rrpdtfimmandato;
IF TRIM(responsavel.naturezainteresse) = 'Ex-dirigente' THEN
_naturezainteresse := 'Responsável';
ELSE
_naturezainteresse := TRIM(responsavel.naturezainteresse);
END IF;
return next;
END LOOP;
ELSE
FOR responsavel IN(
WITH secretarios as(
SELECT
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 )
UNION
SELECT * FROM (
SELECT
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)
) AS subquery WHERE TRIM(subquery.naturezainteresse)IN('Atual Gestor', 'Atual Gestor /Responsável /Corresponsável', 'Atual Gestor /Corresponsável')
)SELECT DISTINCT rrsid, rrsdtiniciomandato, rrsdtfimmandato, usucpf, rrsnomesecretario, naturezainteresse FROM secretarios order by rrsdtfimmandato desc
)
LOOP
_rrpid := responsavel.rrsid;
_cpf := responsavel.usucpf;
_nomeprefeito := responsavel.rrsnomesecretario;
_dtiniciomandato := responsavel.rrsdtiniciomandato;
_dtfimmandato := responsavel.rrsdtfimmandato;
IF TRIM(responsavel.naturezainteresse) = 'Ex-dirigente' THEN
_naturezainteresse := 'Responsável';
ELSE
_naturezainteresse := TRIM(responsavel.naturezainteresse);
END IF;
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