From d0cf956e8ab84a7ed5e3ff73361cf3e8c29b6bd0 Mon Sep 17 00:00:00 2001 From: RONALDO RODRIGUES DE OLIVEIRA Date: Thu, 23 Jan 2025 12:14:44 -0200 Subject: [PATCH] Script etiquetador natureza de interesse - REQ000000329189 --- PLpgSQLFunction-etiqNaturezaInteresse-REQ000000329189.sql | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 PLpgSQLFunction-etiqNaturezaInteresse-REQ000000329189.sql diff --git a/PLpgSQLFunction-etiqNaturezaInteresse-REQ000000329189.sql b/PLpgSQLFunction-etiqNaturezaInteresse-REQ000000329189.sql new file mode 100644 index 0000000..9d33f3f --- /dev/null +++ b/PLpgSQLFunction-etiqNaturezaInteresse-REQ000000329189.sql @@ -0,0 +1,182 @@ + + +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 + <> + 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 + <> + 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) +) -- libgit2 0.25.0