JOGAR QUEBRADOS EM UMA PARCELA
pessoal, faço uma venda, divide em 5 parcelas por ex:, como faço pra pegar os quebrados e jogar apenas em uma delas para que as outras fiquem redondas.
Futura bom dia,
Fiz um fundo de caixa ao qual eu utilizei o seguinte processo:
O processo iniciava com a divisão do total pelo número de parcelas
depois subtraia 1 parcela do montante
fazia um código com loop para gerar o valor da divisão x o número de (parcelas -1)
fazia outro código para adicionar esta última parcela que era: (valor total da venda) -(a soma das parcelas -1 * o valor da parcela)
assim você pode escolher se quer a diferença na primeira ou na última.
funcinou perfeitamente.
Fiz um fundo de caixa ao qual eu utilizei o seguinte processo:
O processo iniciava com a divisão do total pelo número de parcelas
depois subtraia 1 parcela do montante
fazia um código com loop para gerar o valor da divisão x o número de (parcelas -1)
fazia outro código para adicionar esta última parcela que era: (valor total da venda) -(a soma das parcelas -1 * o valor da parcela)
assim você pode escolher se quer a diferença na primeira ou na última.
funcinou perfeitamente.
Futura
Vc quer algo assim
17 / 5 = 3,4 em 4 parcelas de 3 e a última de 5? pois pegaria os 3 restantes e acrescentaria o 0,4 das 4 primeiras parcelas?
sinkertec é isto sim.
Primeiro você tera que saber se seu cliente que esse valor maior, na primeira ou na ultima parcela.
Depois: você tem o valor total como o exemplo do sinkertec, 17.
Depois você ira dividir o valor por 5, 17/5.
arredondando a divisão ira dar 3
depois você ira somar todos os textbox ou seja, = 15
depois faça 17 - 15 que sera = 2 e pegue o seu ultimo(ou primeiro) textbox e some 3(valor do textbox) + 2(valor da diferença entre o total e os textbox)
Depois: você tem o valor total como o exemplo do sinkertec, 17.
Depois você ira dividir o valor por 5, 17/5.
arredondando a divisão ira dar 3
depois você ira somar todos os textbox ou seja, = 15
depois faça 17 - 15 que sera = 2 e pegue o seu ultimo(ou primeiro) textbox e some 3(valor do textbox) + 2(valor da diferença entre o total e os textbox)
Pelo que eu vejo por aÃ, a diferença é jogada na primeira parcela.
exemplo:
valor: 100,00
parcelas: 3
valor da demais parcelas com o resultado truncado:
valor / quantidade de parcela
100,00 / 3 = 33,33
valor da primeira parcela:
valor - (valor das demais parcelas * (quantidade de parcela - 1))
100,00-(33,33*2)=33,34
outro exemplo:
valor: 105,75
parcelas: 7
valor das demais parcelas: 105,75 / 7 = 15,10
valor da primeira parcela: 105,75-(15,10*6) = 15,15
exemplo:
valor: 100,00
parcelas: 3
valor da demais parcelas com o resultado truncado:
valor / quantidade de parcela
100,00 / 3 = 33,33
valor da primeira parcela:
valor - (valor das demais parcelas * (quantidade de parcela - 1))
100,00-(33,33*2)=33,34
outro exemplo:
valor: 105,75
parcelas: 7
valor das demais parcelas: 105,75 / 7 = 15,10
valor da primeira parcela: 105,75-(15,10*6) = 15,15
Bom ...tenta isso: Exemplo
txtValor = 17
txtParcelas = 5
For X = Text2 To 1 Step -1
txtValParc = Int(Text1 / X)
List1.AddItem txtValParc
Text1 = Text1 - txtValParc
Next X
Ficarão 3 parcelas de 3 e 2 de 4..sem quebrados
Ou assim
txtValor = 17
txtParcelas = 5
txtValParc = Int(Text1 / Text2)
For X = 1 To Text2 - 1
List1.AddItem txtValParc
Next X
Sobra = Text1 - ((X - 1) * txtValParc)
List1.AddItem Sobra
ficando como exemplifiquei lá emcima
Eu fiz esta Função e ficou beleza.
Veja bem usando o MOD ficaria fácil mas apenas para valor inteiros ex: 157, mas quando o valor total é fracionado (157,30) ele elimina os centavos, entà o fiz um POG que resolveu o problema.
sta função foi desenvolvida para apresentar o resultado em um listbox, mas pode ser alterada, o valor deve ser colocado como moeda, ou seja mesmo que seja um valor inteiro ex(100) deve ser apresentado assim (100,00) como string.
eis a função
para usa-la
e pronto
Veja bem usando o MOD ficaria fácil mas apenas para valor inteiros ex: 157, mas quando o valor total é fracionado (157,30) ele elimina os centavos, entà o fiz um POG que resolveu o problema.
sta função foi desenvolvida para apresentar o resultado em um listbox, mas pode ser alterada, o valor deve ser colocado como moeda, ou seja mesmo que seja um valor inteiro ex(100) deve ser apresentado assim (100,00) como string.
eis a função
Function Parcelas(ValorTotal As String, QuantParcelas As Double, lst As ListBox)
Dim MenorParcela As Double
Dim MaiorParcela As Double
Dim Parte() As String
Dim Resto As Double
Parte = Split(ValorTotal, [Ô],[Ô])
Resto = (CInt(Parte(0)) Mod QuantParcelas)
MenorParcela = (CInt(Parte(0)) - Resto) / QuantParcelas
MaiorParcela = (CInt(Parte(0)) - Resto) / QuantParcelas + Resto + CDbl(Parte(1) / 100)
For f = 1 To QuantParcelas - 1
lst.AddItem Format(f, [Ô]00[Ô]) & [Ô] = [Ô] & Format(MenorParcela, [Ô]currency[Ô])
Next f
lst.AddItem Format(QuantParcelas, [Ô]00[Ô]) & [Ô] = [Ô] & Format(MaiorParcela, [Ô]currency[Ô])
End Function
para usa-la
Private Sub Command1_Click()
Parcelas [Ô]100,00[Ô], 3, List1[txt-color=#007100] [ô]Parcelas (Valor, Quantidade de Parcelas, nome do listbox)[/txt-color]
End Sub
e pronto
NA VERDADE EU PEGO UM VALOR TOTAL E APLICO DESCONTO OU ACRéSCIMO ( DEPENDE DO PLANO DE VENDA) AI DIVIDO PELA QTDE DE PARCELAS E JOGO EM UM LISTVIEW COLOCANDO OS VECTOS CONFORME OS INTERVALOS DO PLANO DE VENDA, ATé AQUI TA BLZ, SÓ Q NÃO JOGA OS QUEBRADOS PARA UMA APENAS, VOU TESTAR AS OPÇÕES QUE VCS PASSARAM.
Tópico encerrado , respostas não são mais permitidas