From a9f6f6fc9ce76a08a6c3ea1013f3f1c0ff5e0217 Mon Sep 17 00:00:00 2001 From: RONALDO RODRIGUES DE OLIVEIRA Date: Thu, 11 Sep 2025 10:15:26 -0300 Subject: [PATCH] Função lista responsáveis por natureza de responsabilidade dia do processo. --- declaracao_omissao/Estados_Distrito_Federal_add/1-function_get_responsaveis_190825.sql | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 declaracao_omissao/Estados_Distrito_Federal_add/1-function_get_responsaveis_190825.sql diff --git a/declaracao_omissao/Estados_Distrito_Federal_add/1-function_get_responsaveis_190825.sql b/declaracao_omissao/Estados_Distrito_Federal_add/1-function_get_responsaveis_190825.sql new file mode 100644 index 0000000..c811e4c --- /dev/null +++ b/declaracao_omissao/Estados_Distrito_Federal_add/1-function_get_responsaveis_190825.sql @@ -0,0 +1,125 @@ +-- 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$; + -- libgit2 0.25.0