Ir para conteúdo
  • Cadastre-se

Total do Desconto difere do somatorio dos itens.


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

Recommended Posts

Postado (editado)

Olá sou novo aqui,

Estou com esse problema ao fazer o rateio do desconto nos itens.

quando por exemplo lanço um desconto de 19.93

ele me retorna Total do Desconto difere do somatorio dos itens (vDesc informado: 19.93, vDesc calculado: 19.92).

No xml os dois itens estão, assim não fechando o valor:

item 1

     <vProd>75.00</vProd>
     <vDesc>9.96</vDesc>
 
     item 2
 
    <vProd>75.00</vProd>
    <vDesc>9.96</vDesc>
 
   codigo
	if (CDSNota.FieldByName('VALOR_DESCONTO').AsFloat > 0) then
		Prod.vDesc := RoundTo(((CDSNota.FieldByName('VALOR_DESCONTO').AsFloat/cdsNfSaidaDetalheSUBTOTAL_GERAL.AsVariant)*Prod.vProd),-2)
	else
    	Prod.vDesc := 0;

 
Editado por Wellissonr
Postado
20 minutos atrás, Edy disse:

Já tentou usar o mesmo método de arredondamento direto no vDesc? o problema neste arredondamento final do total.

Opa, não entendi a sua pergunta.

  • Moderadores
  • Solution
Postado

Para os casos de rateio você sempre deve considerar a "sobra" em cada arredondamento, e ir somando numa variável. 

Após passar todos os itens, acrescentar a sobra ao desconto do item de maior valor.

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

Projeto ACBr

 

 

Postado
Em 05/09/2017 at 16:13, BigWings disse:

Para os casos de rateio você sempre deve considerar a "sobra" em cada arredondamento, e ir somando numa variável. 

Após passar todos os itens, acrescentar a sobra ao desconto do item de maior valor.

Poderia me citar um exemplo usando esta "sobra" ?

  • Moderadores
Postado
11 minutos atrás, Wellissonr disse:

Poderia me citar um exemplo usando esta "sobra" ?

if (CDSNota.FieldByName('VALOR_DESCONTO').AsFloat > 0) then
begin
  Prod.vDesc := RoundTo(((CDSNota.FieldByName('VALOR_DESCONTO').AsFloat/cdsNfSaidaDetalheSUBTOTAL_GERAL.AsVariant)*Prod.vProd),-2)
  Sobra := Sobra + (CDSNota.FieldByName('VALOR_DESCONTO').AsFloat/cdsNfSaidaDetalheSUBTOTAL_GERAL.AsVariant)*Prod.vProd) - Prod.vDesc;
end
else
  Prod.vDesc := 0;

 

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

Projeto ACBr

 

 

  • 2 meses depois ...
  • 1 ano depois...
  • Este tópico foi criado há 2756 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...