ALTER TABLE TBPAGAMENTO_FORMA
    ADD BLOCO_1601 INTEGER DEFAULT 0 NOT NULL;

COMMENT ON COLUMN TBPAGAMENTO_FORMA.BLOCO_1601 IS
'0 - NAO INFORMAR;
1 - INFORMAR NO FATURAMENTO;
2 - INFORMAR NO RECEBIMENTO;';

CREATE INDEX ITBPAGAMENTO_FORMA_08
ON TBPAGAMENTO_FORMA (BLOCO_1601);

SET TERM ^ ;

CREATE OR ALTER trigger ttbpagamento_forma_b01u for tbpagamento_forma
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
BEGIN

    HISTORICO = '';

    IF (OLD.DESCRICAO IS DISTINCT FROM NEW.DESCRICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DESCRICAO'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
    END

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

    IF (OLD.COBRANCA_ID IS DISTINCT FROM NEW.COBRANCA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' VINC.COB:'||OLD.COBRANCA_ID||'->'||NEW.COBRANCA_ID;
    END

    IF (OLD.CONFIRMACAO_PEDIDO IS DISTINCT FROM NEW.CONFIRMACAO_PEDIDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CONF.PED:'||OLD.CONFIRMACAO_PEDIDO||'->'||NEW.CONFIRMACAO_PEDIDO;
    END

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

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

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

    IF (OLD.HABILITAR_ECOMMERCE IS DISTINCT FROM NEW.HABILITAR_ECOMMERCE) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.ECOMMERCE:'||OLD.HABILITAR_ECOMMERCE||'->'||NEW.HABILITAR_ECOMMERCE;
    END

    IF (OLD.NFE_INDPAG IS DISTINCT FROM NEW.NFE_INDPAG) THEN
    BEGIN
        HISTORICO = HISTORICO||' INDIC.PAG:'||OLD.NFE_INDPAG||'->'||NEW.NFE_INDPAG;
    END

    IF (OLD.NFE_TIPPAG IS DISTINCT FROM NEW.NFE_TIPPAG) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO PAG:'||OLD.NFE_TIPPAG||'->'||NEW.NFE_TIPPAG;
    END

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

    IF (OLD.NFE_PG_INTEGRADO IS DISTINCT FROM NEW.NFE_PG_INTEGRADO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PAG.INTEG.TEF:'||OLD.NFE_PG_INTEGRADO||'->'||NEW.NFE_PG_INTEGRADO;
    END

    IF (OLD.HABILITA_PDV IS DISTINCT FROM NEW.HABILITA_PDV) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.PDV:'||OLD.HABILITA_PDV||'->'||NEW.HABILITA_PDV;
    END

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

    IF (OLD.PDV_SUB_TIPO IS DISTINCT FROM NEW.PDV_SUB_TIPO) THEN
    BEGIN
        HISTORICO = HISTORICO||' SUBTIPO PDV:'||OLD.PDV_SUB_TIPO||'->'||NEW.PDV_SUB_TIPO;
    END

    IF (OLD.OPERACAO_ID IS DISTINCT FROM NEW.OPERACAO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' OP.CRE:'||OLD.OPERACAO_ID||'->'||NEW.OPERACAO_ID;
    END

    IF (OLD.REGISTRAR_RECEBIMENTO_NFS IS DISTINCT FROM NEW.REGISTRAR_RECEBIMENTO_NFS) THEN
    BEGIN
        HISTORICO = HISTORICO||' RE.RECEB.NFS:'||OLD.REGISTRAR_RECEBIMENTO_NFS||'->'||NEW.REGISTRAR_RECEBIMENTO_NFS;
    END

    IF (OLD.HABILITA_API IS DISTINCT FROM NEW.HABILITA_API) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.API:'||OLD.HABILITA_API||'->'||NEW.HABILITA_API;
    END

    IF (OLD.OPERACAO_ID_CPA IS DISTINCT FROM NEW.OPERACAO_ID_CPA) THEN
    BEGIN
        HISTORICO = HISTORICO||' OP.CPA:'||OLD.OPERACAO_ID_CPA||'->'||NEW.OPERACAO_ID_CPA;
    END

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

    IF (OLD.HABILITA_CHEQUE IS DISTINCT FROM NEW.HABILITA_CHEQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.CHEQUE:'||OLD.HABILITA_CHEQUE||'->'||NEW.HABILITA_CHEQUE;
    END

    IF (OLD.CONTA_RECEBER_BAIXA_ID IS DISTINCT FROM NEW.CONTA_RECEBER_BAIXA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' OP.BAIXA:'||OLD.CONTA_RECEBER_BAIXA_ID||'->'||NEW.CONTA_RECEBER_BAIXA_ID;
    END

    IF (OLD.QTD_PARCELAS IS DISTINCT FROM NEW.QTD_PARCELAS) THEN
    BEGIN
        HISTORICO = HISTORICO||' QTD.PARCELAS:'||OLD.QTD_PARCELAS||'->'||NEW.QTD_PARCELAS;
    END

    IF (OLD.DIA_CREDITO IS DISTINCT FROM NEW.DIA_CREDITO) THEN
    BEGIN
        HISTORICO = HISTORICO||' DIA VENC:'||OLD.DIA_CREDITO||'->'||NEW.DIA_CREDITO;
    END

    IF (OLD.PARCELAS_SEM_SALDO IS DISTINCT FROM NEW.PARCELAS_SEM_SALDO) THEN
    BEGIN
        HISTORICO = HISTORICO||' PARC.SEM SALDO:'||OLD.PARCELAS_SEM_SALDO||'->'||NEW.PARCELAS_SEM_SALDO;
    END

    IF (OLD.IMPRESSAO_AUTOMATICA IS DISTINCT FROM NEW.IMPRESSAO_AUTOMATICA) THEN
    BEGIN
        HISTORICO = HISTORICO||' IMP.AUTO:'||OLD.IMPRESSAO_AUTOMATICA||'->'||NEW.IMPRESSAO_AUTOMATICA;
    END

    IF (OLD.FLUXO_CAIXA IS DISTINCT FROM NEW.FLUXO_CAIXA) THEN
    BEGIN
        HISTORICO = HISTORICO||' FLUXO CAIXA:'||OLD.FLUXO_CAIXA||'->'||NEW.FLUXO_CAIXA;
    END

    IF (OLD.HABILITA_APP IS DISTINCT FROM NEW.HABILITA_APP) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.APP:'||OLD.HABILITA_APP||'->'||NEW.HABILITA_APP;
    END

    IF (OLD.GERA_BOLETO_AUTOMATICO IS DISTINCT FROM NEW.GERA_BOLETO_AUTOMATICO) THEN
    BEGIN
        HISTORICO = HISTORICO||' GERAR BOLETO AUT:'||OLD.GERA_BOLETO_AUTOMATICO||'->'||NEW.GERA_BOLETO_AUTOMATICO;
    END

    IF (OLD.TIPO_TEF IS DISTINCT FROM NEW.TIPO_TEF) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO TEF:'||OLD.TIPO_TEF||'->'||NEW.TIPO_TEF;
    END

    IF (OLD.ANALISE_CREDITO IS DISTINCT FROM NEW.ANALISE_CREDITO) THEN
    BEGIN
        HISTORICO = HISTORICO||' ANALISE CREDITO:'||OLD.ANALISE_CREDITO||'->'||NEW.ANALISE_CREDITO;
    END

    IF (OLD.HABILITA_PAINEL_CLIENTE IS DISTINCT FROM NEW.HABILITA_PAINEL_CLIENTE) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.PAI.CLIENTE:'||OLD.HABILITA_PAINEL_CLIENTE||'->'||NEW.HABILITA_PAINEL_CLIENTE;
    END

    IF (OLD.PERCENTUAL_DESCONTO IS DISTINCT FROM NEW.PERCENTUAL_DESCONTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' % DESCONTO:'||OLD.PERCENTUAL_DESCONTO||'->'||NEW.PERCENTUAL_DESCONTO;
    END

    IF (OLD.REQUER_DATA_FECHAMENTO IS DISTINCT FROM NEW.REQUER_DATA_FECHAMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||' REQ.DT.FECHAMENTO:'||OLD.REQUER_DATA_FECHAMENTO||'->'||NEW.REQUER_DATA_FECHAMENTO;
    END

    IF (OLD.HABILITA_TODOS_CLIENTES IS DISTINCT FROM NEW.HABILITA_TODOS_CLIENTES) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.TD.CLIENTES:'||OLD.HABILITA_TODOS_CLIENTES||'->'||NEW.HABILITA_TODOS_CLIENTES;
    END

    IF (OLD.UTILIZA_LIMITE_CREDITO IS DISTINCT FROM NEW.UTILIZA_LIMITE_CREDITO) THEN
    BEGIN
        HISTORICO = HISTORICO||' LIMIT.CRED.CLIENTE:'||OLD.UTILIZA_LIMITE_CREDITO||'->'||NEW.UTILIZA_LIMITE_CREDITO;
    END

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

    IF (OLD.HABILITA_CONDICAO_PAGAMENTO_PDV IS DISTINCT FROM NEW.HABILITA_CONDICAO_PAGAMENTO_PDV) THEN
    BEGIN
        HISTORICO = HISTORICO||' HAB.COND.PAG.PDV:'||OLD.HABILITA_CONDICAO_PAGAMENTO_PDV||'->'||NEW.HABILITA_CONDICAO_PAGAMENTO_PDV;
    END

    IF (OLD.JUROS_DIARIO IS DISTINCT FROM NEW.JUROS_DIARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||' JURUS DIA:'||OLD.JUROS_DIARIO||'->'||NEW.JUROS_DIARIO;
    END

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

    IF (OLD.TIPO_CALCULO_COMISSAO IS DISTINCT FROM NEW.TIPO_CALCULO_COMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' TIPO CALC. COMISSAO:'||OLD.TIPO_CALCULO_COMISSAO||'->'||NEW.TIPO_CALCULO_COMISSAO;
    END

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

    IF (OLD.BLOCO_1601 IS DISTINCT FROM NEW.BLOCO_1601) THEN
    BEGIN
        HISTORICO = HISTORICO||' BLOCO 1601:'||OLD.BLOCO_1601||'->'||NEW.BLOCO_1601;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBPAGAMENTO_FORMA', OLD.CODIGO, FN_ELIPSE(:HISTORICO, 500));
    END
end
^

SET TERM ; ^

UPDATE TBPAGAMENTO_FORMA T SET T.BLOCO_1601 = 1 WHERE T.NFE_TIPPAG = '03';

UPDATE TBPAGAMENTO_FORMA T SET T.BLOCO_1601 = 2 WHERE T.NFE_TIPPAG IN ('04', '15', '16', '17', '18');