Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
RONALDO RODRIGUES DE OLIVEIRA
/
simec-scripts-banco
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
3a440373
authored
Sep 11, 2025
by
RONALDO RODRIGUES DE OLIVEIRA
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Contemplar estados e distrito federal
parent
20ef3b4d
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
84 additions
and
117 deletions
declaracao_omissao/2-function-par_get_responsaveis_termo.sql
declaracao_omissao/2-function-par_get_responsaveis_termo.sql
View file @
3a440373
-- 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
(
rrp
dtiniciomandato
,
rrp
dtfimmandato
,
rrs
dtiniciomandato
,
rrs
dtfimmandato
,
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
$
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment