Na geração do registro H010 o campo VL_UNI mesmo se informando valores com 6 casas decimais, ele gera o valor considerando apenas 4 decimais, devido ao parâmetro ser do tipo currency, e depois utilizando o FormatCurrency ele adiciona dois zeros para completar as 6 decimais exigidas pelo campo.
Eu corrigi o problema da seguinte forma :
function TACBrTXTClass.LFill(Value: Double;
Size: Integer;
Decimal: Integer = 2;
Nulo: Boolean = false;
Caracter: Char = '0';
Mascara: String = ''): String;
var
intFor, intP: Integer;
strCurMascara: string;
begin
strCurMascara := FCurMascara;
// Se recebeu uma mascara como parametro substitue a principal
if Mascara <> '' then
strCurMascara := Mascara;
/// Se o parametro Nulo = true e Value = 0, será retornado '|'
if (Nulo) and (Value = 0) then
begin
Result := FDelimitador;
Exit;
end;
intP := 1;
for intFor := 1 to Decimal do
begin
intP := intP * 10;
end;
if strCurMascara <> '' then
Result := FDelimitador + FormatFloat(strCurMascara, Value)
else
Result := LFill(Trunc(Value * intP), Size, Nulo, Caracter);
end;
Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.
Registro H010 Gera Apenas 4 Decimais Por Causa Do Parâmetro Ser Currency No Lfill
em ACBrSPEDFiscal
Postado
Olá!
Na geração do registro H010 o campo VL_UNI mesmo se informando valores com 6 casas decimais, ele gera o valor considerando apenas 4 decimais, devido ao parâmetro ser do tipo currency, e depois utilizando o FormatCurrency ele adiciona dois zeros para completar as 6 decimais exigidas pelo campo.
Eu corrigi o problema da seguinte forma :