Olá Boa tarde
Gostaria de saber se foi implementado a carteira 11 com convenio de 7 dígitos para o banco do brasil, pois fiz alguns testes aqui e não consegui gerar o boleto de forma correta, para que isto fosse possível
alterei a seguinte função.
Se usar a linha comentada a linha digitável fica idêntica à de um boleto gerado pelo sistema do banco...
Obrigado por enquanto...
function TACBrBancoBrasil.FormataNossoNumero(const ACBrTitulo :TACBrTitulo): String;
var
ANossoNumero, AConvenio, wNossoNumero : String;
wTamNossoNum: Integer;
begin
with ACBrTitulo do
begin
AConvenio := ACBrBoleto.Cedente.Convenio;
ANossoNumero := IntToStr(StrToInt64(OnlyNumber(NossoNumero)));
wNossoNumero := OnlyNumber(NossoNumero);
wTamNossoNum := CalcularTamMaximoNossoNumero(Carteira,wNossoNumero);
if ((ACBrTitulo.Carteira = '16') or (ACBrTitulo.Carteira = '18')) and
(Length(AConvenio) = 6) and (wTamNossoNum = 17) then
ANossoNumero := padR(ANossoNumero, 17, '0')
else if Length(AConvenio) <= 4 then
ANossoNumero := padR(AConvenio, 4, '0') + padR(ANossoNumero, 7, '0')
else if (Length(AConvenio) > 4) and (Length(AConvenio) <= 6) then
ANossoNumero := padR(AConvenio, 6, '0') + padR(ANossoNumero, 5, '0')
else if (Length(AConvenio) = 7) and (ACBrTitulo.Carteira = '11') then
ANossoNumero := padR('0', 7, '0') + padR(ANossoNumero, 10, '0')
// ANossoNumero := padR(AConvenio, 7, '0') + padR(ANossoNumero, 10, '0')
else if (Length(AConvenio) = 7) and ((ACBrTitulo.Carteira <> '11')) then
ANossoNumero := padR(AConvenio, 7, '0') + padR(ANossoNumero, 10, '0');
end;
Result := ANossoNumero;
end;