Olá, acredito que deva ser feita uma alteração no fonte da caixa:
function TACBrCaixaEconomica.MontarCodigoBarras(const ACBrTitulo : TACBrTitulo): String;
var
CodigoBarras, FatorVencimento, DigitoCodBarras :String;
CampoLivre,DVCampoLivre, ANossoNumero : String;
{Crz}
function PadL(Oque: string; Tamanho: integer; ComOque: char = '0'): string;
var
FillStr: string;
begin
Oque := trim(Oque);
if Oque = '' then Oque := '0';
Oque := (IntToStr(StrToInt(Oque) ));
SetLength(FillStr, Tamanho);
FillChar(FillStr[1], Tamanho, ComOque);
if Length(Oque) > Tamanho then
Result := Copy(Oque, 1, Tamanho)
else
Result := Copy(FillStr, 1, Tamanho - Length(oque)) + Oque;
end;
{/Crz}
begin
FatorVencimento := CalcularFatorVencimento(ACBrTitulo.Vencimento);
ANossoNumero := FormataNossoNumero(ACBrTitulo);
{Montando Campo Livre}
CampoLivre := padR(ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente,6,'0') +
CalcularDVCedente(ACBrTitulo) + Copy(ANossoNumero,3,3) +
Copy(ANossoNumero,1,1) + Copy(ANossoNumero,6,3) +
'4' + Copy(ANossoNumero,9,9);
Modulo.CalculoPadrao;
Modulo.MultiplicadorFinal := 2;
Modulo.MultiplicadorInicial := 9;
Modulo.Documento := CampoLivre;
Modulo.Calcular;
DVCampoLivre := intTostr(Modulo.ModuloFinal);
if Length(DVCampoLivre) > 1 then
DVCampoLivre := '0';
CampoLivre := CampoLivre + DVCampoLivre;
//Alteracao!!
if ACBrTitulo.ACBrBoleto.LayoutRemessa = c240 then
begin
{CRZ}
if (ACBrTitulo.Carteira = 'SR') then
begin
// Esse processo sobrescreve tudo o que foi feito lá em cima....
ANossoNumero := ACBrTitulo.NossoNumero;
while (ANossoNumero <> '') and (ANossoNumero[1] = '0') do // Tira zeros à esquerda para não atrapalhar (importante!)
begin
ANossoNumero := Copy(ANossoNumero, 2, Length(ANossoNumero));
end;
CampoLivre :=
PadL(ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente, 5) +
PadL(ACBrTitulo.ACBrBoleto.Cedente.Agencia, 4) +
'8' + '7' +
PadL(ANossoNumero, 14);
end;
{/CRZ}
end;
//..........................................................................
{Codigo de Barras}
with ACBrTitulo.ACBrBoleto do
begin
CodigoBarras := IntToStrZero(Banco.Numero, 3) +
'9' +
FatorVencimento +
IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10) +
CampoLivre;
end;
DigitoCodBarras := CalcularDigitoCodigoBarras(CodigoBarras);
Result:= copy( CodigoBarras, 1, 4) + DigitoCodBarras + copy( CodigoBarras, 5, 44);
end;
Pois como estava não seguia o manuel(pag. 11)... que está em anexo obrigado!
ESPCODBARBLOQCOBRANREGIST_16POSICOES.pdf
ESPCODBARBLOQCOBRANREGIST_16POSICOES.pdf