SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANCAMENTO_B03I FOR TBCAIXABANCO_LANCAMENTO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE HISTORICO2 VARCHAR(500);
BEGIN

    HISTORICO  = '';
    HISTORICO2 = '';

    IF(NEW.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'LANC.ID: '||NEW.CONTROLE||', CX/BC:'||NEW.CAIXABANCO_CODIGO||', DT.LANC:'||NEW.DATA_LANCAMENTO||', R$ '||FN_FORMAT_NUMBER2(NEW.VALOR_TOTAL,2)||' INCLUIDO.';
    END

    IF(NEW.DEVOLUCAO_CHEQUE > 0) THEN
    BEGIN
      HISTORICO2 = HISTORICO2||'REGISTRO INCLUIDO COMO LANCAMENTO DE DEVOLUCAO DE CHEQUE.';
    END

    IF (:HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CONTROLE, :HISTORICO);
    END 

    IF (:HISTORICO2 <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CONTROLE, :HISTORICO2);
    END
END^

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANCAMENTO_B03U FOR TBCAIXABANCO_LANCAMENTO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(8000);
BEGIN
    HISTORICO = '';

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

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

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

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

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

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

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

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

    IF(NEW.OBSERVACAO <> OLD.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' OBS:'||FN_ELIPSES(OLD.OBSERVACAO,100)||'->'||FN_ELIPSES(NEW.OBSERVACAO,100);
    END

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

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

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

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

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

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

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

    IF(NEW.MOVCONTABIL_ID <> OLD.MOVCONTABIL_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOV.CONTAB.ID:'||OLD.MOVCONTABIL_ID||'->'||NEW.MOVCONTABIL_ID;
    END

    IF(NEW.MOVCONTMESTRE_ID <> OLD.MOVCONTMESTRE_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||' MOV.MESTRE ID:'||OLD.MOVCONTMESTRE_ID||'->'||NEW.MOVCONTMESTRE_ID;
    END

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

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

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

    IF(HISTORICO <> '') THEN
    BEGIN
       HISTORICO = 'LANC.ID: '||OLD.CONTROLE||', CX/BC:'||OLD.CAIXABANCO_CODIGO||', DT.LANC:'||OLD.DATA_LANCAMENTO||', R$ '||FN_FORMAT_NUMBER2(OLD.VALOR_TOTAL,2)||' ALTERADO. '||:HISTORICO;
       EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CONTROLE, FN_ELIPSES(:HISTORICO,500));
    END
END^

SET TERM ; ^

