CREATE OR ALTER trigger ttbestoque_trans_item_b0i_01 for tbestoque_transacao_item
active before insert position 0
AS
DECLARE VARIABLE DataInicial Date;
DECLARE VARIABLE DataFinal Date;
DECLARE VARIABLE MODULO_CODIGO INTEGER;

DECLARE VARIABLE DATA1 VARCHAR(10);
DECLARE VARIABLE DATA2 VARCHAR(23);
Begin

For
Select   
(Select First 1 A.DataInicial   From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = NEW.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1),
(Select First 1 A.DataFINAL     From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = NEW.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1),
Coalesce((Select First 1 A.MODULO_CODIGO From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = NEW.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1),0),

extract(day from NEW.DATA)||'/'||extract(month from NEW.DATA)||'/'||extract(year from NEW.DATA),
(Select First 1 extract(day from A.DataInicial)||'/'||extract(month from A.DataInicial)||'/'||extract(year from A.DataInicial)
                ||' A '||extract(day from A.DataFINAL)||'/'||extract(month from A.DataFINAL)||'/'||extract(year from A.DataFINAL)
   From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = NEW.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1)

FROM RDB$DATABASE

Into :DataInicial,:DataFinal,:MODULO_CODIGO,:DATA1,:DATA2
Do
begin
  if (:MODULO_CODIGO = 0)      Then Exception "..." 'MÓDULO DE ESTOQUE[1] NÃO LOCALIZADO PARA ESSE ESTABELECIMENTO. ID.'||NEW.ESTABELECIMENTO_CODIGO;--||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (NEW.DATA < :DATAINICIAL) Then Exception "..." 'MÓDULO DE ESTOQUE[1]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;--||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (NEW.DATA > :DATAFINAL)   Then Exception "..." 'MÓDULO DE ESTOQUE[1]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2;--||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
end

End;


CREATE OR ALTER trigger ttbestoque_trans_item_b0d_01 for tbestoque_transacao_item
active before delete position 0
AS
DECLARE VARIABLE DataInicial Date;
DECLARE VARIABLE DataFinal Date;
DECLARE VARIABLE MODULO_CODIGO INTEGER;

DECLARE VARIABLE DATA1 VARCHAR(10);
DECLARE VARIABLE DATA2 VARCHAR(23);

Begin

For
Select  
(Select First 1 A.DataInicial   From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1),
(Select First 1 A.DataFINAL     From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1),
Coalesce((Select First 1 A.MODULO_CODIGO From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1),0),

extract(day from OLD.DATA)||'/'||extract(month from OLD.DATA)||'/'||extract(year from OLD.DATA),
(Select First 1 extract(day from A.DataInicial)||'/'||extract(month from A.DataInicial)||'/'||extract(year from A.DataInicial)
                ||' A '||extract(day from A.DataFINAL)||'/'||extract(month from A.DataFINAL)||'/'||extract(year from A.DataFINAL)
   From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 1) 

FROM RDB$DATABASE

Into :DataInicial,:DataFinal,:MODULO_CODIGO,:DATA1,:DATA2
Do
begin
  if (:MODULO_CODIGO = 0)      Then Exception "..." 'MÓDULO DE ESTOQUE[1] NÃO LOCALIZADO PARA ESSE ESTABELECIMENTO. ID.'||OLD.ESTABELECIMENTO_CODIGO||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (OLD.DATA < :DATAINICIAL) Then Exception "..." 'MÓDULO DE ESTOQUE[1]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
  if (OLD.DATA > :DATAFINAL)   Then Exception "..." 'MÓDULO DE ESTOQUE[1]. DATA '||:DATA1||' FORA DO PERÍODO LIBERADO: '||:DATA2||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
end

End;