Ir para conteúdo
  • Cadastre-se

dev botao

Politica de arredondamento na NFe


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

Recommended Posts

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

Link para o comentário
Compartilhar em outros sites

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
 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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"

Link para o comentário
Compartilhar em outros sites

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 ...

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

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"

Link para o comentário
Compartilhar em outros sites

  • Consultores

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"

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 965 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.