Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Saudações

Desculpe, eu não encontrei nada sobre isso, de modos que aqui vai minha dúvida. Ela se relaciona a dois bancos diferentes. 

Sicredi--> Quando, usando a seguinte linha de comando --> retornomotivo.asstring:=ACBrBoleto1.ListadeBoletos.Objects.DescricaoMotivoRejeicaoComando.Text; Ele me traz os dados corretos.  Quando usando a linha  de comando -->  retornodatabaixa.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataBaixa; Ele me traz 30/12/1899. Mesmo quando confirmado no banco que existe a data da baixa e que ela ocorreu em 05/12/2015.

Mudo para o Sicoob--> Mesmas linhas acima e o retorno em ambas é vazio.

Configurei tudo corretamente, até onde sei, mas não encontrei o motivo disso. Alguém tem alguma idéia??

Claudiomir

Postado

Saudações Denerbuzato

Para a data da baixa, funcionou. 

Ainda fico tentando pegar os motivos do lançamento. Será que cada banco trabalho nisso de forma diferente??

Claudiomir

Postado

Saudações

Retorno do Sicredi ( e talvez demais bancos)

Observem a imagem abaixoarquivoretorno.thumb.png.7680891f4b3bf7c

Caso eu não esteja totalmente maluco, sempre que o eu busco o arquivo de retorno ele me traz no campo Motivo um código que vem antes do texto. Na linha marcada como "1" ele me traz: "B3-Tarifa de registro de entrada do titulo". Já na linha marcada como "2" ele me traz: "H5-Recebimento de liquidação fora da rede".

Por favor, considerem que sou bem leigo nisso, por isso pergunto:

1 - Todos os arquivos de retorno de todos os bancos vem assim?

2 - Devo gerar um teste em cada motivo recebido para descobrir o que é a operação ou tem outro jeito mais simples?

3 - A codificação "B3" é válida somente para o Sicredi ou é válida para todos os bancos? Assim como a codificação 00?

4 - Se não é válida para outros bancos, como faço para identificar o que está acontecendo com os arquivos de retorno de outros bancos, tipo Sicoob ou mesmo Itaú?

5 - Tendo como base a imagem acima, como faço para identificar corretamente os valores de cada operação? 

6 - Existe uma tabela de codificações que está em algum lugar dentro do AcbrBoleto para "cobrir" todos os bancos? Ou se é individual para cada banco, como eu determino seu uso para o banco? De acordo com o número do banco?

Desculpem-me, eu estou meio que me repetindo, mas estou bem perdido.

Abraços

Claudiomir

  • Administradores
Postado
1 hora atrás, Claudiomir disse:

Saudações

Retorno do Sicredi ( e talvez demais bancos)

Observem a imagem abaixoarquivoretorno.thumb.png.7680891f4b3bf7c

Caso eu não esteja totalmente maluco, sempre que o eu busco o arquivo de retorno ele me traz no campo Motivo um código que vem antes do texto. Na linha marcada como "1" ele me traz: "B3-Tarifa de registro de entrada do titulo". Já na linha marcada como "2" ele me traz: "H5-Recebimento de liquidação fora da rede".

Por favor, considerem que sou bem leigo nisso, por isso pergunto:

1 - Todos os arquivos de retorno de todos os bancos vem assim?

Cada banco tem seu proprio layout de arquivo retorno

2 - Devo gerar um teste em cada motivo recebido para descobrir o que é a operação ou tem outro jeito mais simples?

A documentação deve fornecer as informações que você precisa

3 - A codificação "B3" é válida somente para o Sicredi ou é válida para todos os bancos? Assim como a codificação 00?

Idem resposta 1

4 - Se não é válida para outros bancos, como faço para identificar o que está acontecendo com os arquivos de retorno de outros bancos, tipo Sicoob ou mesmo Itaú?

Você pode utilizar o TipoOcorrencia

5 - Tendo como base a imagem acima, como faço para identificar corretamente os valores de cada operação? 

6 - Existe uma tabela de codificações que está em algum lugar dentro do AcbrBoleto para "cobrir" todos os bancos? Ou se é individual para cada banco, como eu determino seu uso para o banco? De acordo com o número do banco?

Desculpem-me, eu estou meio que me repetindo, mas estou bem perdido.

Abraços

Claudiomir

 

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 4 semanas depois ...
Postado
Em 11/12/2015 at 19:03, Juliana Tamizou disse:

 

