ALTER TABLE TBOPERACAO
    ADD COMPRA_REVENDA INTEGER;

SET TERM ^ ;

CREATE OR ALTER trigger ttboperacao_b9u for tboperacao
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(2000);
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||' NAT:'||OLD.TIPO||'->'||NEW.TIPO;
       END

   IF (OLD.TIPO_DESCONTO <> NEW.TIPO_DESCONTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TP.DESC:'||OLD.TIPO_DESCONTO||'->'||NEW.TIPO_DESCONTO;
       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.BC.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.TIPO_SERVICO <> NEW.TIPO_SERVICO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TP.SERV:'||OLD.TIPO_SERVICO||'->'||NEW.TIPO_SERVICO;
       END

   IF (OLD.STATUS <> NEW.STATUS) THEN
       BEGIN
       HISTORICO = HISTORICO||' STATUS:'||OLD.STATUS||'->'||NEW.STATUS;
       END

   IF (OLD.FDI <> NEW.FDI) THEN
       BEGIN
       HISTORICO = HISTORICO||' FDI:'||OLD.FDI||'->'||NEW.FDI;
       END

   IF (OLD.COMPRA_REVENDA IS DISTINCT FROM NEW.COMPRA_REVENDA) THEN
       BEGIN
       HISTORICO = HISTORICO||' REVENDA:'||COALESCE(OLD.COMPRA_REVENDA, 0)||'->'||COALESCE(NEW.COMPRA_REVENDA, 0);
       END

   IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' OBSERVACAO ALTERADA';
       END

   IF (HISTORICO <> '') THEN
       BEGIN
       HISTORICO = 'REGISTRO ALTERADO:'||HISTORICO;
       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),
       FN_ELIPSES(:HISTORICO,500));
       END
END
^

SET TERM ; ^



