Contemplar estados e distrito federal

parent 20ef3b4d
-- drop function if exists par.get_responsaveis_termo_par(varchar, varchar, integer, integer, date, date, varchar) -- DROP FUNCTION par.get_responsaveis(integer , varchar, varchar, date, 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
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; responsavel record;
tem_ex_dirigente boolean := FALSE;
ref_mandat_anter_inicio date;
ref_mandat_anter_fim date;
BEGIN BEGIN
IF i_itrid = 2 THEN
with prefeitos as( select FOR responsavel IN(
WITH prefeitos as(
SELECT
rrpid, rrpid,
usucpf,
rrpnomeprefeito,
rrpdtiniciomandato, rrpdtiniciomandato,
rrpdtfimmandato, rrpdtfimmandato,
usucpf,
rrpnomeprefeito,
trim(par.naturezainteresse_v2( trim(par.naturezainteresse_v2(
rrpdtiniciomandato, rrpdtiniciomandato,
rrpdtfimmandato, rrpdtfimmandato,
i_datainiciovigencia, i_datainiciovigencia,
i_datafimvigencia, i_datafimvigencia,
i_tipoprograma)) i_tipoprograma)
as naturezainteresse ) as naturezainteresse
from FROM
par.rollresponsaveisprefeitos where muncod in(i_muncod) par.rollresponsaveisprefeitos
) WHERE
select muncod in(i_muncod)
(rrpdtiniciomandato - 31), (rrpdtiniciomandato - 1) into ref_mandat_anter_inicio, ref_mandat_anter_fim and (i_datainiciovigencia between rrpdtiniciomandato and rrpdtfimmandato or i_datafimpc between rrpdtiniciomandato and rrpdtfimmandato )
from prefeitos UNION
where SELECT * FROM (
trim(naturezainteresse) IN('Atual Gestor', 'Atual Gestor /Responsável /Corresponsável', 'Atual Gestor /Corresponsável'); SELECT
for responsavel in( with prefeitos as( select
rrpid, rrpid,
usucpf,
rrpnomeprefeito,
rrpdtiniciomandato, rrpdtiniciomandato,
rrpdtfimmandato, rrpdtfimmandato,
usucpf,
rrpnomeprefeito,
trim(par.naturezainteresse_v2( trim(par.naturezainteresse_v2(
rrpdtiniciomandato, rrpdtiniciomandato,
rrpdtfimmandato, rrpdtfimmandato,
...@@ -65,94 +44,82 @@ create or replace function par.get_responsaveis_termo_par( ...@@ -65,94 +44,82 @@ create or replace function par.get_responsaveis_termo_par(
i_datafimvigencia, i_datafimvigencia,
i_tipoprograma)) i_tipoprograma))
as naturezainteresse as naturezainteresse
from FROM
par.rollresponsaveisprefeitos where muncod in(i_muncod) 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
) )
select LOOP
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; _rrpid := responsavel.rrpid;
_cpf := responsavel.usucpf; _cpf := responsavel.usucpf;
_nomeprefeito := responsavel.rrpnomeprefeito; _nomeprefeito := responsavel.rrpnomeprefeito;
_dtiniciomandato := responsavel.rrpdtiniciomandato; _dtiniciomandato := responsavel.rrpdtiniciomandato;
_dtfimmandato := responsavel.rrpdtfimmandato; _dtfimmandato := responsavel.rrpdtfimmandato;
IF TRIM(responsavel.naturezainteresse) = 'Ex-dirigente' THEN
_naturezainteresse := 'Responsável'; _naturezainteresse := 'Responsável';
tem_ex_dirigente = TRUE; ELSE
_naturezainteresse := TRIM(responsavel.naturezainteresse);
END IF;
return next; return next;
end if; END LOOP;
end if; ELSE
FOR responsavel IN(
end loop; WITH secretarios as(
SELECT
for responsavel in( with prefeitos as( select rrsid,
rrpid, rrsdtiniciomandato,
rrsdtfimmandato,
usucpf, usucpf,
rrpnomeprefeito, rrsnomesecretario,
rrpdtiniciomandato,
rrpdtfimmandato,
trim(par.naturezainteresse_v2( trim(par.naturezainteresse_v2(
rrpdtiniciomandato, rrsdtiniciomandato,
rrpdtfimmandato, rrsdtfimmandato,
i_datainiciovigencia, i_datainiciovigencia,
i_datafimvigencia, i_datafimvigencia,
i_tipoprograma)) i_tipoprograma)
as naturezainteresse ) as naturezainteresse
from FROM
par.rollresponsaveisprefeitos where muncod in(i_muncod) par.rollresponsaveissecretarios
) WHERE
select rrscnpj in(i_cnpj)
distinct and (rrsdtfimmandato between i_datainiciovigencia and i_datafimpc or rrsdtiniciomandato between i_datainiciovigencia and i_datafimpc )
rrpid, UNION
SELECT * FROM (
SELECT
rrsid,
rrsdtiniciomandato,
rrsdtfimmandato,
usucpf, usucpf,
rrpnomeprefeito, rrsnomesecretario,
rrpdtiniciomandato, trim(par.naturezainteresse_v2(
rrpdtfimmandato, rrsdtiniciomandato,
naturezainteresse rrsdtfimmandato,
from prefeitos i_datainiciovigencia,
where i_datafimvigencia,
trim(naturezainteresse) NOT IN('Ex-dirigente') i_tipoprograma)
order by rrpdtiniciomandato asc ) 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 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 _rrpid := responsavel.rrsid;
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
_rrpid := responsavel.rrpid;
_cpf := responsavel.usucpf; _cpf := responsavel.usucpf;
_nomeprefeito := responsavel.rrpnomeprefeito; _nomeprefeito := responsavel.rrsnomesecretario;
_dtiniciomandato := responsavel.rrpdtiniciomandato; _dtiniciomandato := responsavel.rrsdtiniciomandato;
_dtfimmandato := responsavel.rrpdtfimmandato; _dtfimmandato := responsavel.rrsdtfimmandato;
_naturezainteresse := trim(responsavel.naturezainteresse); IF TRIM(responsavel.naturezainteresse) = 'Ex-dirigente' THEN
_naturezainteresse := 'Responsável';
ELSE
_naturezainteresse := TRIM(responsavel.naturezainteresse);
END IF;
return next; return next;
end if; END LOOP;
end loop; END IF;
end; $$
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