Ir para conteúdo
  • Cadastre-se

dev botao

Politica de arredondamento na NFe


Ver Solução Respondido por Victor H. Gonzales - Panda,
  • Este tópico foi criado há 1210 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

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

Postado

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
Postado

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"

Postado

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
Postado

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
Postado

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á 1210 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.