Last active
August 4, 2020 18:08
-
-
Save AndyDaSilva52/195b1b9eeb06be449fef1f6a06978579 to your computer and use it in GitHub Desktop.
#MegaERP - Trigger para não permitir inserir movimento financeiro em Conta Financeira quando Data do Movimento menor que Maior Data de Movimento Conciliado #Mega #MegaERP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
create or replace trigger T_CUS_FIN_BLOQ_MOVTO | |
for insert or update on MGFIN.FIN_MOVIMENTO | |
compound trigger | |
TYPE TYP_CUS_RC_FINMOV IS RECORD( | |
ORG_TAB_IN_CODIGO MGFIN.FIN_MOVIMENTO.ORG_TAB_IN_CODIGO%TYPE, | |
ORG_PAD_IN_CODIGO MGFIN.FIN_MOVIMENTO.ORG_PAD_IN_CODIGO%TYPE, | |
ORG_IN_CODIGO MGFIN.FIN_MOVIMENTO.ORG_IN_CODIGO%TYPE, | |
ORG_TAU_ST_CODIGO MGFIN.FIN_MOVIMENTO.ORG_TAU_ST_CODIGO%TYPE, | |
agn_tab_in_codigo MGFIN.FIN_MOVIMENTO.agn_tab_in_codigo%TYPE, | |
agn_pad_in_codigo MGFIN.FIN_MOVIMENTO.agn_pad_in_codigo%TYPE, | |
agn_in_codigo MGFIN.FIN_MOVIMENTO.agn_in_codigo%TYPE, | |
agn_tau_st_codigo MGFIN.FIN_MOVIMENTO.agn_tau_st_codigo%TYPE, | |
mov_dt_datadocto MGFIN.FIN_MOVIMENTO.mov_dt_datadocto%TYPE | |
); | |
TYPE TYP_CUS_TB_FINMOV IS TABLE OF TYP_CUS_RC_FINMOV | |
INDEX BY BINARY_INTEGER; | |
rROW TYP_CUS_TB_FINMOV; | |
-- Executed before each row change- :NEW, :OLD are available | |
BEFORE EACH ROW IS | |
i INTEGER := 0; | |
BEGIN | |
NULL; | |
i := rROW.COUNT + 1; | |
rROW(i).ORG_TAB_IN_CODIGO := :NEW.ORG_TAB_IN_CODIGO; | |
rROW(i).ORG_PAD_IN_CODIGO := :NEW.ORG_PAD_IN_CODIGO; | |
rROW(i).ORG_IN_CODIGO := :NEW.ORG_IN_CODIGO; | |
rROW(i).ORG_TAU_ST_CODIGO := :NEW.ORG_TAU_ST_CODIGO; | |
rROW(i).agn_tab_in_codigo := :NEW.agn_tab_in_codigo; | |
rROW(i).agn_pad_in_codigo := :NEW.agn_pad_in_codigo; | |
rROW(i).agn_in_codigo := :NEW.agn_in_codigo; | |
rROW(i).agn_tau_st_codigo := :NEW.agn_tau_st_codigo; | |
rROW(i).mov_dt_datadocto := :NEW.mov_dt_datadocto; | |
END BEFORE EACH ROW; | |
--Executed after DML statement | |
AFTER STATEMENT IS | |
-- local variables here | |
v_Ultimadata mgfin.fin_movimento.mov_dt_datadocto%Type; | |
BEGIN | |
IF INSERTING THEN | |
FOR i IN NVL(rROW.FIRST, 1) .. NVL(rROW.LAST,0) | |
LOOP | |
FOR cROW IN ( | |
select a.agn_in_codigo, TRUNC(max(b.mov_dt_datadocto)) max_mov_dt_datadocto | |
from mgfin.fin_conciliamovimento a, | |
mgfin.fin_movimento b | |
Where a.org_tab_in_codigo = rROW(i).org_tab_in_codigo and | |
a.org_pad_in_codigo = rROW(i).org_pad_in_codigo and | |
a.org_in_codigo = rROW(i).org_in_codigo and | |
a.org_tau_st_codigo = rROW(i).org_tau_st_codigo and | |
a.agn_tab_in_codigo = rROW(i).agn_tab_in_codigo and | |
a.agn_pad_in_codigo = rROW(i).agn_pad_in_codigo and | |
a.agn_in_codigo = rROW(i).agn_in_codigo and | |
a.agn_tau_st_codigo = rROW(i).agn_tau_st_codigo and | |
rROW(i).agn_tau_st_codigo = 'N' and | |
a.con_in_sequencial = b.con_in_sequencial | |
group by | |
a.agn_in_codigo | |
) LOOP | |
If trunc(rROW(i).mov_dt_datadocto) <= cROW.max_mov_dt_datadocto Then | |
raise_application_error(-20001, 'Não é permitido lançamento no Agente Conta Financeira ['|| cROW.AGN_IN_CODIGO ||'] no período já conciliado, considerando sua última data em ['|| TO_CHAR(cROW.max_mov_dt_datadocto,'DD/MM/YYYY') ||']! [MGCUSTOM.T_CUS_BLOQ_LANC_FIN]'); | |
End If; | |
END LOOP cROW; | |
END LOOP i; | |
END IF; | |
END AFTER STATEMENT; | |
end T_CUS_FIN_BLOQ_MOVTO; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment