CREATE TRIGGER TTBOPERACAO_B03D FOR TBOPERACAO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

  HISTORICO = '';

  IF(OLD.CODIGO <> '') THEN
  BEGIN
    HISTORICO = HISTORICO || 'Registro excluido';
  END

  IF(HISTORICO <> '') THEN
  BEGIN
    EXECUTE PROCEDURE SPI_HISTORICO('TBOPERACAO', OLD.ID, HISTORICO);
  END
END;

CREATE OR ALTER TRIGGER TTBOPERACAO_B9U FOR TBOPERACAO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin

   HISTORICO = '';

   if (OLD.CODIGO <> NEW.CODIGO) then
       BEGIN
       HISTORICO = HISTORICO||' COD.'||OLD.CODIGO||'->'||NEW.CODIGO;
       END
   if (OLD.DESCRICAO <> NEW.DESCRICAO) then
       BEGIN
       HISTORICO = HISTORICO||' DESC.'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
       END
   if (OLD.TIPO<> NEW.TIPO) then
       BEGIN
       HISTORICO = HISTORICO||' TP.'||OLD.TIPO||'->'||NEW.TIPO;
       END

   if (OLD.ATUALIZA_CUSTO <> NEW.ATUALIZA_CUSTO) then
       BEGIN
       HISTORICO = HISTORICO||' ATUAL.CUSTO:'||OLD.ATUALIZA_CUSTO||'->'||NEW.ATUALIZA_CUSTO;
       END
   if (OLD.SERVICO <> NEW.SERVICO) then
       BEGIN
       HISTORICO = HISTORICO||' SERV.'||OLD.SERVICO||'->'||NEW.SERVICO;
       END                           
   if (OLD.EXIGE_CUSTO <> NEW.EXIGE_CUSTO) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE CUSTO:'||OLD.EXIGE_CUSTO||'->'||NEW.EXIGE_CUSTO;
       END
   if (OLD.EXIGE_CUSTO_EXTERNO <> NEW.EXIGE_CUSTO_EXTERNO) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE CUSTO EXT:'||OLD.EXIGE_CUSTO_EXTERNO||'->'||NEW.EXIGE_CUSTO_EXTERNO;
       END
   if (OLD.TRANSFERENCIA <> NEW.TRANSFERENCIA) then
       BEGIN
       HISTORICO = HISTORICO||' TRANSF?'||OLD.TRANSFERENCIA||'->'||NEW.TRANSFERENCIA;
       END
   if (OLD.EXIGE_NCM <> NEW.EXIGE_NCM) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE NCM:'||OLD.EXIGE_NCM||'->'||NEW.EXIGE_NCM;
       END
   if (OLD.BLOQUEIA_ITEM_OC <> NEW.BLOQUEIA_ITEM_OC) then
       BEGIN
       HISTORICO = HISTORICO||' BLQ.IT.OC.'||OLD.BLOQUEIA_ITEM_OC||'->'||NEW.BLOQUEIA_ITEM_OC;
       END
   if (OLD.CONTROLE_REVISAO <> NEW.CONTROLE_REVISAO) then
       BEGIN
       HISTORICO = HISTORICO||' CONT.REV.'||OLD.CONTROLE_REVISAO||'->'||NEW.CONTROLE_REVISAO;
       END

   if (OLD.DESPERDICIO <> NEW.DESPERDICIO) then
       BEGIN
       HISTORICO = HISTORICO||' DESPERD.'||OLD.DESPERDICIO||'->'||NEW.DESPERDICIO;
       END
   if (OLD.ACERTO <> NEW.ACERTO) then
       BEGIN
       HISTORICO = HISTORICO||' ACERTO:'||OLD.ACERTO||'->'||NEW.ACERTO;
       END
   if (OLD.CONTROLE_CONSIGNACAO <> NEW.CONTROLE_CONSIGNACAO) then
       BEGIN
       HISTORICO = HISTORICO||' CONSIG:'||OLD.CONTROLE_CONSIGNACAO||'->'||NEW.CONTROLE_CONSIGNACAO;
       END
   if (OLD.NAT_RECEITA <> NEW.NAT_RECEITA) then
       BEGIN
       HISTORICO = HISTORICO||' NAT.RECEITA:'||OLD.NAT_RECEITA||'->'||NEW.NAT_RECEITA;
       END
   if (OLD.NAT_BC_CRED <> NEW.NAT_BC_CRED) then
       BEGIN
       HISTORICO = HISTORICO||' NAT.BS.CRED:'||OLD.NAT_BC_CRED||'->'||NEW.NAT_BC_CRED;
       END
   if (OLD.CONTROLE_ESTOQUE <> NEW.CONTROLE_ESTOQUE) then
       BEGIN
       HISTORICO = HISTORICO||' CONTR.EST:'||OLD.CONTROLE_ESTOQUE||'->'||NEW.CONTROLE_ESTOQUE;
       END
   if (OLD.CONTROLE_ESTOQUE_EXTERNO <> NEW.CONTROLE_ESTOQUE_EXTERNO) then
       BEGIN
       HISTORICO = HISTORICO||' CONT.EST.EXT:'||OLD.CONTROLE_ESTOQUE_EXTERNO||'->'||NEW.CONTROLE_ESTOQUE_EXTERNO;
       END
   if (OLD.CONTROLE_FATURAMENTO <> NEW.CONTROLE_FATURAMENTO) then
       BEGIN
       HISTORICO = HISTORICO||' CONT.FATUR:'||OLD.CONTROLE_FATURAMENTO||'->'||NEW.CONTROLE_FATURAMENTO;
       END
   if (OLD.CONTROLE_DEVOLUCAO <> NEW.CONTROLE_DEVOLUCAO) then
       BEGIN
       HISTORICO = HISTORICO||' CONTR.DEV:'||OLD.CONTROLE_DEVOLUCAO||'->'||NEW.CONTROLE_DEVOLUCAO;
       END
   if (OLD.GERA_DUPLICATA <> NEW.GERA_DUPLICATA) then
       BEGIN
       HISTORICO = HISTORICO||' GERA PARC:'||OLD.GERA_DUPLICATA||'->'||NEW.GERA_DUPLICATA;
       END
   if (OLD.EXIGE_DUPLICATA <> NEW.EXIGE_DUPLICATA) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE PARC:'||OLD.EXIGE_DUPLICATA||'->'||NEW.EXIGE_DUPLICATA;
       END
   if (OLD.EXIGE_LOCALIZACAO <> NEW.EXIGE_LOCALIZACAO) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE LOC:'||OLD.EXIGE_LOCALIZACAO||'->'||NEW.EXIGE_LOCALIZACAO;
       END
   if (OLD.EXIGE_PEDIDO <> NEW.EXIGE_PEDIDO) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE PED:'||OLD.EXIGE_PEDIDO||'->'||NEW.EXIGE_PEDIDO;
       END
   if (OLD.EXIGE_OC <> NEW.EXIGE_OC) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE OC:'||OLD.EXIGE_OC||'->'||NEW.EXIGE_OC;
       END
   if (OLD.EXIGE_NF_REFERENCIA <> NEW.EXIGE_NF_REFERENCIA) then
       BEGIN
       HISTORICO = HISTORICO||' EXIGE DOC.REF:'||OLD.EXIGE_NF_REFERENCIA||'->'||NEW.EXIGE_NF_REFERENCIA;
       END
   if (OLD.GGF <> NEW.GGF) then
       BEGIN
       HISTORICO = HISTORICO||' GGF:'||OLD.GGF||'->'||NEW.GGF;
       END
   if (OLD.FAMILIAS <> NEW.FAMILIAS) then
       BEGIN
       HISTORICO = HISTORICO||' FAM:'||OLD.FAMILIAS||'->'||NEW.FAMILIAS;
       END

   if (OLD.STATUS <> NEW.STATUS) then
       BEGIN
       if (NEW.STATUS = '0') then
           HISTORICO = HISTORICO||' Status Inativado';
       if (NEW.STATUS = '1') then
           HISTORICO = HISTORICO||' Status Ativado';
       END

   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBOPERACAO', 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;
