DISTRIBUI?ÃO DE DESCONTO NOS ITEMS

FBGSYSTEMS 16/07/2015 21:17:25
#448951
Estou truncando com 2 casas decimais..preciso dessa funçao por causa do Ecf.
Tentei arredondando com o format com 2 casasdecimais e nao deu certo.
Tentei com 3 casas para efeito de teste e. Tbm nao deu.
Estou sem o projeto agr. Mas qqr valores quebrados ai da pra testar.
Estou pesquisando pois duvido q eu sou o primeiro a passar por isso.
NILSONTRES 16/07/2015 21:18:41
#448952
Resposta escolhida
Simples, Não se começa fazendo a matemática somando a sobra e sim subtração e depois a divisão.
FBGSYSTEMS 16/07/2015 21:31:22
#448953
Como assim Nilson?
Ate entendi oq vc quis dizer..mas nao vi onde aplicar no meu problema.
NILSONTRES 16/07/2015 21:42:37
#448954
FBG,
Cara desculpas, acabei pensando só no caso do KERPLUNK,
SEGUE AI A FORMA QUE EU FAÇO:

Private Function RateiaDesconto() As Boolean
Try
[ô]**Descobre o percentual de desconto no total da venda
[ô]**Multiplica o valor do desc por 100 e divide pelo subtotal da venda
[ô]**EX: SubTot da venda=65,00 e Desc Total=32,00 32*100=3200 dividido por 65,00=49,23%, então PercentDesc=49,23
Dim PercentDesc As Double = TXT_DESCTOT.Text * 100 / TXT_SUBTOT.Text

[ô]**Faz um loopin na grade de itens
Dim _Itens As Integer = GRID_ITENS.Rows.Count
For i = 0 To _Itens - 1
[ô]**Descobre o valor do desconto em reais do item.Ex: Subtotal do item / 100 * PercentDesc(49,23%)
Dim V_VLR_ITEM As Double = Me.GRID_ITENS.Rows(i).Cells(ISUBTOT.Name).Value / 100 * PercentDesc [ô]O VALOR DO ITEM MENOS O DESCONTO ATUAL
Me.GRID_ITENS.Rows(i).Cells(IVLRDESC.Name).Value = FormatNumber(V_VLR_ITEM, 2)
[ô]**Percentual de desconto
Me.GRID_ITENS.Rows(i).Cells(IPERCENTDESC.Name).Value = PercentDesc
[ô]**APLICA O DESCONTO
Me.GRID_ITENS.Rows(i).Cells(ITOTITEM.Name).Value = FormatNumber(Me.GRID_ITENS.Rows(i).Cells(ISUBTOT.Name).Value - FormatNumber(V_VLR_ITEM, 2), 2)
Next
Catch
MsgBox(Err.Description & vbCrLf & Err.GetException.StackTrace, MsgBoxStyle.Critical, [Ô]RATEIRO DE DESCONTOS[Ô])
Return False
End Try
Return True
End Function
JABA 16/07/2015 22:03:14
#448956
FBGSYSTEMS, certamente o erro está na função [Ô]Truncar[Ô]. Ela está fazendo o arredondamento nas casas decimais. Por favor, coloque-a aí pra gente poder dar uma olhada.
JABA 16/07/2015 22:08:06
#448957
Outra coisa: Como está declarado essa variável varDescontoPor? Se deixar por conta da IDE, acho que ficará como Integer. Nesse caso, teria que trocar para Double.
JABA 16/07/2015 23:00:22
#448958
Acho que já descobri.

Em vez de fazer assim:

varDescontoPor = Format((CDbl(txtDescontoTotal) * 100 / CDbl(lblTotal)), [Ô]#####,##0.00[Ô])

Faça assim:

varDescontoPor = Format((CDbl(txtDescontoTotal) / 100 * CDbl(lblTotal)), [Ô]#####,##0.00[Ô])
FBGSYSTEMS 17/07/2015 11:34:33
#448980
Parece que o problema maior tb estava no format.
Fiz a formatação so no ultimo momento.. os calculos todos foram com todas casas decimais. Parece que funcionou.
A inversao de casas que o NILSONTRES postou nao resolveu.. Em cada subtração eu arredondada pra cima o valor.. oq fazia dar a diferença no final..

Vou continuar testando e ver o que mais eu acho.

JABA 17/07/2015 13:15:57
#448987
FBGSYSTEMS, não se esqueça que o arredondamento pode estar sendo feito errôneamente nos dados que você está comparando também. Tem que fazer os cálculos seguindo a mesma forma nos dois casos.
FBGSYSTEMS 17/07/2015 14:02:47
#448993
Sim.. os calculos para distribuição do desconto esta sem formatação.
Esou usando o format apenas quando o desconto final é exibido e subtraido do valor total.
Página 2 de 3 [21 registro(s)]
Tópico encerrado , respostas não são mais permitidas