SET TERM ^ ;
CREATE OR ALTER TRIGGER TTBPEDIDO_B9U FOR TBPEDIDO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE USUARIO VARCHAR(20);
BEGIN

   HISTORICO = '';

   IF (OLD.ESTABELECIMENTO_CODIGO <> NEW.ESTABELECIMENTO_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' ESTAB:'||OLD.ESTABELECIMENTO_CODIGO||'->'||NEW.ESTABELECIMENTO_CODIGO;
       END
   IF (OLD.CLIENTE_CODIGO <> NEW.CLIENTE_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CLIENTE:'||OLD.CLIENTE_CODIGO||'->'||NEW.CLIENTE_CODIGO;
       END
   IF (OLD.REPRESENTANTE_CODIGO <> NEW.REPRESENTANTE_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' REP:'||OLD.REPRESENTANTE_CODIGO||'->'||NEW.REPRESENTANTE_CODIGO;
       END
   IF (OLD.CLIENTE_ID_AMOSTRA <> NEW.CLIENTE_ID_AMOSTRA) THEN
       BEGIN
       HISTORICO = HISTORICO||' CLI.AMOSTRA:'||OLD.CLIENTE_ID_AMOSTRA||'->'||NEW.CLIENTE_ID_AMOSTRA;
       END
   IF (OLD.DATA <> NEW.DATA) THEN
       BEGIN
       HISTORICO = HISTORICO||' DT.EMISS.'||OLD.DATA||'->'||NEW.DATA;
       END
   IF (OLD.DATA_CLIENTE <> NEW.DATA_CLIENTE) THEN
       BEGIN
       HISTORICO = HISTORICO||' DT.CLI.'||OLD.DATA_CLIENTE||'->'||NEW.DATA_CLIENTE;
       END
   IF (OLD.PROGRAMADO<> NEW.PROGRAMADO) THEN
       BEGIN
       HISTORICO = HISTORICO||' PROG.'||OLD.PROGRAMADO||'->'||NEW.PROGRAMADO;
       END
   IF (OLD.DATA_ENTREGA <> NEW.DATA_ENTREGA) THEN
       BEGIN
       HISTORICO = HISTORICO||' PREV.FAT.'||OLD.DATA_ENTREGA||'->'||NEW.DATA_ENTREGA;
       END
   IF (OLD.PEDIDO_CLIENTE <> NEW.PEDIDO_CLIENTE) THEN
       BEGIN
       HISTORICO = HISTORICO||' PED.CLI.'||OLD.PEDIDO_CLIENTE||'->'||NEW.PEDIDO_CLIENTE;
       END
   IF (OLD.TRANSPORTADORA_CODIGO<> NEW.TRANSPORTADORA_CODIGO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TRANSP.'||OLD.TRANSPORTADORA_CODIGO||'->'||NEW.TRANSPORTADORA_CODIGO;
       END
   IF (OLD.PRIORIDADE<> NEW.PRIORIDADE) THEN
       BEGIN
       HISTORICO = HISTORICO||' PRIOR.'||OLD.PRIORIDADE||'->'||NEW.PRIORIDADE;
       END
   IF (OLD.FRETE<> NEW.FRETE) THEN
       BEGIN
       HISTORICO = HISTORICO||' FRETE.'||OLD.FRETE||'->'||NEW.FRETE;
       END
   IF (OLD.PAGAMENTO_FORMA<> NEW.PAGAMENTO_FORMA) THEN
       BEGIN
       HISTORICO = HISTORICO||' FORM.PG.'||OLD.PAGAMENTO_FORMA||'->'||NEW.PAGAMENTO_FORMA;
       END
   IF (OLD.PAGAMENTO_CONDICAO<> NEW.PAGAMENTO_CONDICAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' COND.PG.'||OLD.PAGAMENTO_CONDICAO||'->'||NEW.PAGAMENTO_CONDICAO;
       END

   IF (OLD.VALOR_FRETE <> NEW.VALOR_FRETE) THEN
       BEGIN
       HISTORICO = HISTORICO||' VR.FRT.'||OLD.VALOR_FRETE||'->'||NEW.VALOR_FRETE;
       END
   IF (OLD.PESO <> NEW.PESO) THEN
       BEGIN
       HISTORICO = HISTORICO||' PESO:'||OLD.PESO||'->'||NEW.PESO;
       END
   IF (OLD.TIPO_PEDIDO <> NEW.TIPO_PEDIDO) THEN
       BEGIN
       HISTORICO = HISTORICO||' TP.PED.'||OLD.TIPO_PEDIDO||'->'||NEW.TIPO_PEDIDO;
       END
   IF (OLD.CLASSIFICACAO <> NEW.CLASSIFICACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' PERF.'||OLD.CLASSIFICACAO||'->'||NEW.CLASSIFICACAO;
       END
   IF (OLD.CLASSIFICACAO_FINANCEIRA <> NEW.CLASSIFICACAO_FINANCEIRA) THEN
       BEGIN
       HISTORICO = HISTORICO||' CLASS.FIN.'||OLD.CLASSIFICACAO_FINANCEIRA||'->'||NEW.CLASSIFICACAO_FINANCEIRA;
       END
   IF (OLD.CCUSTO <> NEW.CCUSTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' C.CUSTO:'||OLD.CCUSTO||'->'||NEW.CCUSTO;
       END
   IF (OLD.TABELA_UF <> NEW.TABELA_UF) THEN
       BEGIN
       HISTORICO = HISTORICO||' TAB.UF:'||OLD.TABELA_UF||'->'||NEW.TABELA_UF;
       END
   IF (OLD.CODIGO_RASTREIO <> NEW.CODIGO_RASTREIO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CÓD.RASTREIO:'||OLD.CODIGO_RASTREIO||'->'||NEW.CODIGO_RASTREIO;
       END
   IF (OLD.EMBALAGEM <> NEW.EMBALAGEM) THEN
       BEGIN
       HISTORICO = HISTORICO||' EMB.'||OLD.EMBALAGEM||'->'||NEW.EMBALAGEM;
       END
   IF (OLD.TABELA_PRECO_ID <> NEW.TABELA_PRECO_ID) THEN
       BEGIN
       HISTORICO = HISTORICO||' TAB.PREÇO:'||OLD.TABELA_PRECO_ID||'->'||NEW.TABELA_PRECO_ID;
       END
   IF (OLD.DESCONTO1 <> NEW.DESCONTO1) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.1:'||OLD.DESCONTO1||'->'||NEW.DESCONTO1;
       END
   IF (OLD.DESCONTO2 <> NEW.DESCONTO2) THEN
       BEGIN
       HISTORICO = HISTORICO||' DESC.2:'||OLD.DESCONTO2||'->'||NEW.DESCONTO2;
       END

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

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

   IF (OLD.VOLUMES<> NEW.VOLUMES) THEN
       BEGIN
       HISTORICO = HISTORICO||' VOL.'||OLD.VOLUMES||'->'||NEW.VOLUMES;
       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 (OLD.SITUACAO <> NEW.SITUACAO) THEN
       BEGIN
       IF (NEW.SITUACAO = '0') THEN
           HISTORICO = HISTORICO||' PEDIDO DESCONFIRMADO';
           NEW.STATUS_ECOMMERCE = 2;
       IF (NEW.SITUACAO = '1') THEN
           HISTORICO = HISTORICO||' PEDIDO CONFIRMADO';
           NEW.STATUS_ECOMMERCE = 3;
       END

   IF (OLD.FORMA_ANALISE <> NEW.FORMA_ANALISE) THEN
       BEGIN
       HISTORICO = HISTORICO||' F.ANALISE:'||OLD.FORMA_ANALISE ||'->'||NEW.FORMA_ANALISE;
       END
    
   IF (OLD.CHAVE_LIBERACAO <> NEW.CHAVE_LIBERACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' CHAVE:'||OLD.CHAVE_LIBERACAO||'->'||NEW.CHAVE_LIBERACAO;
       END
 
   IF (HISTORICO <> '') THEN
       BEGIN
       USUARIO = (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION);

       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPEDIDO', OLD.PEDIDO, :USUARIO,
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       :HISTORICO);

       IF (OLD.DATA_CLIENTE <> NEW.DATA_CLIENTE) THEN
           BEGIN

               UPDATE TBPEDIDO_HISTORICO_DATA SET ULTIMA_ALTERACAO = '0'
               WHERE PEDIDO = OLD.PEDIDO AND DATA_CAMPO = 'DATA_CLIENTE' AND ULTIMA_ALTERACAO = '1';
    
               INSERT INTO TBPEDIDO_HISTORICO_DATA (
               PEDIDO, DATA_CAMPO, DATA_ORIGEM, DATA_DESTINO, USUARIO) VALUES (
               OLD.PEDIDO, 'DATA_CLIENTE', OLD.DATA_CLIENTE, NEW.DATA_CLIENTE, :USUARIO);

           END

       IF (OLD.DATA_ENTREGA <> NEW.DATA_ENTREGA) THEN
           BEGIN

               UPDATE TBPEDIDO_HISTORICO_DATA SET ULTIMA_ALTERACAO = '0'
               WHERE PEDIDO = OLD.PEDIDO AND DATA_CAMPO = 'DATA_ENTREGA' AND ULTIMA_ALTERACAO = '1';

               INSERT INTO TBPEDIDO_HISTORICO_DATA (
               PEDIDO, DATA_CAMPO, DATA_ORIGEM, DATA_DESTINO, USUARIO) VALUES (
               OLD.PEDIDO, 'DATA_ENTREGA', OLD.DATA_ENTREGA, NEW.DATA_ENTREGA, :USUARIO);

           END

       END

END;

^

SET TERM ; ^