Ir para conteúdo
  • Cadastre-se

dev botao

Retorno Sicoob Cnab240


Claudiomir
  • Este tópico foi criado há 2224 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

8 horas atrás, Claudiomir disse:

Saudações Dall'ara

Eu, realmente, mas realmente não entendo o conceito de remessa do tipo Y. 

Mas posso te dizer o que eu faço, e como faço. Se isso te ajudar, estou a disposição para retirar as dúvidas do que posso, por que sei que sem ajuda, é difícil.

Vou te exemplificar aqui o que uso para o Sicoob, mas é ajustável para qualquer banco(EU ESPERO).

Quando você uso o AcbrBoleto,LerRetorno, ele vai gerar os dados em um arquivo(stringlist, eu acredito) em tempo de memória. 

Você vai definir o que é o Lançamento( Baixa, aviso, tarifa) no momento em que processar esses dados.

Qualquer banco, segundo a FEBRABAN, tem que seguir alguns padrões(Dificilmente o fazem) então temos algo a partir de onde começar.

Como eu fiz. Dentro da tabela onde armazeno as Contas Correntes Bancárias, criei 3 campos. CódigoTransmissão,CodigoBaixa,CódigoTaxas. E a cada um deles eu atribuo valores.

Códigos para Baixa
06,00,A8,H5,H6,H8,X1,X2,X3,X4,X5,X0,X6,X7,X8,X9,XA,XB
Códigos para Taxas/Tarifas
03,04,08,A9,B1,B2,B3,E1,F5,28
Códigos para Rejeição
01,02,03,04,05,07,08,10,15,16,17,21,22,24,29,31,33,34,36,38,39,40,41,45,46,47,60,A1,A2,A4,A5,A6,B4,B5,B6,B7,B8,B9,C6,C7,D2,F7,F8,F9,G1,G5,G8,G9,H1,L3,L4,J8

De onde vem esses valores? FEBRABAN. Se todos os bancos os seguem? Nééééééé´. Mais ou menos. Vamos nos focar naqueles que os seguem.

Como eu faço:

retornocobranca.png.67de1f08123961d9334ac13c1fd60049.png

 

Na hora de processar o LerRetorno eu uso o código abaixo (VOCÊ VAI PRECISAR ADAPTAR PARA OS SEUS DADOS E MANEIRAS DE PROGRAMAR)

while....

  if retorno.RecordCount > 0 then
  begin
    retorno.first;
    while not retorno.Eof do
    begin
      cre.Locate('crechave', retornoCrechave.AsInteger, []);
      if cre.Locate('crechave', retornoCrechave.AsInteger, []) then
      begin
       // vchvbaixa := retornovalorbaixado.AsFloat;

        // 06,00, A8, H5, H6, H8, X1, X2, X3, X4, X5, X0, X6, X7, X8, X9, XA e XB

        // encontrar a ocorrência de baixa

        if pos(retornoocorrenciaoriginal.AsString, ctaCodigobaixa.AsString) > 0
        then
        begin
          bxc.Append;
          bxcbcxchave.AsInteger := fprinci.RetornaNovoGenerator('bxc',
            'bxcchave');
          bxcTipo.AsString := 'Baixa';
          bxcvlrbx.AsFloat := retornovalorbaixado.AsFloat;
          bxcvlrjuro.AsFloat := retornojuros.AsFloat;
          bxcvlrmulta.AsFloat := retornomulta.AsFloat;
          bxc.Post;
        end;

        if pos(retornoocorrenciaoriginal.AsString, ctaCodigotaxas.AsString) > 0
        then
        begin
          if retornovalortarifa.AsFloat > 0 then
          begin

            bxc.Append;
            bxcbcxchave.AsInteger := fprinci.RetornaNovoGenerator('bxc',
              'bxcchave');
            bxcTipo.AsString := 'Tarifa';
            bxcvlrbx.AsFloat := retornovalorbaixado.AsFloat;
            bxcvlrjuro.AsFloat := retornojuros.AsFloat;
            bxcvlrmulta.AsFloat := retornomulta.AsFloat;
            bxc.Post;
          end;
        end;
      end;
    end;
  end;
 

Por que o arquivo de retorno é um só e ele vem com toda a movimentação do dia, independente se é baixa um uma confirmação qualquer. Neste ponto você deve determinar o que é  o movimento e o que você vai fazer com ele.

Sempre a disposição se precisar,

Claudiomir

 

 

 

Hummm muito obrigado pela ajuda isso me esclareceu algumas questões me ajudou muito então sempre vou receber um único arquivo de retorno dentro dele vou ter as liquidações e as demais tipos de boletos, eu sei do que se trata pelo tipo de movimentação.

 

Na quinta feira vou dar uma olhada mais com calma, hoje e amanha estou focado em um outro projeto, mas ja me ajudou mais do que o google rsrs.

 

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
Em 11/11/2017 at 11:31, Agnaldo Prates disse:

Obrigado pelo arquivo.

A primeira coisa a ser feita é configurar corretamente os dados no componente.
O tamanho da conta do arquivo é 8, informar no componente a conta da seguinte forma: 23582, ou seja, sem os zeros à esquerda, fazer as seguintes mudanças na unit ACBrBancoBancoob.pas
Linha : 89 fpTamanhoConta := 8;
Linha : 470 trocar:

de:
      if ( rConta + rDigitoConta <> OnlyNumber(Cedente.Conta + Cedente.ContaDigito)) then
para:

      if ( OnlyNumber(rConta + rDigitoConta) <> OnlyNumber(Cedente.Conta + Cedente.ContaDigito)) then

 

boleto.png

Onde este demo está disponível?

O demo que está vindo do SVN é diferente¹

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2224 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.