Function responsaveis da declaração de omissao

parent a4243ceb
-- 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
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,
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
_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
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