SET TERM ^ ;

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

    IF((OLD.DATA_RECEBIMENTO <> NEW.DATA_RECEBIMENTO) 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
        IF(NEW.CHEQUE_SEM_PARCELA > 0)THEN
        BEGIN
            IF((OLD.SITUACAO = 1) OR (OLD.SITUACAO = 4))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - BAIXADO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
            IF((OLD.SITUACAO = 2) OR (OLD.SITUACAO = 5))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - DEVOLVIDO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
        END
        IF(NEW.CHEQUE_SEM_PARCELA = 0)THEN
        BEGIN
            IF((OLD.SITUACAO = 1) OR (OLD.SITUACAO = 4))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - BAIXADO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
            IF((OLD.SITUACAO = 2) OR (OLD.SITUACAO = 5))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - DEVOLVIDO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
            IF(OLD.SITUACAO = 3)THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - QUITADO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
        END
    END

    HISTORICO = '';


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

SET TERM ; ^

ALTER TABLE TBCHEQUE DROP BANCO_CODIGO;

ALTER TABLE TBCHEQUE
    ADD BANCO_ID INTEGER;

alter table TBCHEQUE
alter ID position 1;

alter table TBCHEQUE
alter ESTABELECIMENTO_ID position 2;

alter table TBCHEQUE
alter SITUACAO position 3;

alter table TBCHEQUE
alter DATA_RECEBIMENTO position 4;

alter table TBCHEQUE
alter BANCO_ID position 5;

alter table TBCHEQUE
alter AGENCIA position 6;

alter table TBCHEQUE
alter CONTA position 7;

alter table TBCHEQUE
alter CONTA_DIGITO position 8;

alter table TBCHEQUE
alter NUMERO_CHEQUE position 9;

alter table TBCHEQUE
alter NOME_TITULAR position 10;

alter table TBCHEQUE
alter DATA_CHEQUE position 11;

alter table TBCHEQUE
alter VALOR position 12;

alter table TBCHEQUE
alter OBSERVACAO position 13;

alter table TBCHEQUE
alter CHEQUE_SEM_PARCELA position 14;

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);
BEGIN

    IF((OLD.DATA_RECEBIMENTO <> NEW.DATA_RECEBIMENTO) OR (OLD.BANCO_ID <> NEW.BANCO_ID) 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
        IF(NEW.CHEQUE_SEM_PARCELA > 0)THEN
        BEGIN
            IF((OLD.SITUACAO = 1) OR (OLD.SITUACAO = 4))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - BAIXADO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
            IF((OLD.SITUACAO = 2) OR (OLD.SITUACAO = 5))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - DEVOLVIDO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
        END
        IF(NEW.CHEQUE_SEM_PARCELA = 0)THEN
        BEGIN
            IF((OLD.SITUACAO = 1) OR (OLD.SITUACAO = 4))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - BAIXADO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
            IF((OLD.SITUACAO = 2) OR (OLD.SITUACAO = 5))THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - DEVOLVIDO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
            IF(OLD.SITUACAO = 3)THEN
            BEGIN
                EXCEPTION "..." 'REGISTRO: '||FN_LPAD(OLD.ID, 4, '0')||' COM SITUAÇÃO: '||OLD.SITUACAO||' - QUITADO, ALTERAÇÃO NÃO AUTORIZADA!';
            END
        END
    END

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

    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_ID <> NEW.BANCO_ID)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(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' REGISTRO ALTERADO:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCHEQUE', OLD.ID, FN_ELIPSES(HISTORICO, 500));
    END
END
^

SET TERM ; ^