Ir para conteúdo
  • Cadastre-se

dev botao

Total do Desconto difere do somatorio dos itens.


Ver Solução Respondido por BigWings,
  • Este tópico foi criado há 2215 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á 2215 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...