ALTER TABLE TBPDV
    ADD HABILITA_BRINDE_CF_NFC INTEGER DEFAULT 1 NOT NULL;
	
SET TERM ^ ;

CREATE OR ALTER trigger ttbpdv_b01u for tbpdv
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(2000);
BEGIN

   HISTORICO = '';

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

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

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

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

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

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

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

    IF ( OLD.SAT_GRAVAR_LOG <> NEW.SAT_GRAVAR_LOG) THEN
    BEGIN
        HISTORICO = HISTORICO||' SAT.GRAV.LOG:'||OLD.SAT_GRAVAR_LOG||'->'||NEW.SAT_GRAVAR_LOG;
    END

    IF ( OLD.SAT_VERSAO_XML <> NEW.SAT_VERSAO_XML) THEN
    BEGIN
        HISTORICO = HISTORICO||' SAT.VERS.XML:'||OLD.SAT_VERSAO_XML||'->'||NEW.SAT_VERSAO_XML;
    END

    IF ( OLD.SAT_COD_ATIVACAO <> NEW.SAT_COD_ATIVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' SAT.COD.ATIV:'||OLD.SAT_COD_ATIVACAO||'->'||NEW.SAT_COD_ATIVACAO;
    END 

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

    IF ( OLD.SAT_SH_ASSINATURA <> NEW.SAT_SH_ASSINATURA) THEN
    BEGIN
        HISTORICO = HISTORICO||' SAT.SH.ASSIN:'||OLD.SAT_SH_ASSINATURA||'->'||NEW.SAT_SH_ASSINATURA;
    END 

    IF ( OLD.SAT_NUMERO_SERIE <> NEW.SAT_NUMERO_SERIE) THEN
    BEGIN
        HISTORICO = HISTORICO||' SAT.NUM.SERIE:'||OLD.SAT_NUMERO_SERIE||'->'||NEW.SAT_NUMERO_SERIE;
    END 

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

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

    IF ( OLD.CONTA_CONTABIL IS DISTINCT FROM NEW.CONTA_CONTABIL) THEN
    BEGIN
        HISTORICO = HISTORICO||' C.CONTABIL:'||COALESCE(OLD.CONTA_CONTABIL, '')||'->'||COALESCE(NEW.CONTA_CONTABIL, '');
    END

    IF ( OLD.TIPO_CLIENTE_ID IS DISTINCT FROM NEW.TIPO_CLIENTE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' TP.CLIENTE:'||COALESCE(OLD.TIPO_CLIENTE_ID, 0)||'->'||COALESCE(NEW.TIPO_CLIENTE_ID, 0);
    END

    IF (OLD.CANAL_VENDAS_ID IS DISTINCT FROM NEW.CANAL_VENDAS_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' CANAL VENDAS:'||COALESCE(OLD.CANAL_VENDAS_ID, 0)||'->'||COALESCE(NEW.CANAL_VENDAS_ID, 0);
    END

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

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

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

    IF (OLD.PERCENTUAL_DESCONTO_MAX IS DISTINCT FROM NEW.PERCENTUAL_DESCONTO_MAX) THEN
    BEGIN
        HISTORICO = HISTORICO||' PERC.DESC.MAX:'||COALESCE(OLD.PERCENTUAL_DESCONTO_MAX, 0.00)||' % ->'||COALESCE(NEW.PERCENTUAL_DESCONTO_MAX, 0.00)||' %';
    END

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

    IF (OLD.NFCE IS DISTINCT FROM NEW.NFCE) THEN
    BEGIN
        HISTORICO = HISTORICO||' NFCE:'||COALESCE(OLD.NFCE, 0)||'->'||COALESCE(NEW.NFCE, 0);
    END
    
    IF (OLD.SERIE_NFE IS DISTINCT FROM NEW.SERIE_NFE) THEN
    BEGIN
        HISTORICO = HISTORICO||' SERIE NFE:'||COALESCE(OLD.SERIE_NFE, 0)||'->'||COALESCE(NEW.SERIE_NFE, 0);
    END
    
    IF (OLD.SERIE_NFCE IS DISTINCT FROM NEW.SERIE_NFCE) THEN
    BEGIN
        HISTORICO = HISTORICO||' SERIE NFCE:'||COALESCE(OLD.SERIE_NFCE, 0)||'->'||COALESCE(NEW.SERIE_NFCE, 0);
    END
    
    IF (OLD.NUMERO_CAIXA IS DISTINCT FROM NEW.NUMERO_CAIXA) THEN
    BEGIN
        HISTORICO = HISTORICO||' NUM.CAIXA:'||COALESCE(OLD.NUMERO_CAIXA, 0)||'->'||COALESCE(NEW.NUMERO_CAIXA, 0);
    END

    IF (OLD.TIPO_PDV IS DISTINCT FROM NEW.TIPO_PDV) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO PDV:'||COALESCE(OLD.TIPO_PDV, 0)||'->'||COALESCE(NEW.TIPO_PDV, 0);
    END

    IF (OLD.TIPO_IMPRESSAO IS DISTINCT FROM NEW.TIPO_IMPRESSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO IMP:'||COALESCE(OLD.TIPO_IMPRESSAO, 0)||'->'||COALESCE(NEW.TIPO_IMPRESSAO, 0);
    END

    IF (OLD.BLOQUEAR_QUANTIDADE_EAN IS DISTINCT FROM NEW.BLOQUEAR_QUANTIDADE_EAN) THEN
    BEGIN
        HISTORICO = HISTORICO||' BLOQ.QTD.EAN:'||COALESCE(OLD.BLOQUEAR_QUANTIDADE_EAN, 0)||'->'||COALESCE(NEW.BLOQUEAR_QUANTIDADE_EAN, 0);
    END

    IF (OLD.CAIXABANCO_ID_CHEQUE IS DISTINCT FROM NEW.CAIXABANCO_ID_CHEQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAIXA.CHEQUE:'||COALESCE(OLD.CAIXABANCO_ID_CHEQUE, 0)||'->'||COALESCE(NEW.CAIXABANCO_ID_CHEQUE, 0);
    END

    IF (OLD.CLASSIFICACAO_FINAN_CHEQUE IS DISTINCT FROM NEW.CLASSIFICACAO_FINAN_CHEQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' CLASS.FIN.CHEQUE:'||COALESCE(OLD.CLASSIFICACAO_FINAN_CHEQUE, '')||'->'||COALESCE(NEW.CLASSIFICACAO_FINAN_CHEQUE, '');
    END

    IF (OLD.CCUSTO_CHEQUE IS DISTINCT FROM NEW.CCUSTO_CHEQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' CCUSTO.CHEQUE:'||COALESCE(OLD.CCUSTO_CHEQUE, '')||'->'||COALESCE(NEW.CCUSTO_CHEQUE, '');
    END

    IF (OLD.CODIGO_VINCULACAO_AC IS DISTINCT FROM NEW.CODIGO_VINCULACAO_AC) THEN
    BEGIN
        HISTORICO = HISTORICO||' COD.VINC.AC:'||COALESCE(OLD.CODIGO_VINCULACAO_AC, '')||'->'||COALESCE(NEW.CODIGO_VINCULACAO_AC, '');
    END

    IF (OLD.ANALISE_CREDITO_COLABORADOR IS DISTINCT FROM NEW.ANALISE_CREDITO_COLABORADOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' LIMITE CREDITO COLAB:'||COALESCE(OLD.ANALISE_CREDITO_COLABORADOR, '')||'->'||COALESCE(NEW.ANALISE_CREDITO_COLABORADOR, '');
    END

    IF (OLD.TIPO_SENHA_DESCONTOS IS DISTINCT FROM NEW.TIPO_SENHA_DESCONTOS) THEN
    BEGIN
        HISTORICO = HISTORICO||' EXIGE SENHA(EXCLUSOES,DESCONTOS,BRINDES):'||COALESCE(OLD.TIPO_SENHA_DESCONTOS, '')||'->'||COALESCE(NEW.TIPO_SENHA_DESCONTOS, '');
    END

    IF (OLD.BLOQUEAR_VENDA IS DISTINCT FROM NEW.BLOQUEAR_VENDA) THEN
    BEGIN
        HISTORICO = HISTORICO||' BLOQ. VENDA:'||COALESCE(OLD.BLOQUEAR_VENDA, '')||'->'||COALESCE(NEW.BLOQUEAR_VENDA, '');
    END

    IF (OLD.TIPO_ESTOQUE IS DISTINCT FROM NEW.TIPO_ESTOQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO EST:'||COALESCE(OLD.TIPO_ESTOQUE, '')||'->'||COALESCE(NEW.TIPO_ESTOQUE, '');
    END

    IF (OLD.TIPO_ESTOQUE IS DISTINCT FROM NEW.TIPO_ESTOQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' IMP. COMPROV. TROCA:'||COALESCE(OLD.TIPO_ESTOQUE, '')||'->'||COALESCE(NEW.TIPO_ESTOQUE, '');
    END    

    IF (OLD.CFOP_CODIGO_BRINDE IS DISTINCT FROM NEW.CFOP_CODIGO_BRINDE) THEN
    BEGIN
        HISTORICO = HISTORICO||' CFOP SA??DA:'||OLD.CFOP_CODIGO_BRINDE||'->'||NEW.CFOP_CODIGO_BRINDE;
    END

    IF (OLD.OPERACAO_CODIGO_BRINDE IS DISTINCT FROM NEW.OPERACAO_CODIGO_BRINDE) THEN
    BEGIN
        HISTORICO = HISTORICO||' OPER. SAÍDA:'||OLD.OPERACAO_CODIGO_BRINDE||'->'||NEW.OPERACAO_CODIGO_BRINDE;
    END

    IF (OLD.EXIGIR_VENDEDOR IS DISTINCT FROM NEW.EXIGIR_VENDEDOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' EXIGE VEND:'||OLD.EXIGIR_VENDEDOR||'->'||NEW.EXIGIR_VENDEDOR;
    END

    IF (OLD.HABILITA_BRINDE_CF_NFC IS DISTINCT FROM NEW.HABILITA_BRINDE_CF_NFC) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB. BRINDE CFE/NFCE:'||OLD.HABILITA_BRINDE_CF_NFC||'->'||NEW.HABILITA_BRINDE_CF_NFC;
    END

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

SET TERM ; ^	