DISTRIBUI?ÃO DE DESCONTO NOS ITEMS
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.
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.
Simples, Não se começa fazendo a matemática somando a sobra e sim subtração e depois a divisão.
Como assim Nilson?
Ate entendi oq vc quis dizer..mas nao vi onde aplicar no meu problema.
Ate entendi oq vc quis dizer..mas nao vi onde aplicar no meu problema.
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
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
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.
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.
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[Ô])
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[Ô])
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.
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.
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.
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.
Esou usando o format apenas quando o desconto final é exibido e subtraido do valor total.
Tópico encerrado , respostas não são mais permitidas