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
d0cf956e
authored
Jan 23, 2025
by
RONALDO RODRIGUES DE OLIVEIRA
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Script etiquetador natureza de interesse - REQ000000329189
parents
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
182 additions
and
0 deletions
PLpgSQLFunction-etiqNaturezaInteresse-REQ000000329189.sql
PLpgSQLFunction-etiqNaturezaInteresse-REQ000000329189.sql
0 → 100644
View file @
d0cf956e
CREATE
OR
REPLACE
FUNCTION
par
.
naturezainteresse
(
iniciomandato
date
,
fimmandato
date
,
iniciovigencia
date
,
fimvigencia
date
,
programa
varchar
(
10
)
default
'par'
)
RETURNS
text
AS
$$
DECLARE
natureza
TEXT
;
data_final_pc
date
;
data_corte
date
;
BEGIN
SELECT
case
programa
when
'pac'
then
(
dpcdatainiciocontagem2
+
interval
'60 day'
)::
date
when
'par3'
then
(
dpcdatainiciocontagem3
+
interval
'60 day'
)::
date
else
(
dpcdatainiciocontagem1
+
interval
'60 day'
)::
date
end
into
data_corte
FROM
par
.
datasprestacaocontas
WHERE
dpcid
=
'1'
;
IF
fimvigencia
<
data_corte
THEN
data_final_pc
:
=
data_corte
+
60
;
ELSE
data_final_pc
:
=
fimvigencia
+
60
;
END
IF
;
IF
fimmandato
IS
NULL
THEN
natureza
:
=
'Atual Gestor /'
;
IF
((
iniciomandato
>=
iniciovigencia
)
AND
(
iniciomandato
<=
fimvigencia
))
THEN
natureza
:
=
concat
(
natureza
,
'Responsável /'
);
ELSEIF
iniciovigencia
>=
iniciomandato
THEN
natureza
:
=
concat
(
natureza
,
'Responsável /'
);
END
IF
;
IF
data_final_pc
>=
iniciomandato
THEN
natureza
:
=
concat
(
natureza
,
'Corresponsável /'
);
END
IF
;
ELSE
<<
bloco_resp
>>
BEGIN
IF
iniciomandato
>=
iniciovigencia
AND
iniciomandato
<=
fimvigencia
THEN
natureza
:
=
concat
(
natureza
,
' Responsável /'
);
exit
bloco_resp
;
ELSEIF
fimmandato
>=
iniciovigencia
AND
fimmandato
<=
fimvigencia
THEN
natureza
:
=
concat
(
natureza
,
'Responsável /'
);
exit
bloco_resp
;
ELSEIF
iniciovigencia
>=
iniciomandato
AND
iniciovigencia
<=
fimmandato
THEN
natureza
:
=
concat
(
natureza
,
'Responsável /'
);
exit
bloco_resp
;
ELSEIF
fimvigencia
>=
iniciomandato
AND
fimvigencia
<=
fimmandato
THEN
natureza
:
=
concat
(
natureza
,
'Responsável /'
);
exit
bloco_resp
;
END
IF
;
END
;
IF
data_final_pc
>=
iniciomandato
AND
data_final_pc
<=
fimmandato
THEN
natureza
:
=
concat
(
natureza
,
'Corresponsável /'
);
END
IF
;
END
IF
;
natureza
:
=
substring
(
natureza
,
1
,
length
(
natureza
)
-
2
);
IF
natureza
IS
NULL
THEN
natureza
:
=
concat
(
natureza
,
'Ex-dirigente'
);
END
IF
;
RETURN
natureza
::
text
;
END
;
$$
language
PLPGSQL
;
/*
* Excluir objeto
*/
/*
drop FUNCTION par.naturezainteresse(
iniciomandato date,
fimmandato date,
iniciovigencia date,
fimvigencia date,
programa varchar(10)
)
CREATE OR REPLACE FUNCTION par.naturezainteresse(
iniciomandato date,
fimmandato date,
iniciovigencia date,
fimvigencia date,
programa varchar(10) default 'par'
)
RETURNS text
AS $$
DECLARE
natureza TEXT;
data_final_pc date;
data_corte date;
BEGIN
SELECT
case programa
when 'pac' then (dpcdatainiciocontagem2 + interval '60 day')::date
when 'par3' then (dpcdatainiciocontagem3 + interval '60 day')::date
else
(dpcdatainiciocontagem1 + interval '60 day')::date
end into data_corte
FROM par.datasprestacaocontas WHERE dpcid = '1';
IF fimvigencia < data_corte THEN
data_final_pc := data_corte + 60;
ELSE
data_final_pc := fimvigencia + 60;
END IF;
IF fimmandato IS NULL THEN
natureza := 'Atual Gestor /';
IF ((iniciomandato >= iniciovigencia) AND (iniciomandato <= fimvigencia)) THEN
natureza := concat(natureza,'Responsável /');
ELSEIF iniciovigencia >= iniciomandato THEN
natureza := concat(natureza,'Responsável /');
END IF;
IF data_final_pc >= iniciomandato THEN
natureza := concat(natureza,'Corresponsável /');
END IF;
ELSE
<<bloco_resp>>
BEGIN
IF iniciomandato >= iniciovigencia AND iniciomandato <= fimvigencia THEN
natureza := concat(natureza,' Responsável /');
exit bloco_resp;
ELSEIF fimmandato >= iniciovigencia AND fimmandato <= fimvigencia THEN
natureza := concat(natureza, 'Responsável /');
exit bloco_resp;
ELSEIF iniciovigencia >= iniciomandato AND iniciovigencia <= fimmandato THEN
natureza := concat(natureza, 'Responsável /');
exit bloco_resp;
ELSEIF fimvigencia >= iniciomandato AND fimvigencia <= fimmandato THEN
natureza := concat(natureza, 'Responsável /');
exit bloco_resp;
END IF;
END;
IF data_final_pc >= iniciomandato AND data_final_pc <= fimmandato THEN
natureza := concat(natureza, 'Corresponsável /');
END IF;
END IF;
natureza := substring(natureza, 1, length(natureza)-2);
IF natureza IS NULL THEN
natureza := concat(natureza, 'Ex-dirigente');
END IF;
RETURN natureza::text;
END;
$$ language PLPGSQL;
/*
* Excluir objeto
*/
/*
drop FUNCTION par.naturezainteresse(
iniciomandato date,
fimmandato date,
iniciovigencia date,
fimvigencia date,
programa varchar(10)
)
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