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