Em ambiente de testes/homologação (não testei em produção) ao finalizar o recebimento no TEF PayGo o Delphi reporta 4 vezes a exceção:
EConvertError
'' is not a valid integer value
Essa exceção ocorre na unit ACBrBase, classe TACBrInformacao, método GetAsDate, ao executar StrToInt:
function TACBrInformacao.GetAsDate : TDateTime;
var
DataStr, AnoStr: String;
begin
DataStr := OnlyNumber( Trim(fInfo) );
if (Length(DataStr) = 6) then // DDMMYY, converte para DDMMYYYY
begin
AnoStr := IntToStr(YearOf(Today));
DataStr := copy(DataStr,1,4) + copy(AnoStr,1,2) + copy(DataStr,5,2);
end;
try
Result := EncodeDate( StrToInt(copy(DataStr,5,4)), // EXCEÇÃO AQUI !!!
StrToInt(copy(DataStr,3,2)),
StrToInt(copy(DataStr,1,2)) ) ;
except
Result := 0 ;
end;
end;
A exceção é tratada no bloco try..except então ela não propaga para quem chamou.
Mas o fato de ela acontecer pelo menos 4 vezes em uma operação que foi bem sucedida é um pouco chato.
Uma solução simples seria:
function TACBrInformacao.GetAsDate : TDateTime;
var
DataStr, AnoStr: String;
begin
DataStr := OnlyNumber( Trim(fInfo) );
// ********* SUGESTÃO *********
Result := 0;
if Trim(DataStr) = '' then exit;
// ********* SUGESTÃO *********
if (Length(DataStr) = 6) then // DDMMYY, converte para DDMMYYYY
begin
AnoStr := IntToStr(YearOf(Today));
DataStr := copy(DataStr,1,4) + copy(AnoStr,1,2) + copy(DataStr,5,2);
end;
try
Result := EncodeDate( StrToInt(copy(DataStr,5,4)),
StrToInt(copy(DataStr,3,2)),
StrToInt(copy(DataStr,1,2)) ) ;
except
Result := 0 ;
end;
end;