From 3a4403733596fb0a39c484a095ec6a4688840bc8 Mon Sep 17 00:00:00 2001 From: RONALDO RODRIGUES DE OLIVEIRA Date: Thu, 11 Sep 2025 10:27:52 -0300 Subject: [PATCH] Contemplar estados e distrito federal --- declaracao_omissao/2-function-par_get_responsaveis_termo.sql | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------- 1 file changed, 116 insertions(+), 149 deletions(-) diff --git a/declaracao_omissao/2-function-par_get_responsaveis_termo.sql b/declaracao_omissao/2-function-par_get_responsaveis_termo.sql index e47252b..c811e4c 100644 --- a/declaracao_omissao/2-function-par_get_responsaveis_termo.sql +++ b/declaracao_omissao/2-function-par_get_responsaveis_termo.sql @@ -1,158 +1,125 @@ --- drop function if exists par.get_responsaveis_termo_par(varchar, varchar, integer, integer, date, date, varchar) - -create or replace function par.get_responsaveis_termo_par( - i_muncod varchar, - i_processo varchar, - i_prpid integer, - i_dopid integer, - i_datainiciovigencia date, - i_datafimvigencia date, - i_tipoprograma varchar(45) - ) - - returns table ( - _rrpid int, - _cpf varchar, - _nomeprefeito varchar, - _dtiniciomandato date, - _dtfimmandato date, - _naturezainteresse varchar - ) - - language plpgsql - as $$ - declare - +-- 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; - tem_ex_dirigente boolean := FALSE; - ref_mandat_anter_inicio date; - ref_mandat_anter_fim date; BEGIN - - with prefeitos as( select - rrpid, - usucpf, - rrpnomeprefeito, - rrpdtiniciomandato, - rrpdtfimmandato, - trim(par.naturezainteresse_v2( - rrpdtiniciomandato, - rrpdtfimmandato, - i_datainiciovigencia, - i_datafimvigencia, - i_tipoprograma)) - as naturezainteresse - from - par.rollresponsaveisprefeitos where muncod in(i_muncod) - ) - select - (rrpdtiniciomandato - 31), (rrpdtiniciomandato - 1) into ref_mandat_anter_inicio, ref_mandat_anter_fim - from prefeitos - where - trim(naturezainteresse) IN('Atual Gestor', 'Atual Gestor /Responsável /Corresponsável', 'Atual Gestor /Corresponsável'); - - for responsavel in( with prefeitos as( select - rrpid, - usucpf, - rrpnomeprefeito, - rrpdtiniciomandato, - rrpdtfimmandato, - trim(par.naturezainteresse_v2( - rrpdtiniciomandato, - rrpdtfimmandato, - i_datainiciovigencia, - i_datafimvigencia, - i_tipoprograma)) - as naturezainteresse - from - par.rollresponsaveisprefeitos where muncod in(i_muncod) - ) - select - distinct - rrpid, - usucpf, - rrpnomeprefeito, - rrpdtiniciomandato, - rrpdtfimmandato, - naturezainteresse - from prefeitos - where - trim(naturezainteresse) IN('Ex-dirigente') - and rrpdtfimmandato between ref_mandat_anter_inicio and ref_mandat_anter_fim - order by rrpdtiniciomandato asc - ) - loop - if trim(responsavel.naturezainteresse) = 'Ex-dirigente' then - if exists( select usucpf from par.get_gestor_ciencia_par(responsavel.usucpf, i_processo, i_dopid, i_prpid) ) - then - _rrpid := responsavel.rrpid; - _cpf := responsavel.usucpf; - _nomeprefeito := responsavel.rrpnomeprefeito; - _dtiniciomandato := responsavel.rrpdtiniciomandato; - _dtfimmandato := responsavel.rrpdtfimmandato; - _naturezainteresse := 'Responsável'; - tem_ex_dirigente = TRUE; - return next; - end if; - end if; - - end loop; - - for responsavel in( with prefeitos as( select - rrpid, - usucpf, - rrpnomeprefeito, - rrpdtiniciomandato, + IF i_itrid = 2 THEN + FOR responsavel IN( + WITH prefeitos as( + SELECT + rrpid, + rrpdtiniciomandato, + rrpdtfimmandato, + usucpf, + rrpnomeprefeito, + trim(par.naturezainteresse_v2( + rrpdtiniciomandato, rrpdtfimmandato, - trim(par.naturezainteresse_v2( - rrpdtiniciomandato, - rrpdtfimmandato, - i_datainiciovigencia, - i_datafimvigencia, - i_tipoprograma)) - as naturezainteresse - from - par.rollresponsaveisprefeitos where muncod in(i_muncod) - ) - select - distinct - rrpid, - usucpf, - rrpnomeprefeito, - rrpdtiniciomandato, - rrpdtfimmandato, - naturezainteresse - from prefeitos - where - trim(naturezainteresse) NOT IN('Ex-dirigente') - order by rrpdtiniciomandato asc - ) - loop - if tem_ex_dirigente and (trim(responsavel.naturezainteresse) = 'Atual Gestor') or (trim(responsavel.naturezainteresse) = 'Atual Gestor /Responsável /Corresponsável') or (trim(responsavel.naturezainteresse) = 'Atual Gestor /Corresponsável') then - if tem_ex_dirigente and exists( select usucpf from par.get_gestor_ciencia_par(responsavel.usucpf, i_processo, i_dopid, i_prpid) ) - then - _rrpid := responsavel.rrpid; - _cpf := responsavel.usucpf; - _nomeprefeito := responsavel.rrpnomeprefeito; - _dtiniciomandato := responsavel.rrpdtiniciomandato; - _dtfimmandato := responsavel.rrpdtfimmandato; - _naturezainteresse := trim(responsavel.naturezainteresse); - return next; - end if; - else + 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; - _naturezainteresse := trim(responsavel.naturezainteresse); - return next; - end if; - end loop; -end; $$ - - - - - \ No newline at end of file + 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