CREATE OR ALTER trigger ttbrequisicao_b1i_01 for tbrequisicao
active before insert position 1
AS
declare variable vData Date;
Begin

end;

CREATE OR ALTER trigger ttbrequisicao_b9u for tbrequisicao
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin

end;

ALTER TABLE TBREQUISICAO ADD OLD_PERFIL VARCHAR(10) DEFAULT '';
update TBREQUISICAO set OLD_PERFIL = PERFIL;
ALTER TABLE TBREQUISICAO DROP PERFIL;
ALTER TABLE TBREQUISICAO ADD PERFIL VARCHAR(10) DEFAULT '';
update TBREQUISICAO set PERFIL = OLD_PERFIL;
ALTER TABLE TBREQUISICAO DROP OLD_PERFIL;

CREATE OR ALTER trigger ttbrequisicao_b9u for tbrequisicao
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin

   HISTORICO = '';
   if (OLD.ESTABELECIMENTO_ID <> NEW.ESTABELECIMENTO_ID) then
       BEGIN
       HISTORICO = HISTORICO||' Est:'||OLD.ESTABELECIMENTO_ID||'->'||NEW.ESTABELECIMENTO_ID;
       END
   if (OLD.GP_ID <> NEW.GP_ID) then
       BEGIN
       HISTORICO = HISTORICO||'GP.'||OLD.GP_ID||'->'||NEW.GP_ID;
       END
   if (OLD.OPERADOR_ID <> NEW.OPERADOR_ID) then
       BEGIN
       HISTORICO = HISTORICO||'Oper.'||OLD.OPERADOR_ID||'->'||NEW.OPERADOR_ID;
       END
   if (OLD.REMESSA <> NEW.REMESSA) then
       BEGIN
       HISTORICO = HISTORICO||' Rem.'||OLD.REMESSA||'->'||NEW.REMESSA;
       END
   if (OLD.REMESSA_GERADA <> NEW.REMESSA_GERADA) then
       BEGIN
       HISTORICO = HISTORICO||' Rem.Ger.'||OLD.REMESSA_GERADA||'->'||NEW.REMESSA_GERADA;
       END

   if (OLD.DATA <> NEW.DATA) then
       BEGIN
       HISTORICO = HISTORICO||' Data:'||OLD.DATA||'->'||NEW.DATA;
       END
   if (OLD.Perfil <> NEW.Perfil) then
       BEGIN
       HISTORICO = HISTORICO||' Perf.'||OLD.Perfil||'->'||NEW.Perfil;
       END
   if (OLD.PRODUTO_ID <> NEW.PRODUTO_ID) then
       BEGIN
       HISTORICO = HISTORICO||' Prod.'||OLD.PRODUTO_ID||'->'||NEW.PRODUTO_ID;
       END
   if (OLD.TAMANHO <> NEW.TAMANHO) then
       BEGIN
       HISTORICO = HISTORICO||' Tam'||OLD.TAMANHO||'->'||NEW.TAMANHO;
       END
   if (OLD.QUANTIDADE <> NEW.QUANTIDADE) then
       BEGIN
       HISTORICO = HISTORICO||' Quant'||OLD.QUANTIDADE||'->'||NEW.QUANTIDADE;
       END
   if (OLD.JUSTIFICATIVA <> NEW.JUSTIFICATIVA) then
       BEGIN
       HISTORICO = HISTORICO||' Just.'||OLD.JUSTIFICATIVA||'->'||NEW.JUSTIFICATIVA;
       END

   if (OLD.CCUSTO <> NEW.CCUSTO) then
       BEGIN
       HISTORICO = HISTORICO||' C.Custo:'||OLD.CCUSTO||'->'||NEW.CCUSTO;
       END
   if (OLD.CONSUMO <> NEW.CONSUMO) then
       BEGIN
       HISTORICO = HISTORICO||' Cons.'||OLD.CONSUMO||'->'||NEW.CONSUMO;
       END
   if (OLD.DENSIDADE <> NEW.DENSIDADE) then
       BEGIN
       HISTORICO = HISTORICO||' Dens.'||OLD.DENSIDADE||'->'||NEW.DENSIDADE;
       END
   if (OLD.ESPESSURA <> NEW.ESPESSURA) then
       BEGIN
       HISTORICO = HISTORICO||' Esp.'||OLD.ESPESSURA||'->'||NEW.ESPESSURA;
       END
   if (OLD.Quebra <> NEW.Quebra) then
       BEGIN
       HISTORICO = HISTORICO||' Queb.'||OLD.Quebra||'->'||NEW.Quebra;
       END

   if (OLD.STATUS <> NEW.STATUS) then
       BEGIN
       if (NEW.STATUS = '0') then
           HISTORICO = HISTORICO||' Stat.Pendente';
       if (NEW.STATUS = '1') then
           HISTORICO = HISTORICO||' Stat.Autorizado';
       if (NEW.STATUS = '2') then
           HISTORICO = HISTORICO||' Stat.Rem.Gerada';
       if (NEW.STATUS = '3') then
           HISTORICO = HISTORICO||' Talão Excluído';
       END

   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBREQUISICAO', OLD.ID,
      (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
      (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
       :Historico);
       End
End;

CREATE OR ALTER trigger ttbrequisicao_b1i_01 for tbrequisicao
active before insert position 1
AS
declare variable vData Date;
Begin

  vData = Coalesce((Select First 1 F.Data_Producao From TbFamilia F, TbProduto P
                          Where P.Codigo = New.Produto_ID
                            and F.Codigo = P.Familia_Codigo),Cast('01.01.1900' as Date));

  if (:vData <> '01.01.1900') then
      Begin

      --if (New.Data - :vData = 1) then
          New.Data = :vData;

      --if (:vData <> New.Data) then
      --    Exception "..." 'Data de produção para registro de requisição inválida, a data liberada é '||
      --                    Extract(Day from vData)||'/'||Extract(Month from vData)||'/'||Extract(Year from vData);
      End

  if ((Trim(NEW.PERFIL) = '') or (NEW.PERFIL IS NULL)) Then
      Begin
      NEW.PERFIL = Coalesce((Select First 1 M.Perfil From TbProduto P, TbModelo_Bloqueio M
                              Where P.Codigo    = New.Produto_ID
                                and M.Modelo_Id = P.Modelo_Codigo
                                and M.Cor_Id    = P.Cor_Codigo
                                and M.Tamanho   = New.Tamanho),'');
      END

End;
