Ir para conteúdo
  • Cadastre-se

dev botao

Numero maximo de casas decimais permitidas 2


ericksiudc
  • Este tópico foi criado há 4671 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde, estou utilizando o ACBrNFeMonitor2-CAPICOM-0.6.1c e dês de que comecei a usá-lo em algumas notas esta dando erro de casas decimais no valor unitário do produto, porém ao abrir o monitor ou o arquivo de resposta do acbr o valor esta sempre com 1 ou 2 casas decimais pois eu forço a passagem do valor em no Maximo duas casas da seguinte forma:

write(ENT,'ValorUnitario=');

writeln(ENT, floattostr(TBRound(DM.IBDListVendaVALOR.Value, 2)));

por exemplo, no caso de um valor R$30,50 no acabr ele fica assim: ValorUnitario=30,5

no caso de um valor como R$30,53 no acbr fica assim: ValorUnitario=30,53

no caso de um valor como R$30,551256 no acbr fica assim: ValorUnitario=30,55

porem mesmo forçando essa passagem de duas casas decimais as vezes esta retornando erro de casas decimais e a nota só sai e se eu mudar o valor unitário produto em 1 centavo para mais ou para menos mas isso é uma coisa que não posso fazer sempre.

Link para o comentário
Compartilhar em outros sites

  • 9 meses depois ...

Ola, pessoal. Vou aproveitar este topico ainda aberto para expor minha duvida .

Tenho utilizado o acbrNfe sem problemas, porem de uns dias para ca, comecei a ter problemas tambem com as casas decimais. Faz dois dias que estou tentando emitir a nota fiscal desse Xml que vou postar, porem aparece um montao de erros nas TAGs (numero maximo de casas decimais pertido = 2 ;

Interessante é que o valor unitario de um dos itens, apesar de ser R$ 2,30, sempre aparece com esse monte de digitos. Inclusive no banco de dados esta correto.

A versao do componente que utilizo é 0.4.0.a.

O problema (acho ) que iniciou-se quando a empresa comecou a conceder um desconto de 3,65 porcento aos clientes deles (relativo ao repasse da isenção do Pis/Cofins.

Por favor, se tiverem uma dica, forneçam-me . Agradeço muito. No componente Danfe, o numero de casas decimais esta setado em 2 digitos de centavos.

35120102553503000110550010001003821000000010-NFe.xml

Link para o comentário
Compartilhar em outros sites

Olá, senhores, complementando :

Acabei de fazer o seguinte teste : enviei 3 notas, sendo a primeira com o primeiro produto, foi autorizada sem problemas;

Enviei a segunda com dois produtos, autorizasção OK

A terceira, com tres dos produtos, tambem autorizada.

Quando inclui o quarto produto, em uma outra nota, deu o problema.

Já descobri ONDE esta o erro, mas não consegui ainda soluciona-lo.

Obrigado.

Link para o comentário
Compartilhar em outros sites

Boa tarde Régys e demais amigos do forum.

Exatamente . Era ai mesmo o problema., Inclusive eu ia postar aqui que havia solucionado.

Hoje eu re-instalei o Unimake (.... creditos a eles ...) e quando tentei enviar por ele, o validador acusou exatamente nessas linhas doi XML. Dai foi so analisar de novo e consertar.

Cobr.Fat.nFat := EdtFatura.Text; // 'Numero da Fatura';

Cobr.Fat.vOrig := Valtot ; // Dm.CdsPedidosValorUnit.AsFloat * Dm.CdsPedidosQtdeVendida.AsInteger;

Cobr.Fat.vDesc := DescontoTotal;

Cobr.Fat.vLiq := Cobr.Fat.vOrig - Cobr.Fat.vDesc;

with Cobr.Dup.Add do

Essa é a partezinha do codigo que modifiquei.

Muito obrigado pela atenção.

Valeu !

Link para o comentário
Compartilhar em outros sites

Ola pessoal,

Esta com esse mesmo problemapor vários dias sem solução, daí pela internet consegui esta função que resolveu tudo.

Não esqueça de acrescentar na: Uses Math;

declare a função:


function TBRound(Value: Extended; Decimals: integer): Extended;


function TBRound(Value: Extended; Decimals: integer): Extended;

var

  Factor, Fraction: Extended;

begin

  Factor := IntPower(10, Decimals);

  { A conversão para string e depois para float evita

    erros de arredondamentos indesejáveis. }

  Value := StrToFloat(FloatToStr(Value * Factor));

  Result := Int(Value);

  Fraction := Frac(Value);

  if Fraction >= 0.5 then

    Result := Result + 1

  else if Fraction <= -0.5 then

    Result := Result - 1;

  Result := Result / Factor;

end;

utilizando:

Tabela1ValorUnitario.Value:=TBRound(seu valor,2);

Espero ter ajudado abs.

Link para o comentário
Compartilhar em outros sites

Olá, adenilsonjsn

Somente estou postando para agradecer pela rotina que vc enviou. Aquele erro eu tinha resolvido já (era mesmo no calculo do valor liquido da fatura ) , porém, estava com a soma de meus descontos (unitários) dando errinho de 1 centavo e os clientes começaram a chiar (rs )..

Coloquei (ainda hoje de manhã ) a rotina de arredondamento que vc enviou e resolveu de vez tambem. Abraços.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4671 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

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.

The popup will be closed in 10 segundos...