SET TERM ^ ;

CREATE OR ALTER trigger ttbtabela_preco_b02u for tbtabela_preco
active before update position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(8000);
BEGIN
  
  HISTORICO = '';

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

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

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

    IF(NEW.DATA_INICIAL <> OLD.DATA_INICIAL) THEN
    BEGIN                  
        HISTORICO = HISTORICO||' DT.INICIAL:'||FN_DATE(OLD.DATA_INICIAL, 'DD/MM/YYYY')||'->'||FN_DATE(NEW.DATA_INICIAL, 'DD/MM/YYYY');
    END

    IF(NEW.DATA_FINAL <> OLD.DATA_FINAL) THEN
    BEGIN                  
        HISTORICO = HISTORICO||' DT.FINAL:'||FN_DATE(OLD.DATA_FINAL, 'DD/MM/YYYY')||'->'||FN_DATE(NEW.DATA_FINAL, 'DD/MM/YYYY');
    END

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

    IF(NEW.TABELA_PRECO_ID_PROMOCIONAL IS DISTINCT FROM OLD.TABELA_PRECO_ID_PROMOCIONAL) THEN
    BEGIN                  
        HISTORICO = HISTORICO||' TAB.PRECO PROM.:'||COALESCE(OLD.TABELA_PRECO_ID_PROMOCIONAL, 0)||'->'||COALESCE(NEW.TABELA_PRECO_ID_PROMOCIONAL, 0);
    END

    IF(NEW.TABELA_PRECO_ID_BASE IS DISTINCT FROM OLD.TABELA_PRECO_ID_BASE) THEN
    BEGIN                  
        HISTORICO = HISTORICO||' TAB.PRECO BASE:'||COALESCE(OLD.TABELA_PRECO_ID_BASE, 0)||'->'||COALESCE(NEW.TABELA_PRECO_ID_BASE, 0);
    END

    IF(NEW.PERCENTUAL_BASE IS DISTINCT FROM OLD.PERCENTUAL_BASE) THEN
    BEGIN
        HISTORICO = HISTORICO||' % BASE:'||OLD.PERCENTUAL_BASE||'->'||NEW.PERCENTUAL_BASE;
    END

    IF(NEW.DECIMAIS_BASE IS DISTINCT FROM OLD.DECIMAIS_BASE) THEN
    BEGIN
        HISTORICO = HISTORICO||' CASAS DECIMAIS BASE:'||OLD.DECIMAIS_BASE||'->'||NEW.DECIMAIS_BASE;
    END

    IF(NEW.ORIGEM_PRECO_BASE IS DISTINCT FROM OLD.ORIGEM_PRECO_BASE) THEN
    BEGIN                  
        HISTORICO = HISTORICO||' ORIG.PRECO BASE:'||COALESCE(OLD.ORIGEM_PRECO_BASE, 0)||'->'||COALESCE(NEW.ORIGEM_PRECO_BASE, 0);
    END

    IF(NEW.APLICAR_DESCONTO IS DISTINCT FROM OLD.APLICAR_DESCONTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' APLIC.DESC:'||OLD.APLICAR_DESCONTO||'->'||NEW.APLICAR_DESCONTO;
    END

    IF(NEW.LOCALIZACAO_PDV IS DISTINCT FROM OLD.LOCALIZACAO_PDV) THEN
    BEGIN
        HISTORICO = HISTORICO||' LOCAL.PDV:'||OLD.LOCALIZACAO_PDV||'->'||NEW.LOCALIZACAO_PDV;
    END

    IF(NEW.REPRESENTANTE_COMISSAO IS DISTINCT FROM OLD.REPRESENTANTE_COMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' REPRES.COMISSAO:'||OLD.REPRESENTANTE_COMISSAO||'->'||NEW.REPRESENTANTE_COMISSAO;
    END

    IF(NEW.HABILITA_CONSULTA_PRECO IS DISTINCT FROM OLD.HABILITA_CONSULTA_PRECO) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.CONSULTA PRECO:'||OLD.HABILITA_CONSULTA_PRECO||'->'||NEW.HABILITA_CONSULTA_PRECO;
    END

    IF(NEW.TABELA_PRECO_ID_IMPRESSAO IS DISTINCT FROM OLD.TABELA_PRECO_ID_IMPRESSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TAB.PRECO IMP:'||OLD.TABELA_PRECO_ID_IMPRESSAO||'->'||NEW.TABELA_PRECO_ID_IMPRESSAO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBTABELA_PRECO', NEW.ID, FN_ELIPSES(HISTORICO,500));
    END
END
^

SET TERM ; ^

