Ir para conteúdo
  • Cadastre-se

dev botao

Banco do Brasil CNAB400 duplicando nro sequencial


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

Recommended Posts

Postado (editado)

Bom dia,

  Estou na fase de homologação do boleto do Banco do Brasil CNAB 400 porém foi verificado um detalhe referente ao número sequencial solicitado pois está duplicando no Registro Detalhe Tipo 5 – Multa/Prazo Limite de Recebimento – Opcional – Remessa. Dando uma olhada mais detalhada, no método TACBrBancoBrasil.GerarRegistroTransacao400 foi verificado que o Número Sequencial é o ultimo item listado na atribuição wLinha IntToStrZero( aRemessa.Count +1, 6 ) porém ao gerar o Registro Detalhe Tipo 5 Multa/Prazo será somado dois, ou seja, IntToStrZero(aRemessa.Count + 2 ,6) e nesse caso será duplicado o Número Sequencial a partir do segundo registro conforme imagem "arquivo".

Realizei uma alteração nos fontes ACBrBoleto e ACBrBancoBrasil, dando overload nos métodos referentes ao leiaute 400(evitando possíveis impactos) passando um var como parâmetro a fim de ir somando o index correto do número sequencial.

Imagens do e-mail, fontes.pas e arquivo.txt em anexo.

Fico à disposição

Att, Vitor.

email.png

 

 

Arquivo.png

ACBrBoleto_github.png

ACBrBancoBrasil.pas ACBrBoleto.pas

Editado por Vitor.Bonvino
Reajustando imagens
  • Moderadores
Postado

Que estranho pois existem diversos usuários rodando o boleto e homologado e homologando sem precisar alterar

creio que esteja informando dados incorretos

leia isso eveja se lhe ajuda a entender

https://acbr.sourceforge.io/ACBrMonitor/Particularidades.html

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Moderadores
Postado
1 hora atrás, Vitor.Bonvino disse:

Dando uma olhada mais detalhada, no método TACBrBancoBrasil.GerarRegistroTransacao400 foi verificado que o Número Sequencial é o ultimo item listado na atribuição wLinha IntToStrZero( aRemessa.Count +1, 6 ) porém ao gerar o Registro Detalhe Tipo 5 Multa/Prazo será somado dois, ou seja, IntToStrZero(aRemessa.Count + 2 ,6) e nesse caso será duplicado o Número Sequencial a partir do segundo registro conforme imagem "arquivo".

Não devia duplicar já que está inserindo duas linhas de cada vez, com o uso de sLineBreak pra separar.

Qual sua IDE? Está compilando para Windows ou Linux?

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado (editado)
2 horas atrás, BigWings disse:

Não devia duplicar já que está inserindo duas linhas de cada vez, com o uso de sLineBreak pra separar.

Qual sua IDE? Está compilando para Windows ou Linux?

Boa tarde,

Meu setup é Linux mais especificadamente Ubuntu 20.04 LTS.

Ele não está duplicando o Registro mas sim o número de Registro, o valor sequencial entre um bloco e o outro.

No bloco acima da imagem referente ao .pas em anexo ele soma + 1 ao recodrcount já no bloco abaixo é somado 2, com uma quebra de linha entre ambos. Acontece que conforme e-mail, foi solicitado para que o número fosse distinto entre ambos os blocos de forma sequencial, seguindo o exemplo de como está implementado, a partir do segundo registro iria duplicar pois o recordcount seria 2 e iria coincidir com o primeiro registro, exemplo:

exemplificando.png.76762694eabafa5cf40487facf4eb626.png

Essa foi a solicitação via e-mail e feito esse após realizar esse ajuste foi homologado com sucesso.

 

ACBrBoleto.pas Github:

ACBrBoleto_github.png

 

E-mail homologado com sucesso:

email_homologado.png

 

Fico à disposição.

Att, Vitor.

Editado por Vitor.Bonvino
Ajustando imagens
  • Moderadores
  • Solution
Postado

Tem algo errado na chamada a ARemessa.Count no seu ambiente, não consegui replicar o problema aqui no Delphi/Windows.

Em cada interação são adicionadas duas linhas então se na primeira interação ARemessa.Count é 1, na segunda vai ser 3.

Tente alterar a linha:

       wLinha:= wLinha + sLineBreak                              +

Para:

       wLinha:= wLinha + aRemessa.LineBreak                      +

E veja se resolve.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Moderadores
Postado
6 minutos atrás, Vitor.Bonvino disse:

  Funcionou perfeitamente, valeu! Gostaria de saber se vai ser realizado essa alteração.

Sim, só precisa compatibilizar com as versões antigas do Delphi que não tem essa propriedade.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

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