Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde, 

Eu estou com o seguinte problema: 

Eu tenho um produto que é vendido à R$ 2,56 e a quantidade à 0,733 o meu sistema armazena 3 casas após a virgula então o sistema recebe para arredondar com a função roundABNT(2,565 ,2) e isso arredondado dá R$ 2,56 o meu sistema calcula que tem pra receber isso! Chegando no SAT como ele não tem limites de casas após a virgula ele recebe o mesmo valor porém quando ele tenta arredondar o que chegar pra ele é roundABNT(2,5655 ,2) e isso arredondado dá R$ 2,57 ai o meu SAT retorna o erro "Rejeição: Valor total do CFe SAT maior que o somatário dos valores de meio de pagamentos empregados em seu pagamento."

Qual seria a solução para esse caso? 

Postado

Olá nicolasbraz,

Pela norma ABNT arredondar 2,565 para duas casas decimais está correto ser arredondado para 2,56, enquanto que arredondar 2,5655 está correto arredondar para 2,57. Veja o que diz o item 2.2 da norma ABNT com vigência desde Janeiro de 2015:

2.2-Quando o algarismo a ser conservado for seguido de algarismo superior a 5, ou igual a 5, seguido de no mínimo um algarismo diferente de zero, soma-se uma unidade ao algarismo a ser conservado e retiram-se os posteriores.

Veja que o primeiro caso (2,565) não se enquadra, e o segundo (2,5655) sim.

Talvez melhor você trabalhar também com 4 casas decimais, creio que isso evitará essa diferença. Outra possibilidade é você usar uma função nativa de sua linguagem, com certeza ela segue a norma da IOS (International Organization for Standardization), e funciona. Uso para arredondamentos uma função nativa de minha linguagem de programação (Harbour) e nunca tive problemas com isso. Essa norma segue o seguinte:

Se o algarismo posterior ao ser conservado for inferior a 5, conserva o algarismo a ser conservado. Se o algarismo posterior a ser conservado for superior a 5, acrescenta 1 ao algarismo a ser conservado.

Por essa regra, arredondar 2,565 para duas casas ficaria 2,57. Também trabalho com 3 casas decimais e nunca tive problemas usando a função nativa.

Postado
6 horas atrás, Jairo Maia disse:

Olá nicolasbraz,

Pela norma ABNT arredondar 2,565 para duas casas decimais está correto ser arredondado para 2,56, enquanto que arredondar 2,5655 está correto arredondar para 2,57. Veja o que diz o item 2.2 da norma ABNT com vigência desde Janeiro de 2015:

2.2-Quando o algarismo a ser conservado for seguido de algarismo superior a 5, ou igual a 5, seguido de no mínimo um algarismo diferente de zero, soma-se uma unidade ao algarismo a ser conservado e retiram-se os posteriores.

Veja que o primeiro caso (2,565) não se enquadra, e o segundo (2,5655) sim.

Talvez melhor você trabalhar também com 4 casas decimais, creio que isso evitará essa diferença. Outra possibilidade é você usar uma função nativa de sua linguagem, com certeza ela segue a norma da IOS (International Organization for Standardization), e funciona. Uso para arredondamentos uma função nativa de minha linguagem de programação (Harbour) e nunca tive problemas com isso. Essa norma segue o seguinte:

Se o algarismo posterior ao ser conservado for inferior a 5, conserva o algarismo a ser conservado. Se o algarismo posterior a ser conservado for superior a 5, acrescenta 1 ao algarismo a ser conservado.

Por essa regra, arredondar 2,565 para duas casas ficaria 2,57. Também trabalho com 3 casas decimais e nunca tive problemas usando a função nativa.

Olá, 

Eu entendo que a norma está correta o problema é a casa no banco o que eu achei complicado é que se eu coloco a 4 casa resolve esse problema mas e se aparece um outro problema parecido e ao invés de 4 casas o SAT faça a conta com 5 casas continuo com o problema. 

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