From f746d24114b2095ae9fd39c143c6fbdd26da27c7 Mon Sep 17 00:00:00 2001 From: RONALDO RODRIGUES DE OLIVEIRA Date: Tue, 22 Apr 2025 15:03:03 -0300 Subject: [PATCH] Function de transferĂȘncia de recursos entre gestores --- declaracao_omissao/4-function par.set_trans_credito_debito.sql | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 declaracao_omissao/4-function par.set_trans_credito_debito.sql diff --git a/declaracao_omissao/4-function par.set_trans_credito_debito.sql b/declaracao_omissao/4-function par.set_trans_credito_debito.sql new file mode 100644 index 0000000..ae526ed --- /dev/null +++ b/declaracao_omissao/4-function par.set_trans_credito_debito.sql @@ -0,0 +1,22 @@ +-- drop function if exists par.set_trans_credito_debito(integer) +create or replace function par.set_trans_credito_debito(i_odeid integer) +returns void +language plpgsql +as +$$ +declare + romid_array integer[]:= ARRAY(SELECT romid FROM par.responsaveisomisso where odeid=i_odeid order by dtfimmandato); + valor_debito numeric(20,2); + data_debito timestamp; +begin + FOR i IN 1..(array_length(romid_array,1)-1) LOOP + if ( (select coalesce(valorcredito, '0.00') from par.responsaveisomisso where romid = romid_array[i] ) > 0 ) then + select valorcredito , datacredito into valor_debito, data_debito from par.responsaveisomisso where romid = romid_array[i]; + update par.responsaveisomisso set datadebito = dtiniciomandato, valordebito = valor_debito where romid= romid_array[i+1]; + end if; + END LOOP; + + update par.responsaveisomisso set romstatus = 'A', carga = 'CREDITOVIRADEBITO' where odeid = i_odeid; + +end; +$$; -- libgit2 0.25.0