Ir para conteúdo
  • Cadastre-se

dev botao

Arredondamento no Valor Unitário (SAT)


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

Recommended Posts

  • Membros Pro

Boa tarde!

Precisei analisar a situação de um cliente, e mesmo após resolver o problema dele, me surgiu uma duvida quanto à geração do XML do SAT, que eu gostaria de compartilhar.

A quantidade de casas decimais para valor unitário é de 2, ou 3 para combustiveis, e o arredondamento para o SAT é baseado na NBR 5891-1977 da ABNT, onde eu já até tinha uma função para isso, mas vi que o ACBr também possui a sua (RoundABNT) e ambas chegam sempre no mesmo resultado. A situação do meu cliente era simples, ele tinha um produto com o seguinte preço: R$ 5,985. Se você arredondar para duas casas decimais seguindo a norma, o resultado é: R$ 5,98. Não vou entrar no mérito do pq o resultado ser esse, mesmo pq a função do ACBr retorna esse valor também, que é o correto. Quando meu sistema mandava esse valor com 3 casas para o componente o SAT dava erro, pq no XML chegava o valor de R$ 5,99 e os pagamentos informados consideravam R$ 5,98. Resolvei esse problema arredondando para 2 casas decimais antes de jogar no componente para a geração do XML. Porém, fui verificar a rotina de geração do XML e na unit pcnGerador tem a seguinte chamada:

ConteudoProcessado := FloatToString(valorDbl, FOpcoes.DecimalChar, FloatMask(NumeroDecimais, False));

Essa função FloatToString utiliza internamente o FormatFloat, e por isso quando o valor R$ 5,985 chega nela, o resultado é R$ 5,99.

Entendo que o meu software deveria já mandar pro componente as 2 casas decimais, e como está fazendo agora, fica tudo certo. Mas se a função tem o tratamento para acertar a quantidade de casas decimais de acordo com a especificação, ela não deveria seguir tbm a norma, e arredondar para R$ 5,98?

Reafirmo que já resolvi isso no meu software, mas acho legal considerarem esse ponto.

Agradeço desde já.

 

Editado por André Simões
titulo com erro de portugues
Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution

Você já fez o correto, (arredondar em 2 casas, antes de alimentar o componente)...

Esse método da PCN, é usado por todos os Documentos eletrônicos e nem todos usam essa mesma regra do SAT...

Lembrando que alguns campos, são gerados pelo SAT e não devem ser preenchidos, pela aplicação... é o caso do "vItem"...

image.png

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

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