CREATE OR ALTER trigger ttbclassificacao_cont_b01u for tbclassificacao_contabil
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

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

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

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

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

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

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

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

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

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

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

