SET TERM ^ ;

CREATE OR ALTER trigger ttbpagamento_forma_b01i for tbpagamento_forma
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';
    
    IF (NEW.CODIGO IS NULL) THEN
    BEGIN
        NEW.CODIGO = GEN_ID(GTBPAGAMENTO_FORMA, 1);
    END

    IF (NEW.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' REGISTRO INCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPAGAMENTO_FORMA', NEW.CODIGO, HISTORICO);
    END
END
^

SET TERM ; ^

/********************************************************************/
/********************************************************************/

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

SET TERM ; ^

/********************************************************************/
/********************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbpagamento_forma_b01d for tbpagamento_forma
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' REGISTRO EXCLUIDO';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBPAGAMENTO_FORMA', OLD.CODIGO, HISTORICO);
    END
END
^

SET TERM ; ^

/********************************************************************/
/********************************************************************/
/********************************************************************/
/********************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbcliente_pag_form_b02i for tbcliente_pagamento_forma
active before insert position 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE NEW_CLIENTE VARCHAR(500);
DECLARE VARIABLE NEW_GRUPO_CLIENTE VARCHAR(500);
DECLARE VARIABLE NEW_FORM_PAG VARCHAR(500);
BEGIN

    HISTORICO = '';

    NEW_CLIENTE         = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 6, '0')||' - '||A.NOMEFANTASIA FROM TBEMPRESA A            WHERE A.HABILITA_CLIENTE = '1'  AND A.CODIGO = NEW.CLIENTE_ID), '');
    NEW_GRUPO_CLIENTE   = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBEMPRESA_GRUPO B      WHERE B.TIPO = 'C'              AND B.ID = NEW.GRUPO_CLIENTE_ID), '');
    NEW_FORM_PAG        = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBPAGAMENTO_FORMA C    WHERE C.CODIGO = NEW.PAGAMENTO_FORMA_ID), '');

    IF (NEW.ID > 0) THEN
    BEGIN

        IF (NEW.CLIENTE_ID > 0 AND NEW.GRUPO_CLIENTE_ID = 0 AND NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'FORMA DE PAGAMENTO: '||NEW_FORM_PAG||' INCLUIDA PARA O CLIENTE: '||NEW_CLIENTE;
        END ELSE
        IF (NEW.CLIENTE_ID = 0 AND NEW.GRUPO_CLIENTE_ID > 0 AND NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'FORMA DE PAGAMENTO: '||NEW_FORM_PAG||' INCLUIDA PARA O GRUPO DE CLIENTES: '||NEW_GRUPO_CLIENTE;
        END ELSE
        IF (NEW.CLIENTE_ID = 0 AND NEW.GRUPO_CLIENTE_ID = 0 AND NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'FORMA DE PAGAMENTO: '||NEW_FORM_PAG||' INCLUIDA PARA TODOS OS CLIENTES';
        END

    END

    IF (HISTORICO <> '') THEN
    BEGIN

        IF (NEW.CLIENTE_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBEMPRESA', NEW.CLIENTE_ID, HISTORICO);
        END

        IF (NEW.GRUPO_CLIENTE_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBEMPRESA_GRUPO', NEW.GRUPO_CLIENTE_ID, HISTORICO);
        END

        IF (NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBPAGAMENTO_FORMA', NEW.PAGAMENTO_FORMA_ID, HISTORICO);
        END

    END
END
^

SET TERM ; ^

/********************************************************************/
/********************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbcliente_pag_form_b01u for tbcliente_pagamento_forma
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);

DECLARE VARIABLE OLD_CLIENTE VARCHAR(500);
DECLARE VARIABLE NEW_CLIENTE VARCHAR(500);
DECLARE VARIABLE OLD_GRUPO_CLIENTE VARCHAR(500);
DECLARE VARIABLE NEW_GRUPO_CLIENTE VARCHAR(500);
DECLARE VARIABLE OLD_FORM_PAG VARCHAR(500);
DECLARE VARIABLE NEW_FORM_PAG VARCHAR(500);
BEGIN
    
    HISTORICO = '';

    OLD_CLIENTE         = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 6, '0')||' - '||A.NOMEFANTASIA FROM TBEMPRESA A            WHERE A.HABILITA_CLIENTE = '1'  AND A.CODIGO = OLD.CLIENTE_ID), '');
    NEW_CLIENTE         = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 6, '0')||' - '||A.NOMEFANTASIA FROM TBEMPRESA A            WHERE A.HABILITA_CLIENTE = '1'  AND A.CODIGO = NEW.CLIENTE_ID), '');
    OLD_GRUPO_CLIENTE   = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBEMPRESA_GRUPO B      WHERE B.TIPO = 'C'              AND B.ID = OLD.GRUPO_CLIENTE_ID), '');
    NEW_GRUPO_CLIENTE   = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBEMPRESA_GRUPO B      WHERE B.TIPO = 'C'              AND B.ID = NEW.GRUPO_CLIENTE_ID), '');
    OLD_FORM_PAG        = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBPAGAMENTO_FORMA C    WHERE C.CODIGO = OLD.PAGAMENTO_FORMA_ID), '');
    NEW_FORM_PAG        = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBPAGAMENTO_FORMA C    WHERE C.CODIGO = NEW.PAGAMENTO_FORMA_ID), '');

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

    IF (OLD.GRUPO_CLIENTE_ID IS DISTINCT FROM NEW.GRUPO_CLIENTE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' GRUP.CLIENTE:'||OLD_GRUPO_CLIENTE||'->'||NEW_GRUPO_CLIENTE;
    END

    IF (OLD.PAGAMENTO_FORMA_ID IS DISTINCT FROM NEW.PAGAMENTO_FORMA_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' FORM.PAGAMENTO:'||OLD_FORM_PAG||'->'||NEW_FORM_PAG;
    END

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

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

    IF (HISTORICO <> '') THEN
    BEGIN

        IF (NEW.CLIENTE_ID > 0 AND NEW.GRUPO_CLIENTE_ID = 0 AND NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = 'FORMA DE PAGAMENTO: '||NEW_FORM_PAG||' DO CLIENTE: '||NEW_CLIENTE||' ALTERADA:'||HISTORICO;
        END ELSE
        IF (NEW.CLIENTE_ID = 0 AND NEW.GRUPO_CLIENTE_ID > 0 AND NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = 'FORMA DE PAGAMENTO: '||NEW_FORM_PAG||' DO GRUPO DE CLIENTES: '||NEW_GRUPO_CLIENTE||' ALTERADA:'||HISTORICO;
        END ELSE
        IF (NEW.CLIENTE_ID = 0 AND NEW.GRUPO_CLIENTE_ID = 0 AND NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = 'FORMA DE PAGAMENTO: '||NEW_FORM_PAG||' DE TODOS OS CLIENTES ALTERADA:'||HISTORICO;
        END


        IF (NEW.CLIENTE_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBEMPRESA', OLD.CLIENTE_ID, HISTORICO);
        END

        IF (NEW.GRUPO_CLIENTE_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBEMPRESA_GRUPO', OLD.GRUPO_CLIENTE_ID, HISTORICO);
        END

        IF (NEW.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBPAGAMENTO_FORMA', OLD.PAGAMENTO_FORMA_ID, HISTORICO);
        END

    END
END
^

SET TERM ; ^

/********************************************************************/
/********************************************************************/

