ALTER TABLE TBCHEQUE
    ADD CHEQUE_SEM_PARCELA CHAR(1) CHARACTER SET UTF8 COLLATE UTF8;

COMMENT ON COLUMN TBCHEQUE.CHEQUE_SEM_PARCELA IS
'0 - CONTÉM PARCELAS;
1 - NÃO CONTÉM PARCELAS;';

SET TERM ^ ;

CREATE OR ALTER trigger ttbcheque_b01u for tbcheque
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(5000);
DECLARE VARIABLE OLD_BANCO VARCHAR(500);
DECLARE VARIABLE NEW_BANCO VARCHAR(500);
DECLARE VARIABLE SITUACAO  VARCHAR(500);
BEGIN

    SITUACAO = COALESCE((IIF(OLD.SITUACAO = 1, 'CHEQUE BAIXADO - TRANSFERENCIA', IIF(OLD.SITUACAO = 2, 'CHEQUE DEVOLVIDO - TRANSFERENCIA', IIF(OLD.SITUACAO = 3, 'PARCELAS BAIXADAS', IIF(OLD.SITUACAO = 4, 'CHEQUE BAIXADO - ANTECIPACAO', IIF(OLD.SITUACAO = 5, 'CHEQUE DEVOLVIDO - ANTECIPACAO', '')))))),'');

    IF((OLD.DATA_RECEBIMENTO <> NEW.DATA_RECEBIMENTO) OR (OLD.BANCO_CODIGO <> NEW.BANCO_CODIGO) OR (OLD.AGENCIA <> NEW.AGENCIA) OR (OLD.CONTA <> NEW.CONTA) OR (OLD.CONTA_DIGITO <> NEW.CONTA_DIGITO) OR (OLD.NUMERO_CHEQUE <> NEW.NUMERO_CHEQUE) OR (OLD.NOME_TITULAR <> NEW.NOME_TITULAR) OR (OLD.DATA_CHEQUE <> NEW.DATA_CHEQUE) OR (OLD.VALOR <> NEW.VALOR))THEN
    BEGIN
        EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||SITUACAO||', ALTERAÇÃO NÃO AUTORIZADA!';
    END

    HISTORICO = '';
    OLD_BANCO = COALESCE((SELECT A.CODIGO||' - '||A.DESCRICAO FROM TBBANCO A WHERE A.CODIGO = OLD.BANCO_CODIGO), '');
    NEW_BANCO = COALESCE((SELECT A.CODIGO||' - '||A.DESCRICAO FROM TBBANCO A WHERE A.CODIGO = NEW.BANCO_CODIGO), '');

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

    IF(OLD.DATA_RECEBIMENTO <> NEW.DATA_RECEBIMENTO)THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.RECEBIMENTO:'||FORMATDATE(OLD.DATA_RECEBIMENTO)||'->'||FORMATDATE(NEW.DATA_RECEBIMENTO);
    END

    IF(OLD.BANCO_CODIGO <> NEW.BANCO_CODIGO)THEN
    BEGIN
        HISTORICO = HISTORICO||' BANCO:'||OLD_BANCO||'->'||NEW_BANCO;
    END

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

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

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

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

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

    IF(OLD.DATA_CHEQUE <> NEW.DATA_CHEQUE)THEN
    BEGIN
        HISTORICO = HISTORICO||' DT.CHEQUE:'||FORMATDATE(OLD.DATA_CHEQUE)||'->'||FORMATDATE(NEW.DATA_CHEQUE);
    END

    IF(OLD.VALOR <> NEW.VALOR)THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR:R$'||CAST(OLD.VALOR AS NUMERIC(15,2))||'->R$'||CAST(NEW.VALOR AS NUMERIC(15,2));
    END

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

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

SET TERM ; ^

