CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_CLASS_B03U FOR TBCAIXABANCO_LANCAMENTO_CLASS
ACTIVE BEFORE UPDATE POSITION 9
AS
declare variable HISTORICO VARCHAR(8000);
begin
    HISTORICO = '';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IF(NEW.MOVCONTABIL_ID <> OLD.MOVCONTABIL_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOV.CONTAB.ID:'||OLD.MOVCONTABIL_ID||'->'||NEW.MOVCONTABIL_ID;
    END

    IF(HISTORICO <> '') THEN
    BEGIN
       HISTORICO = 'LANC.CLASS. ID:'||NEW.CONTROLE||', CLASSIF.FIN:'||NEW.CLASSIFICACAO_CONTABIL||', CCUSTO:'||NEW.CCUSTO||', CCONTABIL:'||NEW.CONTA_CONTABIL||' ALTERADA'||HISTORICO;
       EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CAIXABANCO_CONTROLE, FN_ELIPSES(HISTORICO,500));
    END
END;