SET TERM ^ ;

CREATE OR ALTER trigger ttbcliente_pag_form_b01d for tbcliente_pagamento_forma
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);

DECLARE VARIABLE OLD_CLIENTE VARCHAR(500);
DECLARE VARIABLE OLD_GRUPO_CLIENTE VARCHAR(500);
DECLARE VARIABLE OLD_FORM_PAG VARCHAR(500);
BEGIN

    HISTORICO = '';

    OLD_CLIENTE         = COALESCE((SELECT FIRST 1 FN_LPAD(A.CODIGO, 6, '0')||' - '||A.NOMEFANTASIA FROM TBEMPRESA A            WHERE A.HABILITA_CLIENTE = '1'  AND A.CODIGO = OLD.CLIENTE_ID), '');
    OLD_GRUPO_CLIENTE   = COALESCE((SELECT FIRST 1 FN_LPAD(B.ID, 4, '0')||' - '||B.DESCRICAO        FROM TBEMPRESA_GRUPO B      WHERE B.TIPO = 'C'              AND B.ID = OLD.GRUPO_CLIENTE_ID), '');
    OLD_FORM_PAG        = COALESCE((SELECT FIRST 1 FN_LPAD(C.CODIGO, 4, '0')||' - '||C.DESCRICAO    FROM TBPAGAMENTO_FORMA C    WHERE C.CODIGO = OLD.PAGAMENTO_FORMA_ID), '');

    IF (OLD.ID > 0) THEN
    BEGIN

        IF (OLD.CLIENTE_ID > 0 AND OLD.GRUPO_CLIENTE_ID = 0 AND OLD.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'FORMA DE PAGAMENTO: '||OLD_FORM_PAG||' EXCLUIDA PARA O CLIENTE: '||OLD_CLIENTE;
        END ELSE
        IF (OLD.CLIENTE_ID = 0 AND OLD.GRUPO_CLIENTE_ID > 0 AND OLD.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'FORMA DE PAGAMENTO: '||OLD_FORM_PAG||' EXCLUIDA PARA O GRUPO DE CLIENTES: '||OLD_GRUPO_CLIENTE;
        END ELSE
        IF (OLD.CLIENTE_ID = 0 AND OLD.GRUPO_CLIENTE_ID = 0 AND OLD.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            HISTORICO = HISTORICO||'FORMA DE PAGAMENTO: '||OLD_FORM_PAG||' EXCLUIDA PARA TODOS OS CLIENTES';
        END

    END

    IF (HISTORICO <> '') THEN
    BEGIN

        IF (OLD.CLIENTE_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBEMPRESA', OLD.CLIENTE_ID, HISTORICO);
        END

        IF (OLD.GRUPO_CLIENTE_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBEMPRESA_GRUPO', OLD.GRUPO_CLIENTE_ID, HISTORICO);
        END

        IF (OLD.PAGAMENTO_FORMA_ID > 0) THEN
        BEGIN
            EXECUTE PROCEDURE SPI_HISTORICO('TBPAGAMENTO_FORMA', OLD.PAGAMENTO_FORMA_ID, HISTORICO);
        END

    END
END
^

SET TERM ; ^

