Contemplar estados e distrito federal

parent 20ef3b4d
-- 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
IF i_itrid = 2 THEN
FOR responsavel IN(
WITH prefeitos as(
SELECT
rrpid,
usucpf,
rrpnomeprefeito,
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)
)
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
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,
usucpf,
rrpnomeprefeito,
rrpdtiniciomandato,
rrpdtfimmandato,
usucpf,
rrpnomeprefeito,
trim(par.naturezainteresse_v2(
rrpdtiniciomandato,
rrpdtfimmandato,
......@@ -65,94 +44,82 @@ create or replace function par.get_responsaveis_termo_par(
i_datafimvigencia,
i_tipoprograma))
as naturezainteresse
from
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
)
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
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';
tem_ex_dirigente = TRUE;
ELSE
_naturezainteresse := TRIM(responsavel.naturezainteresse);
END IF;
return next;
end if;
end if;
end loop;
for responsavel in( with prefeitos as( select
rrpid,
END LOOP;
ELSE
FOR responsavel IN(
WITH secretarios as(
SELECT
rrsid,
rrsdtiniciomandato,
rrsdtfimmandato,
usucpf,
rrpnomeprefeito,
rrpdtiniciomandato,
rrpdtfimmandato,
rrsnomesecretario,
trim(par.naturezainteresse_v2(
rrpdtiniciomandato,
rrpdtfimmandato,
rrsdtiniciomandato,
rrsdtfimmandato,
i_datainiciovigencia,
i_datafimvigencia,
i_tipoprograma))
as naturezainteresse
from
par.rollresponsaveisprefeitos where muncod in(i_muncod)
)
select
distinct
rrpid,
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,
rrpnomeprefeito,
rrpdtiniciomandato,
rrpdtfimmandato,
naturezainteresse
from prefeitos
where
trim(naturezainteresse) NOT IN('Ex-dirigente')
order by rrpdtiniciomandato asc
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
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;
LOOP
_rrpid := responsavel.rrsid;
_cpf := responsavel.usucpf;
_nomeprefeito := responsavel.rrpnomeprefeito;
_dtiniciomandato := responsavel.rrpdtiniciomandato;
_dtfimmandato := responsavel.rrpdtfimmandato;
_naturezainteresse := trim(responsavel.naturezainteresse);
_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 if;
end loop;
end; $$
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