SET TERM ^ ;

CREATE OR ALTER trigger ttbcfop_b02u for tbcfop
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.DESCRICAO <> NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Descricao na CFOP: '||OLD.CODIGO||', Alterada: '|| OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

    IF (OLD.DESCRICAO_COMPLETA <> NEW.DESCRICAO_COMPLETA) THEN
    BEGIN
        HISTORICO = HISTORICO||' Desc. Completa na CFOP: '||OLD.CODIGO||', Alterada: '|| OLD.DESCRICAO_COMPLETA||'->'||NEW.DESCRICAO_COMPLETA;
    END

    IF (OLD.TIPO <> NEW.TIPO) THEN
    BEGIN
        if (NEW.TIPO = 'E') then
           HISTORICO = HISTORICO||' Tipo na CFOP: '||OLD.CODIGO||', Tipo Entrada.';
        if (NEW.TIPO = 'S') then
           HISTORICO = HISTORICO||' Tipo na CFOP: '||OLD.CODIGO||', Tipo Saida.';
    END

    IF (OLD.STATUS <> NEW.STATUS) THEN
    BEGIN
       if (NEW.STATUS = '0') then
           HISTORICO = HISTORICO||' Status na CFOP: '||OLD.CODIGO||', Status Inativado.';
       if (NEW.STATUS = '1') then
           HISTORICO = HISTORICO||' Status na CFOP: '||OLD.CODIGO||', Status Ativado.';
    END

    IF (OLD.BASELEGAL_CODIGO <> NEW.BASELEGAL_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Base Legal na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.BASELEGAL_CODIGO||'->'||NEW.BASELEGAL_CODIGO;
    END

    IF (OLD.CONTA_RECEBER_OPERACAO <> NEW.CONTA_RECEBER_OPERACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Operacao Padrao na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.CONTA_RECEBER_OPERACAO||'->'||NEW.CONTA_RECEBER_OPERACAO;
    END

    IF (OLD.CONTA_RECEBER_MODALIDADE <> NEW.CONTA_RECEBER_MODALIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||' Modalidade na Padrao CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.CONTA_RECEBER_MODALIDADE||'->'||NEW.CONTA_RECEBER_MODALIDADE;
    END

    IF (OLD.CONTA_RECEBER_BANCO <> NEW.CONTA_RECEBER_BANCO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Banco Padrao na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.CONTA_RECEBER_BANCO||'->'||NEW.CONTA_RECEBER_BANCO;
    END

    IF (OLD.CONTA_RECEBER_COBRANCA <> NEW.CONTA_RECEBER_COBRANCA) THEN
    BEGIN
        HISTORICO = HISTORICO||' Cobranca Padrao CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.CONTA_RECEBER_COBRANCA||'->'||NEW.CONTA_RECEBER_COBRANCA;
    END

    IF (OLD.CONTA_RECEBER_POSICAO <> NEW.CONTA_RECEBER_POSICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Posicao Padrao CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.CONTA_RECEBER_POSICAO||'->'||NEW.CONTA_RECEBER_POSICAO;
    END

    IF (OLD.VALOR_CONTABIL <> NEW.VALOR_CONTABIL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Gerar Valor Contabil CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.VALOR_CONTABIL||'->'||NEW.VALOR_CONTABIL;
    END

    IF (OLD.DEVOLUCAO_RETORNO <> NEW.DEVOLUCAO_RETORNO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Devolucao e/ou Retorno CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.DEVOLUCAO_RETORNO||'->'||NEW.DEVOLUCAO_RETORNO;
    END

    IF (OLD.IBPTAX <> NEW.IBPTAX) THEN
    BEGIN
        HISTORICO = HISTORICO||' IBIPTAX na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.IBPTAX||'->'||NEW.IBPTAX;
    END

    IF (OLD.SPED_PISCOF <> NEW.SPED_PISCOF) THEN
    BEGIN
        HISTORICO = HISTORICO||' Ger. de Receita/Crédito(PIS/COFINS) na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.SPED_PISCOF||'->'||NEW.SPED_PISCOF;
    END

    IF (OLD.REDUCAO_BASE_PISCOF <> NEW.REDUCAO_BASE_PISCOF) THEN
    BEGIN
        HISTORICO = HISTORICO||' Reduzir Vr. Icms na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.REDUCAO_BASE_PISCOF||'->'||NEW.REDUCAO_BASE_PISCOF;
    END

    IF (OLD.CFOP_INVERSO <> NEW.CFOP_INVERSO) THEN
    BEGIN
        HISTORICO = HISTORICO||' Cfop inverso na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.CFOP_INVERSO||'->'||NEW.CFOP_INVERSO;
    END

    IF (OLD.OPERACAO_FISCAL <> NEW.OPERACAO_FISCAL) THEN
    BEGIN
        HISTORICO = HISTORICO||' Operacao Fiscal na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.OPERACAO_FISCAL||'->'||NEW.OPERACAO_FISCAL;
    END

    IF (OLD.PDV <> NEW.PDV) THEN
    BEGIN
        HISTORICO = HISTORICO||' Habilitar PDV na CFOP: '||OLD.CODIGO||', Alterado: '|| OLD.PDV||'->'||NEW.PDV;
    END

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

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCFOP', CAST(FN_REPLACE(NEW.CODIGO, '.', '') AS INTEGER), HISTORICO);
    END
END
^

SET TERM ; ^

