Ir para conteúdo
  • Cadastre-se

dev botao

ACBrLIB Boleto: como preencher NSA e layout do arquivo no CNAB 240


Ver Solução Respondido por José M. S. Junior,
  • Este tópico foi criado há 633 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa tarde;

Estamos migrando nosso sistema do Cobre Bem para o ACBr e, ao comparar o arquivo CNAE 240 gerados pela nossa implementação do Cobre Bem versus a nova implementação via ACBr, estamos tendo diferença de vários valores; entre eles, no cabeçalho do arquivo:

  • Campo 19.0: Seqüência (NSA)
  • Campo 20.0: Número da Versão do Layout do Arquivo

Quais campos eu devo informar no INI para preencher estes dois campos?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Adendo outros campos que estão diferentes:

  • 07.1: Nº da Versão do Layout do Lote: 030 no Cobre Bem versus 000 no ACBr;
  • 20.1: Número Remessa/Retorno: 00000169 no Cobre Bem versus 00000001 no ACBr; não parece ter nada a ver com o "Nosso Número", que é "000084279".

Similarmente, estes também não parecem constar da documentação. O que eu precisaria passar nos INIs para preencher estes campos, assim como os campos 19.0 e 20.0?

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

No caso, teria que analisar cada Banco, pois cada um tem seu layout e alguns campos podem variar...

O layout é uma configuração do cedente pode ser realizada alterando as configurações da lib diretamente com o método ConfigGravarValor

os campo são: LayoutVersaoArquivo, LayoutVersaoLote na seção [BoletoBancoConfig]

https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca18.html

 

O número sequencial do é passado no próprio método de geração da remessa como parâmetro

https://acbr.sourceforge.io/ACBrLib/Boleto_GerarRemsessa.html

 

No caso do numero de controle existe o NossoNumero (Banco), NumeroDocumento (Normalmente sequencial que sai no boleto), SeuNumero (Aplicação), Todos com essa nomenclatura no arquivo .ini

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom, fiz umas modificações rápidas no código para testar, e as instruções ajudaram, em parte.

O que deu certo:

  • Passar o parâmetro para a função de geração de remessa realmente fez com que o campo "19.0", "sequência (NSA)", fosse preenchido com o valor passado;
  • O "LayoutVersaoLote" realmente afetou o campo 07.1, "Nº da Versão do Layout do Lote".

O que não deu certo:

  • "LayoutVersaoArquivo" não afetou o "20.0", " Número da Versão do Layout do Arquivo" e, de fato, não aparenta ter afetado nenhuma parte do arquivo gerado;
  • "SeuNumero" afetou "35.3P"; esse campo já estava correto, mas foi bom saber o que ele afeta, para referência futura;
  • "Numero" e "NumeroCorrespondente", que constam no manual, não parecem estar afetando nada no arquivo;
  • O único "NossoNumero" que foi encontrado na documentação é o do título, e ele não está apresentando problemas.

Com isso, ficam faltando os seguintes campos para o arquivo gerado bater com a versão antiga:

  • Campo 20.0: Número da Versão do Layout do Arquivo;
  • 20.1: Número Remessa/Retorno

Para referência, os fontes da montagem dos inis estão em anexo.

CadastroBoletaServiceImpl.java

Link para o comentário
Compartilhar em outros sites

  • Moderadores
2 horas atrás, DeveloperATS disse:

"Numero" e "NumeroCorrespondente", que constam no manual, não parecem estar afetando nada no arquivo;

Bom dia, estes campos definem qual banco será usado (Se refere ao numero do Banco), vai afetar o layout se mudar o "Numero", ou se estiver utilizando o campo "TipoCobranca", será considerado essa configuração. Ambos servem para alterar o Banco.

https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca18.html

2 horas atrás, DeveloperATS disse:
  • Campo 20.0: Número da Versão do Layout do Arquivo;
  • 20.1: Número Remessa/Retorno

