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

    HISTORICO = '';

    IF(NEW.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OCORRENCIA ID:'||NEW.CONTROLE||',DESC:'||NEW.OBSERVACAO||' INCLUÍDA.';
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', NEW.NFS_PARCELAMENTO_CONTROLE, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBNFS_PARC_OCORRENCIA_B02U FOR TBNFS_PARCELAMENTO_OCORRENCIA
ACTIVE BEFORE UPDATE POSITION 9
AS
declare variable HISTORICO VARCHAR(8000);
begin
    HISTORICO = '';

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

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

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

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

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

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

    IF(HISTORICO <> '') THEN
    BEGIN
       HISTORICO = 'OCORRENCIA ID:'||NEW.CONTROLE||',DESC:'||OLD.OBSERVACAO||' ALTERADA. '||HISTORICO;
       EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', NEW.NFS_PARCELAMENTO_CONTROLE, FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE OR ALTER TRIGGER TTBNFS_PARC_OCORRENCIA_B02D FOR TBNFS_PARCELAMENTO_OCORRENCIA
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'OCORRENCIA ID:'||OLD.CONTROLE||',DESC:'||OLD.OBSERVACAO||' EXCLUÍDA.';
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', OLD.NFS_PARCELAMENTO_CONTROLE, HISTORICO);
    END
END;

CREATE TRIGGER TTBNFS_PARCELAMENTO_B04I FOR TBNFS_PARCELAMENTO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin
HISTORICO = '';
  IF(NEW.CONTROLE > 0)THEN
  BEGIN
     HISTORICO = 'PARC.ID:'||NEW.CONTROLE||' INCLUIDO.';
  END
  IF(HISTORICO <> '') THEN
  BEGIN
     EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', NEW.CONTROLE, FN_ELIPSES(HISTORICO,500));
  END
end;

CREATE OR ALTER TRIGGER TTBNFS_PARCELAMENTO_B9U FOR TBNFS_PARCELAMENTO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(8000);
begin

    HISTORICO = '';
    if (New.Controle > 0) then
       Begin
    
           if (OLD.DATA_VENCIMENTO <> NEW.DATA_VENCIMENTO) THEN
               BEGIN
               HISTORICO = HISTORICO||' DT.VCTO:'||OLD.DATA_VENCIMENTO||'->'||NEW.DATA_VENCIMENTO;
               END
           IF (OLD.VALOR <> NEW.VALOR) THEN
               BEGIN
               HISTORICO = HISTORICO||' VALOR:'||OLD.VALOR||'->'||NEW.VALOR;
               END
           IF (OLD.VALOR_DESCONTO <> NEW.VALOR_DESCONTO) THEN
               BEGIN
               HISTORICO = HISTORICO||' VR.DESC:'||OLD.VALOR_DESCONTO||'->'||NEW.VALOR_DESCONTO;
               END
           IF (OLD.CONTA_RECEBER_OPERACAO <> NEW.CONTA_RECEBER_OPERACAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' OPER:'||OLD.CONTA_RECEBER_OPERACAO||'->'||NEW.CONTA_RECEBER_OPERACAO;
               END
           IF (OLD.CONTA_RECEBER_BANCO <> NEW.CONTA_RECEBER_BANCO) THEN
               BEGIN
               HISTORICO = HISTORICO||' BCO:'||OLD.CONTA_RECEBER_BANCO||'->'||NEW.CONTA_RECEBER_BANCO;
               END
           IF (OLD.CONTA_RECEBER_MODALIDADE <> NEW.CONTA_RECEBER_MODALIDADE) THEN
               BEGIN
               HISTORICO = HISTORICO||' MOD:'||OLD.CONTA_RECEBER_MODALIDADE||'->'||NEW.CONTA_RECEBER_MODALIDADE;
               END
           IF (OLD.CONTA_RECEBER_POSICAO <> NEW.CONTA_RECEBER_POSICAO) THEN
               BEGIN
               HISTORICO = HISTORICO||' POS:'||OLD.CONTA_RECEBER_POSICAO||'->'||NEW.CONTA_RECEBER_POSICAO;
               END
           IF (OLD.CONTA_RECEBER_COBRANCA <> NEW.CONTA_RECEBER_COBRANCA) THEN
               BEGIN
               HISTORICO = HISTORICO||' COB:'||OLD.CONTA_RECEBER_COBRANCA||'->'||NEW.CONTA_RECEBER_COBRANCA;
               END

           IF (OLD.PAGAMENTO_FORMA <> NEW.PAGAMENTO_FORMA) THEN
               BEGIN
               HISTORICO = HISTORICO||' PG.FORMA:'||OLD.PAGAMENTO_FORMA||'->'||NEW.PAGAMENTO_FORMA;
               END
           IF (OLD.CLASSIFICACAO_CONTABIL <> NEW.CLASSIFICACAO_CONTABIL) THEN
               BEGIN
               HISTORICO = HISTORICO||' CLASS.FIN:'||OLD.CLASSIFICACAO_CONTABIL||'->'||NEW.CLASSIFICACAO_CONTABIL;
               END
           IF (OLD.CCUSTO <> NEW.CCUSTO) THEN
               BEGIN
               HISTORICO = HISTORICO||' C.CUSTO:'||OLD.CCUSTO||'->'||NEW.CCUSTO;
               END
           IF (OLD.ACEITE <> NEW.ACEITE) THEN
               BEGIN
               HISTORICO = HISTORICO||' ACEITE:'||OLD.ACEITE||'->'||NEW.ACEITE;
               END
           IF (OLD.VIA_DUPLICATA <> NEW.VIA_DUPLICATA) THEN
               BEGIN
               HISTORICO = HISTORICO||' VIA DUP:'||OLD.VIA_DUPLICATA||'->'||NEW.VIA_DUPLICATA;
               END

          IF (OLD.REMESSA_NUMERO_BANCO <> NEW.REMESSA_NUMERO_BANCO) THEN
               BEGIN
               HISTORICO = HISTORICO||' NR.BCO.COB:'||OLD.REMESSA_NUMERO_BANCO||'->'||NEW.REMESSA_NUMERO_BANCO;
               END
           IF (OLD.REMESSA_ARQUIVO <> NEW.REMESSA_ARQUIVO) THEN
               BEGIN
               HISTORICO = HISTORICO||' ARQ.COB:'||OLD.REMESSA_ARQUIVO||'->'||NEW.REMESSA_ARQUIVO;
               END
           IF (OLD.REMESSA_DATA <> NEW.REMESSA_DATA) THEN
               BEGIN
               HISTORICO = HISTORICO||' DT.COB:'||OLD.REMESSA_DATA||'->'||NEW.REMESSA_DATA;
               END
           IF (OLD.VALOR_SALDO <> NEW.VALOR_SALDO) THEN
               BEGIN
               HISTORICO = HISTORICO||' SALDO:'||OLD.VALOR_SALDO||'->'||NEW.VALOR_SALDO;
               END

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

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

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

       if (HISTORICO <> '') then
           Begin
           HISTORICO = 'PARC.ID:'||NEW.CONTROLE||' ALTERADO. '||HISTORICO;
           INSERT INTO TBHISTORICO
                      (
                      TABELA,
                      TABELA_ID,
                      USUARIO, IP,
                      HISTORICO
                      )
               VALUES(
                      'TBNFS_PARCELAMENTO',
                      Old.CONTROLE,
                      (Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
                      (Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
                      FN_ELIPSES(:Historico,500)
                      );
           End
       End

end;

CREATE TRIGGER TTBNFS_PARCELAMENTO_B05D FOR TBNFS_PARCELAMENTO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin
HISTORICO = '';
  IF(OLD.CONTROLE > 0)THEN
  BEGIN
     HISTORICO = 'PARC.ID:'||OLD.CONTROLE||' EXCLUIDO.';
  END
  IF(HISTORICO <> '') THEN
  BEGIN
     EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', OLD.CONTROLE, FN_ELIPSES(HISTORICO,500));
  END
end;

CREATE TRIGGER TTBNF_DEVOLUCAO_B01I FOR TBNF_DEVOLUCAO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(new.NFS_ID > 0 and new.LANCAMENTO_ID > 0 AND NEW.PARCELAMENTO_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'DEV.NFS.ID:'||NEW.NFS_ID||',LANC.ID:'||NEW.LANCAMENTO_ID||' INCLUIDA.';
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', NEW.PARCELAMENTO_ID, HISTORICO);
    END
END;

CREATE TRIGGER TTBNF_DEVOLUCAO_B01U FOR TBNF_DEVOLUCAO
ACTIVE BEFORE UPDATE POSITION 9
AS
declare variable HISTORICO VARCHAR(8000);
begin
    HISTORICO = '';

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

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

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

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

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

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

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

    IF(HISTORICO <> '' and OLD.NFS_ID > 0 and OLD.LANCAMENTO_ID > 0 AND OLD.PARCELAMENTO_ID > 0) THEN
    BEGIN
       HISTORICO = HISTORICO||'DEV.NFS.ID:'||OLD.NFS_ID||',LANC.ID:'||OLD.LANCAMENTO_ID||' ALTERADA.'||HISTORICO;
       EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', OLD.PARCELAMENTO_ID, FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE TRIGGER TTBNF_DEVOLUCAO_B01D FOR TBNF_DEVOLUCAO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.NFS_ID > 0 and OLD.LANCAMENTO_ID > 0 AND OLD.PARCELAMENTO_ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'DEV.NFS.ID:'||OLD.NFS_ID||',LANC.ID:'||OLD.LANCAMENTO_ID||' EXCLUIDA.';
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBNFS_PARCELAMENTO', OLD.PARCELAMENTO_ID, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABCO_LANC_CLASS_SAL_B02I FOR TBCAIXABANCO_LANC_CLASS_SALDO
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE EMPRESA INTEGER;
DECLARE VARIABLE CCUSTO VARCHAR(10);
DECLARE VARIABLE CCONTABIL VARCHAR(11);
BEGIN

    HISTORICO = '';
    CODIGO    = COALESCE((SELECT FIRST 1 A.CAIXABANCO_CONTROLE FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);
    EMPRESA   = COALESCE((SELECT FIRST 1 A.EMPRESA_ID FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);
    CCUSTO    = COALESCE((SELECT FIRST 1 A.CCUSTO FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);
    CCONTABIL = COALESCE((SELECT FIRST 1 A.CONTA_CONTABIL FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);

    IF(NEW.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'LANC.CLASS.ITEM:'||NEW.LANC_CLASS_ID||', CCUSTO:'||:CCUSTO||', CCONTABIL:'||:CCONTABIL||', CLIENTE:'||NEW.EMPRESA_ID||', VALOR:'||NEW.VALOR||', SALDO:'||NEW.SALDO||' INCLUÍDO.';
    END
    
    IF(HISTORICO <> '' AND CODIGO > 0) THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABCO_LANC_CLASS_SAL_B02D FOR TBCAIXABANCO_LANC_CLASS_SALDO
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE EMPRESA INTEGER;
DECLARE VARIABLE CCUSTO VARCHAR(10);
DECLARE VARIABLE CCONTABIL VARCHAR(11);
BEGIN

    HISTORICO = '';
    CODIGO    = COALESCE((SELECT FIRST 1 A.CAIXABANCO_CONTROLE FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = OLD.LANC_CLASS_ID),0);
    EMPRESA   = COALESCE((SELECT FIRST 1 A.EMPRESA_ID FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = OLD.LANC_CLASS_ID),0);
    CCUSTO    = COALESCE((SELECT FIRST 1 A.CCUSTO FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = OLD.LANC_CLASS_ID),0);
    CCONTABIL = COALESCE((SELECT FIRST 1 A.CONTA_CONTABIL FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = OLD.LANC_CLASS_ID),0);

    IF(OLD.ID > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'LANC.CLASS.ITEM:'||OLD.LANC_CLASS_ID||', CCUSTO:'||:CCUSTO||', CCONTABIL:'||:CCONTABIL||', CLIENTE:'||OLD.EMPRESA_ID||', VALOR:'||OLD.VALOR||', SALDO:'||OLD.SALDO||' EXCLUÍDO.';
    END
    
    IF(HISTORICO <> '' AND CODIGO > 0) THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABCO_LANC_CLASS_SAL_B02U FOR TBCAIXABANCO_LANC_CLASS_SALDO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE EMPRESA INTEGER;
DECLARE VARIABLE CCUSTO VARCHAR(10);
DECLARE VARIABLE CCONTABIL VARCHAR(11);
BEGIN

    HISTORICO = '';
    CODIGO    = COALESCE((SELECT FIRST 1 A.CAIXABANCO_CONTROLE FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);
    EMPRESA   = COALESCE((SELECT FIRST 1 A.EMPRESA_ID FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);
    CCUSTO    = COALESCE((SELECT FIRST 1 A.CCUSTO FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);
    CCONTABIL = COALESCE((SELECT FIRST 1 A.CONTA_CONTABIL FROM TBCAIXABANCO_LANCAMENTO_CLASS A WHERE A.CONTROLE = NEW.LANC_CLASS_ID),0);

    IF(OLD.EMPRESA_ID <> NEW.EMPRESA_ID) THEN
    BEGIN
       HISTORICO = HISTORICO||' CLIENTE:'||OLD.EMPRESA_ID||'->'||NEW.EMPRESA_ID;
    END
    
    IF(OLD.VALOR <> NEW.VALOR) THEN
    BEGIN
       HISTORICO = HISTORICO||' VALOR:'||OLD.VALOR||'->'||NEW.VALOR;
    END
    
    IF(OLD.SALDO <> NEW.SALDO) THEN
    BEGIN
       HISTORICO = HISTORICO||' SALDO:'||OLD.SALDO||'->'||NEW.SALDO;
    END 
    
    IF(OLD.PEDIDO <> NEW.PEDIDO) THEN
    BEGIN
       HISTORICO = HISTORICO||' PEDIDO:'||OLD.PEDIDO||'->'||NEW.PEDIDO;
    END

    IF(HISTORICO <> '' AND CODIGO > 0) THEN
    BEGIN
       HISTORICO = 'LANC.CLASS.ITEM:'||NEW.LANC_CLASS_ID||', CCUSTO:'||:CCUSTO||', CCONTABIL:'||:CCONTABIL||', CLIENTE:'||OLD.EMPRESA_ID||', VALOR:'||OLD.VALOR||', SALDO:'||OLD.SALDO||' ALTERADO.'||HISTORICO;
       EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', CODIGO, HISTORICO);
    END
END;

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

    HISTORICO = '';
    IF(NEW.CONTROLE > 0)THEN
    BEGIN
        HISTORICO = 'LANC.CLASS. ID:'||NEW.CONTROLE||', CLASSIF.FIN:'||NEW.CLASSIFICACAO_CONTABIL||', CCUSTO:'||NEW.CCUSTO||', CCONTABIL:'||NEW.CONTA_CONTABIL||' INCLUÍDA.';
    END

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

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_CLASS_B03U FOR TBCAIXABANCO_LANCAMENTO_CLASS
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.DATA <> OLD.DATA) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA:'||OLD.DATA||'->'||NEW.DATA;
    END

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IF(HISTORICO <> '') THEN
    BEGIN
       HISTORICO = 'LANC.CLASS. ID:'||NEW.CONTROLE||', CLASSIF.FIN:'||NEW.CLASSIFICACAO_CONTABIL||', CCUSTO:'||NEW.CCUSTO||', CCONTABIL:'||NEW.CONTA_CONTABIL||' ALTERADA'||HISTORICO;
       EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', NEW.CAIXABANCO_CONTROLE, FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_LANC_CLASS_B03D FOR TBCAIXABANCO_LANCAMENTO_CLASS
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'LANC.CLASS. ID:'||OLD.CONTROLE||', CLASSIF.FIN:'||OLD.CLASSIFICACAO_CONTABIL||', CCUSTO:'||OLD.CCUSTO||', CCONTABIL:'||OLD.CONTA_CONTABIL||' EXCLUÍDA.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO_LANCAMENTO', OLD.CAIXABANCO_CONTROLE, HISTORICO);
    END

END;