Bom dia a todos,
Tive um problema com a validação de uma NF-e que achei bem estranho.
O Componente está devolvendo um aviso de que o valor da nota, o valor dos produtos, a base de ICMS e o valor da fatura estão com mais que duas decimais.
Só que o valor não tem mais que duas decimais, o valor é de R$ 554.399,81.
Fazendo um debug chegei ao problema, isso esta ocorrendo na unit pcnGerador na linha 728 a 731, nesse ponto é utilizada a rotina abaixo que devolve o valor incorreto. 554399,8100000001
ConteudoProcessado := FormatFloat('0.0000000000', valor);
EstaVazio := (valor = 0) and (ocorrencias = 0);
if StrToIntDef(Copy(ConteudoProcessado, pos(DecimalSeparator, ConteudoProcessado) + NumeroDecimais + 1, 10),0) > 0 then
walerta(ID, Tag, Descricao, ERR_MSG_MAXIMO_DECIMAIS + ' ' + IntToStr(NumeroDecimais));
Fiz vários testes e fazendo a seguinte alteração, resolve o problema.
VlrExt:Extended; // declarar valiavel do tipo Extended
VlrExt := StrToFloat(Valor); // esse comando faz o ajuste
ConteudoProcessado := FormatFloat('0.0000000000', VlrExt); // associado a este
EstaVazio := (valor = 0) and (ocorrencias = 0);
if StrToIntDef(Copy(ConteudoProcessado, pos(DecimalSeparator, ConteudoProcessado) + NumeroDecimais + 1, 10),0) > 0 then
walerta(ID, Tag, Descricao, ERR_MSG_MAXIMO_DECIMAIS + ' ' + IntToStr(NumeroDecimais));
Espero ter contribuido.