Jump to content

dev botao

Politica de arredondamento na NFe


Go to solution Solved by Victor H. Gonzales - Panda,
  • Este tópico foi criado há 1215 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

Estou com um problema de arredondamento na NFe, com uma combinação de valores.

image.png.6471b2c5ceb245aaffaacc184bdbc760.png

Na tela (DBGrid) fica dessa forma. 

*detalhe para o ítem P2

image.png.bc9793501ee91d9e667326bcfff6b1fe.png

No DANFe fica da forma acima.

 

Tentei preencher o componente de duas formas diferentes...

Produto.Prod.qCom := qItem;
Produto.Prod.vUnCom := vItem;

ou

Base := RoundABNT( qItem*vItem, -2 );
Produto.Prod.qCom := qItem;
Produto.Prod.vUnCom := Base/qItem;

 

As variáveis Base, qItem e vItem são do tipo Extended e recebem o valor do campo da tabela....

Abaixo um exemplo de rastreamento de código...

Base := RoundABNT( qItem*vItem, -2 );
Produto.Prod.qCom := qItem;
Produto.Prod.vUnCom := Base/qItem;

ShowMessage( 'Variável qItem: '+FloatToStr( qItem )+Chr( 13 )+
                       'Variável vItem: '+FloatToStr( vItem )+Chr( 13 )+
                       'Produto.Prod.qCom: '+FloatToStr( Produto.Prod.qCom )+Chr( 13 )+
                       'Produto.Prod.vUnCom: '+FloatToStr( Produto.Prod.vUnCom ) );

O resultado do ShowMessage:

image.png.9ccfb4a1995b9c255de5ae0618f274c1.png

Depois de "colocado" no componente, o valor 29,04 vira 29,0401.

Aparentemente é aí a origem do problema.

Vou anexar o XML, caso alguém possa me passar qq dica é muito bem vinda...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

image.png

PRE_RETRATO_4_000000884.xml

Posted

Adicionalmente eu mudei a forma de alimentar o componente:

Produto.Prod.vProd := RoundABNT( qItem*vItem, -2 );
Produto.Prod.qCom := qItem;
Produto.Prod.vUnCom := Produto.Prod.vProd/qItem;

Aí o valor total dos produtos e da nota ficou OK, porem caiu na validação...

629-Rejeição: Valor do Produto difere do produto Valor Unitário de Comercialização e Quantidade Comercial
 

  • Consultores
Posted

Bom dia,

se você trabalha apenas com 2 casas decimais, porque tuas variáveis de controle de valores estão com 13 decimais, arredonda elas ou trunca, depois faça as operações aritméticas, assim tu garante a assiduidade dos totalizadores.

lembrando que para documentos fiscais é utilizado a regra abnt 5891:2014

e no seu caso ali, Produto.Prod.vUnCom é = vItem não precisa a fazer outra operação aritmética para chegar novamente ao valor

Abraços

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Posted

Eu fiz vários testes de arredondamento usando o RoundABNT do ACBr, veja por exemplo:

image.png.ec3fca4f29829de3108ea3e4c2c5de49.png

Agora o resultado da mensagem:

image.png.eef63677faea7fdd5c1fe8be5339d0a7.png

a variável vItem vem com valor 29,04

só de eu "colocar" ela dentro do componente o valor "vira" 29,0401

e depois da multiplicação dá a diferença dos dois centavos ...

 

 

  • Consultores
  • Solution
Posted

Boa noite

Sua variável é float?

Se sim, pode ser isso, pela questão de precisão, 1-1 em float pode ser = 0,0000000009 por exemplo, o componente em si não muda os valores.

Veja a questão de suas casas decimais.

Veja outros tipos Double, Currency, Extended.

 

 

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Consultores
Posted

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Este tópico foi criado há 1215 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.