Boa tarde.
Sempre que atualizo o ACBr tenho que fazer alterações manuais no arquivo ACBrBancoCaixaSICOB.pas, peço ajuda aos colegas.
Estou analisando o arquivo ACBrBancoCaixaSICOB.pas, e na procedure LerRetorno240 (linha1230), penso que a função CalcularTamMaximoNossoNumero (linha 1311) sempre vai retornar zero.
CalcularTamMaximoNossoNumero(Carteira, ' ', ACBrBanco.ACBrBoleto.Cedente.Convenio);
Na função CalcularTamMaximoNossoNumero a carteira está indo em branco, segundo o próprio arquivo do ACBr consta isso:
// Carteira := Copy(Linha,40,2);
// No SICOB não retorna o numero da carteira. Retorna o seguinte:
// 1 = Cobrança Simples
// 3 = Cobrança Caucionada
// 4 = Cobrança Descontada
O copy que pega os dados da carteira está comentado, mesmo que não estivesse o retorno seria 1, 3 ou 4.
Na função CalcularTamMaximoNossoNumero o código é:
if (wOperacao = 870) and (Carteira = 'SR') then
Result := 15
else if (Carteira = 'CR') then
Result := 10;
Na função CalcularTamMaximoNossoNumero o nosso numero está passando em branco ( ' ' ).
Segue código original:
with Titulo do
begin
if Copy(Linha,14,1)= 'T' then //segmento T
begin
ACBrBanco.TamanhoMaximoNossoNum :=
CalcularTamMaximoNossoNumero(Carteira, ' ', ACBrBanco.ACBrBoleto.Cedente.Convenio);
SeuNumero := copy(Linha,59,11);
NumeroDocumento := copy(Linha,106,25);
NossoNumero := Copy(Copy(Linha,47,10), // sem o DV
Length(Copy(Linha,47,10))-TamanhoMaximoNossoNum ,
TamanhoMaximoNossoNum);
Comentei a linha que calcula CalcularTamMaximoNossoNumero e deixei o tamanho 10. E assim leu certo o Nosso Número.
Atenciosamente
Junior Dias
ACBrBancoCaixaSICOB.pas