Ir para conteúdo
  • Cadastre-se

dev botao

Erro estranho de arredondamento na quantidade do produto


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

Recommended Posts

Postado

Estou tendo um problema de arredondamento muito estranho no momento de preencher o componente ACBrNFe e consequentemente na geração do XML.

Postei uma imagem anexo que é bem auto-explicativa, mostro o valor antes e depois de colocar no componente os valores são diferentes.

Atualizei o ACBr, reconstrui o Lázarus e o problema persiste.

image.png.b2169b8dd52594a07e3eb122821b1549.png

 

Postado

Daniel, sinceramente não encontrei, fiz uma busca com o note pad ++ na pasta exemplos e não encontrei.

Aqui no forum os exemplos que eu encontrei usam dois parametros, ou estou fazendo muita confusão ou teria que passar 3.

eu tentei de duas formas:

Produto.Prod.qCom := RoundABNT( qItem, 4, 4 );

Produto.Prod.qCom := RoundABNT( qItem, -4, 4 );

Porém o erro permanece

Postado

eu consegui usar o RoundABNT

Produto.Prod.qCom := RoundABNT( qItem, -4 );

usei o -4 pq são 4 casas decimais, seria isto?

só que mesmo assim o problema persiste, ele não mantém a quantidade informada ...

Postado

Alguém teria alguma idéia do que poderia esta acontecendo?

A coisa é tão estranha que eu atribuo o mesmo valor para as tags qCom e qTrib e no xml os valores ficam diferentes ...

image.png.446be32304c578abbf7c09b2539a7e4e.png

Postado

Eu fiz um teste aqui, na hora da totalização passando os valores que estão no componente

Produto.Prod.vProd := RoundABNT( Produto.Prod.qCom * Produto.Prod.vUnCom, -2 )

Porém ai ele altera o valor da nota.

image.thumb.png.60735a0fc34d02e4099ce57f00e6b68a.png

Eu simulei no demo do acbr e o problema não acontece, portanto, deve ser alguma coisa no meu sistema.

Se alguém tiber alguma dica, uso o Firebird 2.5.....

 

 

  • Curtir 1
  • Moderadores
Postado
6 horas atrás, cefantacini disse:

Eu fiz um teste aqui, na hora da totalização passando os valores que estão no componente

Produto.Prod.vProd := RoundABNT( Produto.Prod.qCom * Produto.Prod.vUnCom, -2 )

Informe vProd conforme calculado pela sua aplicação.

Ajuste o vUnCom conforme necessário.

Conforme o manual, o vUnCom é meramente informativo, e o próprio manual indica fazer a divisão vUnCom = vProd / qCom.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Depois de muito bater cabeça, eu consegui uma solução, meio estranha, mais vou deixar anotado aqui, talvez possa servir ...

Eu limpo o componente, NotasFiscais.Clear e alimento ele, gero o XML, leio o XML gerado e testo se os valores estão da forma que teriam que estar, se não estiver, eu repito o processo,  limpo o componente e alimento ele de novo.

Dessa forma ai, em 100% dos casos problemáticos que eu tinha aqui resolveu.

São muito poucos os casos problemáticos, bem menos de 1% do total de notas emitidas, porém, dessa forma, consegui resolver todos, pelo menos os que eu tomei conhecimento até agora.

Se quiser, pode fechar o tópico.

Postado
15 minutos atrás, cefantacini disse:

Depois de muito bater cabeça, eu consegui uma solução, meio estranha, mais vou deixar anotado aqui, talvez possa servir ...

Eu limpo o componente, NotasFiscais.Clear e alimento ele, gero o XML, leio o XML gerado e testo se os valores estão da forma que teriam que estar, se não estiver, eu repito o processo,  limpo o componente e alimento ele de novo.

Dessa forma ai, em 100% dos casos problemáticos que eu tinha aqui resolveu.

São muito poucos os casos problemáticos, bem menos de 1% do total de notas emitidas, porém, dessa forma, consegui resolver todos, pelo menos os que eu tomei conhecimento até agora.

Se quiser, pode fechar o tópico.

isso ta uma POG daquelas, cara você tem que achar o que esta errado coloca sua aplicacao em debug e vai olhando o que esta ainda em cada passo pois ali não e nem questao de arredondamento pois tem uma diferenca de 0,10 e isso e muito procure e procure pois se ter algum BO em um cliente que o cara reclamar que foi cobrado a mais ou cliente te ligar falando que o sistema esta cobrando a menos do cliente isso vai te dar uma dor de cabeca lascada fora que você ira perder o seu cliente e a credibilidade do seu sistema calculos matematicos em sistema tem que ser testado incansavelmente fica a dica 

  • Curtir 1
  • 2 meses depois ...
Postado
Em 29/04/2020 at 11:33, Daniel Simoes disse:

Use o método: ACBrUtil.RountABNT

Ainda sobre este assunto.
Daniel, meu xará, onde eu posso alterar o codigo da impressão do DANFE da NFE para que a quantidade do produto tenha 4 casas decimais ?
Meu cliente não quer que arredonde mas mostre as 4 casas decimais.
No xml está correto, no banco de dados também, só na impressão é que está com 2 casas arredondados.

Grato.

Postado

Primeiramente, quero me penitenciar com a grupo. Eu respondi direto pelo email e não aqui no fórum.
O aumento para 4 casas funcionou perfeitamente, alterando a qtd de casas decimais no componente.
O cliente gostou, mas... sempre tem um mas, ele não quer quando for tipo 5,4700, apareça as 4 casas, quer que despreze os zeros, ficando 5,47.
Só mostrar 4 casas quando forem numeros significativos.
Pode acontecer que na mesma nota tenha itens com 2 ou com 4 casas decimais. Sei que vai ficar feio, dasalinhado, mas o cliente que assim,
lembrando que é só para a impressão do DANFE. O resto está correto.
Tentei descobrir onde fazer o if.. then, na leitura do xml para gerar o DANFE. Onde encontro isso ??

Grato.

Postado
3 minutos atrás, Daniel Braz de Oliveira disse:

Primeiramente, quero me penitenciar com a grupo. Eu respondi direto pelo email e não aqui no fórum.
O aumento para 4 casas funcionou perfeitamente, alterando a qtd de casas decimais no componente.
O cliente gostou, mas... sempre tem um mas, ele não quer quando for tipo 5,4700, apareça as 4 casas, quer que despreze os zeros, ficando 5,47.
Só mostrar 4 casas quando forem numeros significativos.
Pode acontecer que na mesma nota tenha itens com 2 ou com 4 casas decimais. Sei que vai ficar feio, dasalinhado, mas o cliente que assim,
lembrando que é só para a impressão do DANFE. O resto está correto.
Tentei descobrir onde fazer o if.. then, na leitura do xml para gerar o DANFE. Onde encontro isso ??

Grato.

Acredito que não tenha como fazer isso, pois a configuração provavelmente deve ser para todo o componente.

Mas esse teu cliente é muito chato, pois isso não tem nada haver.

  • Curtir 1
  • Moderadores
Postado
1 hora atrás, Daniel Braz de Oliveira disse:


O cliente gostou, mas... sempre tem um mas, ele não quer quando for tipo 5,4700, apareça as 4 casas, quer que despreze os zeros, ficando 5,47.
Só mostrar 4 casas quando forem numeros significativos.

Tentou definir desta forma:

Formato: tdetMascara
MaskqCom: ,0.####

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

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