Ir para conteúdo
  • Cadastre-se

dev botao

Qual arredondamento o ACBr usa para gerar o itens do icms no xml


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

Recommended Posts

Postado

Bom dia, a Todos,

qual forma de arredondar o ACBr usa, para gerar o XML da nota fiscal, porque eu gravo item a item do icms no banco de dados e depois faço uma soma total e da diferença de centavos. 

Postado
13 minutos atrás, Dfox disse:

Tem 7 item e somando o valor do ICMS deu 423,32 e da erro com a sefaz e se eu alterar para 423,31 aí passa

Na verdade 423,33 aí passa

Postado
35 minutos atrás, Dfox disse:

Tem 7 item e somando o valor do ICMS deu 423,32 e da erro com a sefaz e se eu alterar para 423,31 aí passa

ficou muito vago isso

passa como voce chegou a isso item a item qual valor que esta na sua base de dados

se multiplica e a funcao que voce usa pra arredondar 

Postado
7 minutos atrás, leandroaoa disse:

ficou muito vago isso

passa como voce chegou a isso item a item qual valor que esta na sua base de dados

se multiplica e a funcao que voce usa pra arredondar 

item 1 icms 245,70

item 2 icms 36,75

item 3 icms 6,13

item 4 icms 19,25

item 5 icms 95,20

item 6 icms 8,92

item 7 icms 11,38

soma total 423,33

usando a soma com RoundABNT da 423,32 

e da rejeição.

Postado
7 minutos atrás, Dfox disse:

item 1 icms 245,70

item 2 icms 36,75

item 3 icms 6,13

item 4 icms 19,25

item 5 icms 95,20

item 6 icms 8,92

item 7 icms 11,38

soma total 423,33

usando a soma com RoundABNT da 423,32 

e da rejeição.

var lValor : Double;
begin
  lValor  :=  245.70 + 36.75 + 6.13 + 19.25 + 95.20 + 8.92 + 11.38;
  Showmessage(FloatToStr(RoundABNT(lValor, -2)));

image.png.cbde33d4d426e6d907a7b3c4607bfb2f.png

Postado
19 horas atrás, leandroaoa disse:

var lValor : Double;
begin
  lValor  :=  245.70 + 36.75 + 6.13 + 19.25 + 95.20 + 8.92 + 11.38;
  Showmessage(FloatToStr(RoundABNT(lValor, -2)));

image.png.cbde33d4d426e6d907a7b3c4607bfb2f.png

estranho faço assim e fica 423,32

 

            frmnotafiscal_menu.qrnota.fieldbyname('VALOR_ICMS').AsFloat :=
              frmnotafiscal_menu.qrnota.fieldbyname('VALOR_ICMS').AsFloat +
              RoundABNT(qrnotafiscal_item.fieldbyname('VALOR_ICMS').AsFloat, -2);

Postado
2 minutos atrás, Dfox disse:

estranho faço assim e fica 423,32

 

            frmnotafiscal_menu.qrnota.fieldbyname('VALOR_ICMS').AsFloat :=
              frmnotafiscal_menu.qrnota.fieldbyname('VALOR_ICMS').AsFloat +
              RoundABNT(qrnotafiscal_item.fieldbyname('VALOR_ICMS').AsFloat, -2);

chegou a depurar pra ver o valor que esta chegando.

Muda o seu codigo pra esse

frmnotafiscal_menu.qrnota.fieldbyname('VALOR_ICMS').AsFloat :=
              RoundABNT( frmnotafiscal_menu.qrnota.fieldbyname('VALOR_ICMS').AsFloat +
                                     qrnotafiscal_item.fieldbyname('VALOR_ICMS').AsFloat, -2 );

Postado
20 horas atrás, leandroaoa disse:

var lValor : Double;
begin
  lValor  :=  245.70 + 36.75 + 6.13 + 19.25 + 95.20 + 8.92 + 11.38;
  Showmessage(FloatToStr(RoundABNT(lValor, -2)));

image.png.cbde33d4d426e6d907a7b3c4607bfb2f.png

Bom dia descobri que os valores passado para o banco são esses

 

item 1 icms 245,70

item 2 icms 36,75

item 3 icms 6,125

item 4 icms 19,25

item 5 icms 95,20

item 6 icms 8,925

item 7 icms 11,375

 

esses valores passado para a nfe da um valor e pelo RoundABNT da outro, dai da diferença de centavos

mais deveria dar tudo o mesmo valor já que ambos usa o ABNT

Postado
15 minutos atrás, Dfox disse:

Bom dia descobri que os valores passado para o banco são esses

 

item 1 icms 245,70

item 2 icms 36,75

item 3 icms 6,125

item 4 icms 19,25

item 5 icms 95,20

item 6 icms 8,925

item 7 icms 11,375

 

esses valores passado para a nfe da um valor e pelo RoundABNT da outro, dai da diferença de centavos

mais deveria dar tudo o mesmo valor já que ambos usa o ABNT

var lValor : Double;
    lValorD: Double;
begin
  lValor  :=  245.70 + 36.75 + 6.13 + 19.25 + 95.20 + 8.92 + 11.38;
  lValorD :=  245.70 + 36.75 + 6.125 + 19.25 + 95.20 + 8.925 + 11.375;
  Showmessage('Valor duas casas SEM ABNT : '+FloatToStr(lValor)+#13+
              'Valor duas casas COM ABNT : '+FloatToStr(RoundABNT(lValor, -2))+#13+#13+
              'Valor tres casas SEM ABNT : '+FloatToStr(lValorD)+#13+
              'Valor tres casas COM ABNT : '+FloatToStr(RoundABNT(lValorD, -2))
             );
 

image.png.e7ef94fcf756e5cb902b264e67b36c4a.png

olha o ultimo exemplo da norma abaixo ele que diz respeito ao seu caso conforme esse valor 

423,325. Pelo que entendi voce deve estar arredondando o valor nos itens e somando o total com tres casas, se voce passa os itens ja arredondado tem que somar igual se nao vai dar diferenca mesmo

 

Norma ABNT sobre Regras de Arredondamento na Numeração Decimal

Devido as dúvidas da forma de cálculo referente aos Fundos, seguem as Regras da ABNT/NBR 5891/2014 que dispõem sobre o arredondamento da numeração decimal:

 

➡  Quando o algarismo a ser conservado for seguido de algarismo inferior a 5, permanece o algarismo a ser conservado e retiram-se os posteriores. 

  • EXEMPLO: 1,333        3 arredondado à primeira decimal torna-se 1,3 

 

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

  • EXEMPLO 1: 1,666        6 arredondado à primeira decimal torna-se 1,7 

  • EXEMPLO 2: 4,850        5 arredondado à primeira decimal torna-se 4,9 

 

➡ Quando o algarismo a ser conservado for ímpar, seguido de 5 e posteriormente de zeros, soma-se uma unidade ao algarismo a ser conservado e retiram-se os posteriores 

  • EXEMPLO: 4,550         0 arredondado à primeira decimal torna-se 4,6 

 

➡ Quando o algarismo a ser conservado for par, seguido de 5 e posteriormente de zeros, permanece o algarismo a ser conservado e retiram-se os posteriores. 

  • EXEMPLO: 4,850        0 arredondado à primeira decimal torna-se 4,8

 

Fonte: ABNT

Postado
21 minutos atrás, Dfox disse:

Acho que se eu passar os valores para a nota arredondando e depois somar os itens também arredondando acho que resolve. 

 

Sim ira resolver ai ja é sua regra de negocio

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