O número da versão do layout do arquivo é configurado em: LayoutVersaoArquivo, porém é válido para bancos que trabalham com mais de um layout atualmente, caso contrário o numero é definido de forma fixa na geração da remessa.

Qual Banco está gerando?

O Número da Remessa é definido no parâmetro do próprio método de geração como eu disse, normalmente utilizado na nomenclatura do arquivo gerado.

É o segundo parâmetro do método: 

https://acbr.sourceforge.io/ACBrLib/Boleto_GerarRemsessa.html

 

 

 

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá bom dia,

No objeto Boleto tem a propriedade "FACBrBoleto.Banco.LayoutVersaoArquivo", que acredito que resolve o primeiro problema

Quando Gera a remessa você pode passar a sequencia, que resolve o segundo problema: FACBrBoleto.GerarRemessa(SEU NSA).

Acredito que o auxilie nesta parte.

Atenciosamente,

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

OK, verifiquei as sugestões, e não parece ser isso:

  • No caso do LayoutVersaoArquivo, mesmo eu passando alguma coisa, o valor passado não parece afetar o campo 20.0, "Número da Versão do Layout do Arquivo", nem em nenhuma outra parte do arquivo. Conforme mencionado pelo José, pode ser que seja o caso do ACBr estar usando um valor fixo para o banco em questão. No caso, o banco usado nos testes é o Itaú;
  • Já no caso do segundo parâmetro da função "GerarRemessa()", ele funciona, mas afeta somente o 19.0, "sequência (NSA)", mas não afeta o 20.1, "Número Remessa/Retorno"; nos testes, nenhum dos campos sugeridos até o momento aparenta afetar este último.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá boa tarde,

Baixei o layout da página do Banco Itaú, pelo link:https://download.itau.com.br/bankline/cobranca_cnab240.pdf fiz um teste, informando a propriedade LayoutVersaoArquivo := 050, no caso do manual está informando para usar a 040, conforme imagem:image.thumb.png.4830277e5b0889b9c5bd2b674ee7ba63.png, e quando gerei o arquivo remessa alterou na boa.

image.png.269393f6020473a47e427b97d3c5c89e.png o hint que está aparecendo é antes de receber o 50

image.png.b308ff28d94682b22a56c4142c198e5b.png

image.png.6a9a1b5d051d21963770d76e8f46f9a8.png da mesma forma a sequencia da remessa coloquei um numero qualquer neste caso 123, só para testar e o resultado foi conforme o desejado

image.png.f4cb3e03d1a0fa768f1c33940346d219.png (Manual)

image.png.25c720f15cff18c26e0b9795df82bab7.png Arquivo

 e também: image.png.907c9b71820c516630c14248d269f537.png (Manual)

image.png.e6f68a049fc06e7bc065f3fb44e9b163.pngArquivo

 

Utilizei no teste Itaú: image.png.1e53541c98e3d64e0bf44aa7107cca6f.png

 

Chegou a debugar para ver se está passando nos respectivos campos?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores
1 hora atrás, DeveloperATS disse:

Já no caso do segundo parâmetro da função "GerarRemessa()", ele funciona, mas afeta somente o 19.0, "sequência (NSA)", mas não afeta o 20.1, "Número Remessa/Retorno"; nos testes, nenhum dos campos sugeridos até o momento aparenta afetar este último.

Precisa ver se está comparando com o mesmo layout. Os layouts utilizados pelo ACBr estão disponíveis em: http://svn.code.sf.net/p/acbr/code/tools/Bancos/

 

Se for o mesmo por favor anexe seu arquivo .ini com os dados que está passando e o arquivo remessa gerado, para que possamos verificar...

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
6 horas atrás, DeveloperATS disse:

Bom, fiz umas modificações rápidas no código para testar, e as instruções ajudaram, em parte.

O que deu certo:

  • Passar o parâmetro para a função de geração de remessa realmente fez com que o campo "19.0", "sequência (NSA)", fosse preenchido com o valor passado;
  • O "LayoutVersaoLote" realmente afetou o campo 07.1, "Nº da Versão do Layout do Lote".

