
CREATE OR ALTER trigger tbconta_receber_operacao_b01u for tbconta_receber_operacao
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';
    IF ( OLD.DESCRICAO_REDUZIDA <> NEW.DESCRICAO_REDUZIDA) THEN
    BEGIN
        HISTORICO = HISTORICO||'DESC. RED: '|| OLD.DESCRICAO_REDUZIDA||'->'||NEW.DESCRICAO_REDUZIDA;
    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.status <> NEW.status) THEN
    BEGIN
        HISTORICO = HISTORICO||' STTS: '|| OLD.status||'->'||NEW.status;
    END

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

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

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

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

    IF ( OLD.conta_credito <> NEW.conta_credito) THEN
    BEGIN
        HISTORICO = HISTORICO||' C.CRÉD: '|| OLD.conta_credito||'->'||NEW.conta_credito;
    END

    IF ( OLD.conta_debito <> NEW.conta_debito) THEN
    BEGIN
        HISTORICO = HISTORICO||' C.DÉB: '|| OLD.conta_debito||'->'||NEW.conta_debito;
    END

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

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

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

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

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

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

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCONTA_RECEBER_OPERACAO',NEW.codigo, HISTORICO);
    END
END