Claudiomir, você conseguiu desenvolver a parte de retorno blz? teria um exemplo ai pra nós? pois tô começando a fazer a parte de retorno de boletos, fico agradecido

Que darei eu ao SENHOR, por todos os benefícios que me tem feito? 
Salmos 116:12

Postado

Saudações

Baseado no desenho acima como exemplo, temos o botão buscar Arquivo.

procedure Tfretcobranca.blocalizararquivoClick(Sender: TObject);
var
  i: integer;
  Titulo: TACBrTitulo;

begin
  retorno.Open;
  retorno.EmptyTable;
  dire := extractfilepath(application.ExeName) + 'retorno';
  pdire.Caption := dire;

  fprinci.ACBrBoleto1.DirArqRetorno := dire;

  OpenDialog.InitialDir := dire;

  if OpenDialog.Execute then
  begin
    narq := OpenDialog.FileName;

    if pos('.zip', narq) > 0 then
    begin
      { Zip.BaseDir := dire;
        Zip.FileName := narq;
        Zip.OpenArchive;
        Zip.ExtractFiles('*.*');
        Zip.CloseArchive; }
      narq := extractfilename(narq);
      narq := dire + '\R' + copy(narq, 1, pos('_', narq) - 1) + '.' + copy(narq, pos('_', narq) + 1, 4);
    end;
    Edit1.Text := narq;
    fprinci.ACBrBoleto1.NomeArqRetorno := extractfilename(narq);
    fprinci.ACBrBoleto1.LerRetorno;

    if fileexists(pdire.Caption + '\' + fprinci.ACBrBoleto1.NomeArqRetorno) then
    begin
      BitBtn4.Enabled := true;
      BitBtn5.Enabled := true;

      fprinci.ACBrBoleto1.NomeArqRetorno := extractfilename(narq);
      fprinci.ACBrBoleto1.LerRetorno;
      retorno.Open;
      ProgressBar1.Visible := true;
      ProgressBar1.Max := fprinci.ACBrBoleto1.ListadeBoletos.Count;
      for i := 0 to fprinci.ACBrBoleto1.ListadeBoletos.Count - 1 do
      begin
        Titulo := fprinci.ACBrBoleto1.ListadeBoletos.Objects;

        // precisa verificar qual a quantidade de "nosso numero" dependendo do banco para a pesquisa abaixo.
        creachadados.Close;
        creachadados.Params[0].AsString := copy(fprinci.ACBrBoleto1.ListadeBoletos.Objects.NossoNumero, 1, 8);
        creachadados.Open;
        if creachadados.RecordCount > 0 then
        begin
          retorno.Append;
          retornoNumeroDoc.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects.NossoNumero;
          retornoCliente.AsString := creachadadosclinome.AsString;
          retornoCrechave.AsInteger := creachadadoscrechave.AsInteger;
          retornoData.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataOcorrencia;
//          retornoocorrenciaoriginal.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo;
          retornoocorrenciaoriginaldescricao.AsString:=fprinci.ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Descricao;
          retornoMotivo.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DescricaoMotivoRejeicaoComando.Text;
          retornoDataEmitido.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataProcessamento;
          retornoNumBoleto.AsString := creachadadoscrenumero.AsString;
          retornohisto.AsString := creachadadoscrehistorico.AsString;
          retornodataemissao.AsDateTime := creachadadoscreemissao.AsDateTime;
          retornovalor.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorDocumento;
          retornomulta.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorOutrasDespesas;
          retornojuros.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorMoraJuros;
          retornovalorbaixado.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido;
          retornodatabaixa.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataCredito;
          retornovalortarifa.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorDespesaCobranca;

          retorno.Post;
        end;
        ProgressBar1.Position := ProgressBar1.Position + 1;
        ProgressBar1.Refresh;
      end;
    end;
  end;
end;

 

Postado
17 horas atrás, Claudiomir disse:

Saudações

Baseado no desenho acima como exemplo, temos o botão buscar Arquivo.

procedure Tfretcobranca.blocalizararquivoClick(Sender: TObject);
var
  i: integer;
  Titulo: TACBrTitulo;

begin
  retorno.Open;
  retorno.EmptyTable;
  dire := extractfilepath(application.ExeName) + 'retorno';
  pdire.Caption := dire;

  fprinci.ACBrBoleto1.DirArqRetorno := dire;

  OpenDialog.InitialDir := dire;

  if OpenDialog.Execute then
  begin
    narq := OpenDialog.FileName;

    if pos('.zip', narq) > 0 then
    begin
      { Zip.BaseDir := dire;
        Zip.FileName := narq;
        Zip.OpenArchive;
        Zip.ExtractFiles('*.*');
        Zip.CloseArchive; }
      narq := extractfilename(narq);
      narq := dire + '\R' + copy(narq, 1, pos('_', narq) - 1) + '.' + copy(narq, pos('_', narq) + 1, 4);
    end;
    Edit1.Text := narq;
    fprinci.ACBrBoleto1.NomeArqRetorno := extractfilename(narq);
    fprinci.ACBrBoleto1.LerRetorno;

    if fileexists(pdire.Caption + '\' + fprinci.ACBrBoleto1.NomeArqRetorno) then
    begin
      BitBtn4.Enabled := true;
      BitBtn5.Enabled := true;

      fprinci.ACBrBoleto1.NomeArqRetorno := extractfilename(narq);
      fprinci.ACBrBoleto1.LerRetorno;
      retorno.Open;
      ProgressBar1.Visible := true;
      ProgressBar1.Max := fprinci.ACBrBoleto1.ListadeBoletos.Count;
      for i := 0 to fprinci.ACBrBoleto1.ListadeBoletos.Count - 1 do
      begin
        Titulo := fprinci.ACBrBoleto1.ListadeBoletos.Objects;

        // precisa verificar qual a quantidade de "nosso numero" dependendo do banco para a pesquisa abaixo.
        creachadados.Close;
        creachadados.Params[0].AsString := copy(fprinci.ACBrBoleto1.ListadeBoletos.Objects.NossoNumero, 1, 8);
        creachadados.Open;
        if creachadados.RecordCount > 0 then
        begin
          retorno.Append;
          retornoNumeroDoc.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects.NossoNumero;
          retornoCliente.AsString := creachadadosclinome.AsString;
          retornoCrechave.AsInteger := creachadadoscrechave.AsInteger;
          retornoData.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataOcorrencia;
//          retornoocorrenciaoriginal.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo;
          retornoocorrenciaoriginaldescricao.AsString:=fprinci.ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Descricao;
          retornoMotivo.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DescricaoMotivoRejeicaoComando.Text;
          retornoDataEmitido.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataProcessamento;
          retornoNumBoleto.AsString := creachadadoscrenumero.AsString;
          retornohisto.AsString := creachadadoscrehistorico.AsString;
          retornodataemissao.AsDateTime := creachadadoscreemissao.AsDateTime;
          retornovalor.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorDocumento;
          retornomulta.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorOutrasDespesas;
          retornojuros.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorMoraJuros;
          retornovalorbaixado.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido;
          retornodatabaixa.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataCredito;
          retornovalortarifa.AsFloat := fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorDespesaCobranca;

          retorno.Post;
        end;
        ProgressBar1.Position := ProgressBar1.Position + 1;
        ProgressBar1.Refresh;
      end;
    end;
  end;
end;

 

Você Guarda todo esse retorno no banco de dados ? e como deve ser tratado se o mesmo retorno vou lido? desculpas essas perguntas mais como tô começando agora fica muitas duvidas, você todas as tags do retorno do acbr cedente,sacado,linha de geração,tipo de impressão,percentual de multa,valor recebido, instrução 1.2.3 qtde parcelas e essas coisas a mais ?

Que darei eu ao SENHOR, por todos os benefícios que me tem feito? 
Salmos 116:12

Postado

Saudações

Não. Não guardo. Tabela Retorno é temporária. Basicamente é o carro chefe que me diz qual parcela foi trabalhada (paga ou não) Se foi paga(Com juros, multa, etc) que eu uso para localizar as parcelas no meu banco de dados e sobre elas sim, eu trabalho(baixo no contas a receber, dou entrada na conta banco,etc,etc,etc).

A Tabela Retorno simplesmente é uma relação das parcelas que o banco movimentou. 

Coisa que eu ainda não consegui implementar direito é os motivos que o banco trabalhou. (tipo código 'xx' baixa automática, 'xy' pago fora da agencia, etc).

Se alguém tiver e quiser compartilhar...

Sempre as ordens,

Claudiomir.

 

  • 1 mês depois ...
Postado

Boa tarde, Claudiomir

No retorno se campo : fprinci.ACBrBoleto1.ListadeBoletos.Objects.ValorRecebido for zero (0) isso indica que o boleto não foi pago ?
***TENHO um arquivo de retorno do bradesco que 200 linhas 10 somente esta com valorrecebido > 0 .

Obrigado

  • 4 meses depois ...
Postado

Cledersoncaruaru

Você conseguiu implementar ??

Em 04/01/2016 at 23:57, cledersoncaruaru disse:

Claudiomir, você conseguiu desenvolver a parte de retorno blz? teria um exemplo ai pra nós? pois tô começando a fazer a parte de retorno de boletos, fico agradecido

 

Em 11/12/2015 at 18:03, Juliana Tamizou disse:

4 - Se não é válida para outros bancos, como faço para identificar o que está acontecendo com os arquivos de retorno de outros bancos, tipo Sicoob ou mesmo Itaú?

Você pode utilizar o TipoOcorrencia

Juliana

Desculpe minha burrice, mas tem algo aqui que eu não entendi.

Como eu faço isso funcionar? 

Tentei 

          retornoData.AsDateTime := fprinci.ACBrBoleto1.ListadeBoletos.Objects.DataOcorrencia;
          retornoocorrenciaoriginal.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo;
          retornoocorrenciaoriginaldescricao.AsString := fprinci.ACBrBoleto1.ListadeBoletos.Objects
            .OcorrenciaOriginal.Descricao;
 

Mas não consigo dados algum. Devo estar fazendo uma estupidez muito grande, mas realmente não sei o que é.

Qualquer idéia ajuda.

Claudiomir

 

  • Administradores
Postado

Bom dia.

Tente  fprinci.ACBrBoleto1.ListadeBoletos.Objects.OcorrenciaOriginal.Tipo

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 4 semanas depois ...
  • Moderadores
Postado

Estou tendo problemas com retorno do SICOOB. Todas as ocorrencias, de pagamento ou simplesmente de entrada do titulo, estão vindo com o valor recebido = valor do documento (acredido que quando é apenas uma ocorrencia de entrada de titulo ou outra coisa que não seja liquidação esse valor recebido deveria estar zerado). Boletos recebidos pela internet ou através de outros bancos não estão sendo baixados automaticamente pela agencia porque o banco alega inconsistencia de dados com o arquivo remessa. Mas a pergunta é: porque ocorre o banco baixa documentos pagos pelo cliente na propria agencia ou através de lotérica?

  • Curtir 1
  • Administradores
Postado

Boa tarde Graça.

Qual é a inconsistência alegada pelo banco?

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Moderadores
Postado
Em 09/08/2016 at 16:02, Juliana Tamizou disse:

Boa tarde Graça.

Qual é a inconsistência alegada pelo banco?

Att.

Juliana, desculpe o atrazo da resposta. Nos arquivos de retorno não vem nenhuma ocorrência de inconsistência. Se o cliente paga sem ser pela internet ou por algum banco, eles dizem não encontrar o documento para baixa. Se o cliente paga no proprio Sicoob, o documento existe. Quando a empresa vai cobrar do cliente por achar que o documento está em atrazo, o cliente mostra o comprovante pago, mas no Sicoob a baixa não foi realizada porque o documento não foi localizado nas entradas. No meu entendimento, é erro do banco ou existe algo diferente nas transações de pagamento via internet ou outros bancos. Mas eles alegam que o erro é no boleto impresso ou na arquivo de remessa. Até agora não me apresentaram um documento físico contendo a rejeição. Peguei todos os retornos bancários recebidos e neles só existe ocorrência de entrada de titulo e liquidação (e os boletos pagos e não foram baixados não aparecem nesses retornos). Saberia me dizer se na remessa consta algo que impeça o documento de ser baixado se for recebido por outros órgãos?

Postado

Graça

Aqui o erro ocorria por que mudou o numero da conta e Agência. Nesse caso, nos boletos emitidos antes da mudança ele não estava localizando. 

Abraços

Claudiomir

  • 1 ano depois...
Postado

Boa tarde!

Estou com um problema no arquivo retorno.

1 - Eu gero o boleto bancário

2 - Gero o arquivo remessa

3 - Anexo o arquivo remessa no banco

4 - Os boletos pago cai na conta (tanto os emitidos pelo sistema quando pelo sit do banco)

5 - No Arquivo retorno so vem os boletos emitidos pelo proprio sit do banco

Alquem ja passo por isso?

  • Este tópico foi criado há 2544 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.