Ir para conteúdo
  • Cadastre-se

dev botao

Problema com a geração de remessa do Bradesco CNAB 400 "Nosso número" indo vazio


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

Recommended Posts

Postado

Bom dia, um cliente foi gerar um arquivo remessa para o banco Bradesco, CNAB 400, e após enviar a remessa o mesmo foi notificado que o "Nosso número" não está informado na remessa, ao ver a lógica notei que estava caindo nessa condição:

Arquivo: ACBrBancoBradesco.pas

Método: ValidaNossoNumeroResponsavel (linha 100)

Revisão: 28437 (06/02/2023 10:06)

    if (ACBrTitulo.NossoNumero = '') or (ACBrTitulo.NossoNumero = PadLeft(ACBrTitulo.NossoNumero,ACBrBanco.TamanhoMaximoNossoNum,'0')) then
    begin
      ANossoNumero := StringOfChar('0', CalcularTamMaximoNossoNumero(ACBrTitulo.Carteira, ACBrTitulo.NossoNumero) );
      ADigVerificador := '0';
    end

Porém como o número é passado preenchido, e essa condição é para os vazios acredito que tenha um problema com essa segunda condição:

(ACBrTitulo.NossoNumero = PadLeft(ACBrTitulo.NossoNumero,ACBrBanco.TamanhoMaximoNossoNum,'0'))

o nosso número ao debugar tem o valor de exemplo: "00000001234", quando comparado com o PadLeft desse valor (considerando o tamanho máximo como 11) ele resulta também em "00000001234", e acaba caindo na condição e resultando em "00000000000", como se estivesse vazio.

Ao remover essa segunda condição o funcionamento voltou ao normal para meu cliente.

Segue o arquivo modificado em anexo.

ACBrBancoBradesco.pas

  • Consultores
Postado
2 horas atrás, Ademar DC disse:

Bom dia, um cliente foi gerar um arquivo remessa para o banco Bradesco, CNAB 400, e após enviar a remessa o mesmo foi notificado que o "Nosso número" não está informado na remessa, ao ver a lógica notei que estava caindo nessa condição:

Arquivo: ACBrBancoBradesco.pas

Método: ValidaNossoNumeroResponsavel (linha 100)

Revisão: 28437 (06/02/2023 10:06)

    if (ACBrTitulo.NossoNumero = '') or (ACBrTitulo.NossoNumero = PadLeft(ACBrTitulo.NossoNumero,ACBrBanco.TamanhoMaximoNossoNum,'0')) then
    begin
      ANossoNumero := StringOfChar('0', CalcularTamMaximoNossoNumero(ACBrTitulo.Carteira, ACBrTitulo.NossoNumero) );
      ADigVerificador := '0';
    end

Porém como o número é passado preenchido, e essa condição é para os vazios acredito que tenha um problema com essa segunda condição:

(ACBrTitulo.NossoNumero = PadLeft(ACBrTitulo.NossoNumero,ACBrBanco.TamanhoMaximoNossoNum,'0'))

o nosso número ao debugar tem o valor de exemplo: "00000001234", quando comparado com o PadLeft desse valor (considerando o tamanho máximo como 11) ele resulta também em "00000001234", e acaba caindo na condição e resultando em "00000000000", como se estivesse vazio.

Ao remover essa segunda condição o funcionamento voltou ao normal para meu cliente.

Segue o arquivo modificado em anexo.

ACBrBancoBradesco.pas 67.21 kB · 0 downloads

Para cair neste if que vc citou, vc observou que o responsável pela emissão esta setado  "tbBancoEmite".
é o seu caso ? ou seu cliente é responsável pela emissão ?

Captura de tela 2023-02-06 132209.png

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Sim, quem emite o boleto e envia é o Bradesco, o cliente só manda a remessa. Se não me engano é um contrato que a carteira escolhida permite essa opção do banco emitir e mesmo assim o número ser de acordo com a empresa.

  • 1 mês depois ...
  • 1 mês depois ...
  • Administradores
Postado

Boa tarde,

Em 06/02/2023 at 13:45, Ademar DC disse:

Sim, quem emite o boleto e envia é o Bradesco, o cliente só manda a remessa. Se não me engano é um contrato que a carteira escolhida permite essa opção do banco emitir e mesmo assim o número ser de acordo com a empresa.

Pode por favor demonstrar no manual do banco como funciona este formato? Dado o fato de que a implementação segue oque consta nele, seria preciso entender melhor esta situação.

At.

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

Postado

Bom dia @Juliana Tamizou, a lógica de geração em si acredito que esteja correta, porém esse condição abaixo estava zerando o Nosso Número,  caso o ACBrTitulo.NossoNumero seja igual a '0015' e a expressão depois do igual seja também '0015' (considerando que o tamanho máximo seja somente 4 dígitos) ele zera o NossoNumero em seguida com as instruções do IF.

(ACBrTitulo.NossoNumero = PadLeft(ACBrTitulo.NossoNumero,ACBrBanco.TamanhoMaximoNossoNum,'0'))

Dessa forma, ao gerar os boletos para o cliente estava zerando o NossoNumero mesmo ele sempre indo preenchido para o componente, essa condição creio que seria apenas para pegar caso o NossoNumero não seja preenchido ou seja todo preenchido com zeros ele seja formatado para o tamanho no leiaute com os zeros para ficar no tamanho correto.

Postado (editado)

@Daniel InfoCotidiano Bom dia, eu consultei essa mesma documentação, solicitei ao cliente para entrar em contato com o Bradesco para que eles nos forneçam a documentação oficial deles com relação à carteira 09, por enquanto a única fonte que posso repassar é de um outro site: (https://www.neointerativa.com.br/_home/asp/Cobranca_Bancos_e_Carteiras.asp), porém assim que tiver retorno do Bradesco irei notifica-los.

image.png

Editado por Ademar DC
Postado

@Daniel InfoCotidiano Boa tarde, o contato do Bradesco me passou o seguinte manual sobre Layout de cobrança no CNAB 400 (segue em anexo, Layout cobrança CNAB 400.pdf), a parte de informar o nosso número está igual ao que já temos:
 

071-082 - Identificações do Título no Banco (Nosso Número) (Página 17)
"EMISSÃO DO BOLETO PELO BANCO Cobrança com Registro: nesse caso, esse campo deverá ser enviado com “zeros”, pois o sistema informará o Nosso Número no arquivo-retorno, quando da confirmação de entrada."

Porém, na página 18, posição 093 - Condições para Emissão do Boleto de Cobrança tem-se a condição:

"Se for igual a 1 = o Banco emite o boleto e processa o registro. ⇒ Se o Nosso Número for informado nas posições 71 a 82 do registro de transação, o Banco assume"

Nesse caso, é contraditório porém não impeditivo, ele orienta a mandar com 0, porém se informar um número válido ele assume o número, mesmo sendo o banco o responsável pela emissão.

  • Consultores
Postado

Bom dia @Ademar DC
Foi criada a tarefa TK-3932 para ser analisada com a equipe.
Lembrando que a mesma precisa ser analisada com cautela, pois existem milhares de pessoas usando e precisamos ver o impacto disso, pois até o momento não temos reclamações semelhantes.

Assim que tivermos uma resposta, comunicamos aqui no post.

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Consultores
  • Solution
Postado

Boa tarde @Ademar DC
Realmente não estava criando da forma correta.
Neste campo... qdo banco emite vc pode passar ou não o seunumero, somente 0 ou deixar em branco

Correção já está em nossos repositórios , atualize e rode o instalador !
Abr

  • Curtir 1
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

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