O que não deu certo:

  • "LayoutVersaoArquivo" não afetou o "20.0", " Número da Versão do Layout do Arquivo" e, de fato, não aparenta ter afetado nenhuma parte do arquivo gerado;
  • "SeuNumero" afetou "35.3P"; esse campo já estava correto, mas foi bom saber o que ele afeta, para referência futura;
  • "Numero" e "NumeroCorrespondente", que constam no manual, não parecem estar afetando nada no arquivo;
  • O único "NossoNumero" que foi encontrado na documentação é o do título, e ele não está apresentando problemas.

Com isso, ficam faltando os seguintes campos para o arquivo gerado bater com a versão antiga:

  • Campo 20.0: Número da Versão do Layout do Arquivo;
  • 20.1: Número Remessa/Retorno

Para referência, os fontes da montagem dos inis estão em anexo.

CadastroBoletaServiceImpl.java 15 kB · 1 download

Aqui no seu arquivo, vi que tem 2 vezes a configuração "LayoutVersaoArquivo" uma na linha 76, onde faz o set para 777, e outra na linha 145, que faz o set para 0(zero).

Estão na mesma função, no ini que é gerado, chegou a verificar qual o valor que está sendo gravado?

Só estou perguntando mesmo na intenção de ajudar, não conheço muito de java.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Administradores

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

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 !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
1 hora atrás, Cristofer Rodrigues disse:

Aqui no seu arquivo, vi que tem 2 vezes a configuração "LayoutVersaoArquivo" uma na linha 76, onde faz o set para 777, e outra na linha 145, que faz o set para 0(zero).

Estão na mesma função, no ini que é gerado, chegou a verificar qual o valor que está sendo gravado?

Só estou perguntando mesmo na intenção de ajudar, não conheço muito de java.

Tem razão, já havia um outro lugar preenchendo esse campo, e eu não havia notado. Vou corrigir isto; muito obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
55 minutos atrás, DeveloperATS disse:

OK, está quase completo; agora só falta o campo 20.1: "Número Remessa/Retorno".

Como está passando esse número no método? Se possível anexe o log da lib, assim podemos ver o que está chegando de fato na ACBrLibBoleto.

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
1 hora atrás, DeveloperATS disse:

OK, está quase completo; agora só falta o campo 20.1: "Número Remessa/Retorno".

Olá boa noite.
Não achei no seu fonte o preenchimento da propriedade: "NumeroArquivo", dá uma olhada e preenche ela para fazer o teste se vai mudar algo aí para você.

Abraço

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá, bom dia; grato pelas sugestões, mas:

Adicionei código para passar "NumeroArquivo", e não aparenta estar afetando nada:
 

acbrBoleto.configGravarValor(ACBrSessao.BoletoDiretorioConfig, "NumeroArquivo", "333");            

De qualquer forma, de acordo com o manual, esse valor é sobrescrito pelo valor que é passado como parâmetro para o método "GerarRemessa"
 

acbrBoleto.GerarRemessa(file.getParent(), boleto.getCedente().getSequencialRemessa(), file.getName());

E, como mencionado anteriormente, nos testes esse parâmetro afeta o campo 19.0, "sequência (NSA)", mas não o 20.1, "Número Remessa/Retorno".

Editado por DeveloperATS
Link para o comentário
Compartilhar em outros sites

  • Moderadores

@DeveloperATS, creio que não estamos falando dos mesmos campos. Veja, no parâmetro do método é o numero do arquivo que deve ser passado, esse sai no Header do arquivo e do lote.

E tem o campo "NumeroDocumento" de cada título, esse é informado nos dados do título.

image.png

Por favor poste um print do manual ou do arquivo gerado, onde ocorre a divergência, para facilitar o entendimento.

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde;

