CREATE TRIGGER TTBCAIXABANCO_B03I FOR TBCAIXABANCO
ACTIVE BEFORE INSERT POSITION 9
AS
declare variable historico varchar(500);
BEGIN
  historico = '';
  IF(NEW.CODIGO > 0) then
  BEGIN
    historico = historico||' Reg.incluido';
  END

  IF(HISTORICO <> '') then
  BEGIN
    execute procedure spi_historico('TBCAIXABANCO',NEW.CODIGO,historico);
  END
END;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_B04U FOR TBCAIXABANCO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';
    IF(NEW.NOME <> OLD.NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||'Nome:'||OLD.NOME||'->'||NEW.NOME;
    END            

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

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

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

    IF(NEW.CONTA_CONTABIL_DESC <> OLD.CONTA_CONTABIL_DESC) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cta.Cont.Desc:'||OLD.CONTA_CONTABIL_DESC||'->'||NEW.CONTA_CONTABIL_DESC;
    END 

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

    IF(NEW.HISTORICO_CONTABIL <> OLD.HISTORICO_CONTABIL) THEN
    BEGIN
        HISTORICO = HISTORICO||'Hist.Contabil alterado.';
    END

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

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

    IF(NEW.ARQUIVO_REMESSA <> OLD.ARQUIVO_REMESSA) THEN
    BEGIN
        HISTORICO = HISTORICO||'Arq.Rem. alterado.';
    END  

    IF(NEW.ARQUIVO_RETORNO <> OLD.ARQUIVO_RETORNO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Arq.Ret. alterado.';
    END  

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

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

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

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

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

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

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

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

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

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

    IF(NEW.MENSAGEM1 <> OLD.MENSAGEM1) THEN
    BEGIN
        HISTORICO = HISTORICO||'Mens.1 alterada.';
    END  

    IF(NEW.MENSAGEM2 <> OLD.MENSAGEM2) THEN
    BEGIN
        HISTORICO = HISTORICO||'Mens.2 alterada.';
    END

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

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

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

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

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

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

    IF(NEW.LOCAL_PAGAMENTO <> OLD.LOCAL_PAGAMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Loc.Pgto alterado.';
    END

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

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

    IF(NEW.ESPECIE_DOC_BOLETO <> OLD.ESPECIE_DOC_BOLETO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Esp.Doc.Bol:'||OLD.ESPECIE_DOC_BOLETO||'->'||NEW.ESPECIE_DOC_BOLETO;
    END  

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

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

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

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

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

    IF(HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO',NEW.CODIGO,FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE OR ALTER TRIGGER TTBCAIXABANCO_RETORNO_B02U FOR TBCAIXABANCO_RETORNO
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE BANCO_CODIGO INTEGER;
BEGIN
    HISTORICO = '';
    BANCO_CODIGO = COALESCE((SELECT FIRST 1 A.CODIGO FROM TBCAIXABANCO A WHERE A.BANCO_CODIGO = NEW.BANCO_CODIGO),0);
    IF(NEW.BAIXAR_PARCELA <> OLD.BAIXAR_PARCELA) THEN
    BEGIN
         HISTORICO = HISTORICO||'Baixar Parc:'||OLD.BAIXAR_PARCELA||'->'||NEW.BAIXAR_PARCELA;
    END            

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

    IF(old.CONTA_RECEBER_OPERACAO is null and new.CONTA_RECEBER_OPERACAO is not null
        or old.CONTA_RECEBER_OPERACAO is not null and new.CONTA_RECEBER_OPERACAO is null
        or old.CONTA_RECEBER_OPERACAO <> new.CONTA_RECEBER_OPERACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Oper:'||coalesce(OLD.CONTA_RECEBER_OPERACAO,'')||'->'||coalesce(NEW.CONTA_RECEBER_OPERACAO,'');
    END 

    IF(old.POSICAO_CODIGO is null and new.POSICAO_CODIGO is not null
        or old.POSICAO_CODIGO is not null and new.POSICAO_CODIGO is null
        or old.POSICAO_CODIGO <> new.POSICAO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Pos:'||coalesce(OLD.POSICAO_CODIGO,'')||'->'||coalesce(NEW.POSICAO_CODIGO,'');
    END 

    IF(old.OPERACAO_JUROS is null and new.OPERACAO_JUROS is not null
        or old.OPERACAO_JUROS is not null and new.OPERACAO_JUROS is null
        or old.OPERACAO_JUROS <> new.OPERACAO_JUROS) THEN
    BEGIN
        HISTORICO = HISTORICO||'Op.Jur:'||coalesce(OLD.OPERACAO_JUROS,'')||'->'||coalesce(NEW.OPERACAO_JUROS,'');
    END 

    IF(old.OPERACAO_DESCONTO is null and new.OPERACAO_DESCONTO is not null
        or old.OPERACAO_DESCONTO is not null and new.OPERACAO_DESCONTO is null
        or old.OPERACAO_DESCONTO <> new.OPERACAO_DESCONTO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Op.Des:'||coalesce(OLD.OPERACAO_DESCONTO,'')||'->'||coalesce(NEW.OPERACAO_DESCONTO,'');
    END

    IF(old.OPERACAO_MULTA is null and new.OPERACAO_MULTA is not null
        or old.OPERACAO_MULTA is not null and new.OPERACAO_MULTA is null
        or old.OPERACAO_MULTA <> new.OPERACAO_MULTA) THEN
    BEGIN
        HISTORICO = HISTORICO||'Op.Mul:'||coalesce(OLD.OPERACAO_MULTA,'')||'->'||coalesce(NEW.OPERACAO_MULTA,'');
    END 

    IF(old.OPERACAO_OUTROS is null and new.OPERACAO_OUTROS is not null
        or old.OPERACAO_OUTROS is not null and new.OPERACAO_OUTROS is null
        or old.OPERACAO_OUTROS <> new.OPERACAO_OUTROS) THEN
    BEGIN
        HISTORICO = HISTORICO||'Op.Out:'||coalesce(OLD.OPERACAO_OUTROS,'')||'->'||coalesce(NEW.OPERACAO_OUTROS,'');
    END

    IF(HISTORICO <> '' AND BANCO_CODIGO <> 0) THEN
    BEGIN
        HISTORICO = 'Reg.ret.alterado:'||' Ret.'||NEW.RETORNO_CODIGO||' Ocorr.'||NEW.OCORRENCIA_CODIGO||'->'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBCAIXABANCO',BANCO_CODIGO,FN_ELIPSES(HISTORICO,500));
    END
END;

CREATE TRIGGER TTBCAIXABANCO_B03D FOR TBCAIXABANCO
ACTIVE BEFORE DELETE POSITION 9
AS
declare variable historico varchar(500);
BEGIN
  historico = '';
  IF(OLD.CODIGO > 0 ) then
  BEGIN
       historico = historico||' Reg.excluido';
  END

  IF(HISTORICO <> '') then
  BEGIN
    execute procedure spi_historico('TBCAIXABANCO',OLD.CODIGO,historico);
  END
END;