Grato pela sugestão, mas testando aqui, o "NumeroDocumento" afeta o campo 19.3P, "Nº do Documento". No entanto, o campo que falta para deixar igual ao arquivo que está sendo comparado é o 20.1, "Número Remessa/Retorno"; vide screenshot do padrão original FEBRABAN e o equivalente da documentação específica do Itaú:

image.thumb.png.6cf9e1b158b50592bb607390cd575e4d.pngimage.thumb.png.5542e3bb0eb44621adbd0b0632759e31.png

Editado por DeveloperATS
Link para o comentário
Compartilhar em outros sites

  • Moderadores
54 minutos atrás, DeveloperATS disse:

Grato pela sugestão, mas testando aqui, o "NumeroDocumento" afeta o campo 19.3P, "Nº do Documento". No entanto, o campo que falta para deixar igual ao arquivo que está sendo comparado é o 20.1, "Número Remessa/Retorno"; vide screenshot do padrão original FEBRABAN e o equivalente da documentação específica do Itaú:

Esse campo posição 184 a 191 do Header do Lote, é o numero da remessa passado no parâmetro do método mesmo, conforme indicação do manual... Se não está gerando no arquivo, não deve estar chegando na lib, para que seja lido.

Por favor anexe o log gerado pela ACBrLibBoleto. É um txt de log, por default é gerado no mesmo diretório onde a dll se encontra.

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
21 horas atrás, José M. S. Junior disse:

Esse campo posição 184 a 191 do Header do Lote, é o numero da remessa passado no parâmetro do método mesmo, conforme indicação do manual... Se não está gerando no arquivo, não deve estar chegando na lib, para que seja lido.

Por favor anexe o log gerado pela ACBrLibBoleto. É um txt de log, por default é gerado no mesmo diretório onde a dll se encontra.

Bom dia; no caso, a DLL está sendo referenciada pelo JAR do ACBrLib, que está dentro de uma aplicação que está sendo executado via Spring Boot; eu olhei todos os lugares onde tivesse o DLL da ACBrLib, mas nenhum deles aparenta ter arquivo de log na mesma pasta; onde ficaria esse log do "ACBrLibBoleto", e que nome ele teria?

 

Editado por DeveloperATS
Esclarecendo onde foram pesquisados os logs da DLL
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia,

No arquivo de configuração da lib "ACBrLib.ini", na tag LogPath pode definir o local onde será gerados os logs. O log da dll é muito importante para identificar problemas do tipo, para saber se o método está chegando corretamente até a na dll ou é algo na aplicação.

Veja na sessão Principal, LogPath, se não estiver preenchido, defina um path para os logs. e na tag LogNivel defina como 4

https://acbr.sourceforge.io/ACBrLib/Geral.html

 

Será gerado um log diário:

image.png

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
1 hora atrás, José M. S. Junior disse:

Bom dia,

No arquivo de configuração da lib "ACBrLib.ini", na tag LogPath pode definir o local onde será gerados os logs. O log da dll é muito importante para identificar problemas do tipo, para saber se o método está chegando corretamente até a na dll ou é algo na aplicação.

Veja na sessão Principal, LogPath, se não estiver preenchido, defina um path para os logs. e na tag LogNivel defina como 4

https://acbr.sourceforge.io/ACBrLib/Geral.html

 

Será gerado um log diário:

image.png

Boa tarde;

OK, obrigado; depois de adicionar o código necessário, o log foi gerado:

acbrBoleto.configGravarValor(ACBrSessao.Principal, "LogPath", new File("../logs").getAbsolutePath());
acbrBoleto.configGravarValor(ACBrSessao.Principal, "LogNivel", 4);

Segue anexo o log.

ACBrLibBoleto-20220630.log

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

@DeveloperATS, pelo seu log está sendo passado o numero da remessa corretamente...

Realizando um teste por aqui não conseguir simular o problema, veja o log da lib e como foi gerado o arquivo do Itaú:

 

image.png

image.png

 

Se seu arquivo estiver diferente disso, por favor anexe o mesmo aqui ou me envie em PV, para que possamos verificar.

  • Curtir 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 633 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.