Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gilberto Jr

Arredondamento da Última Parcela

Recommended Posts

Bom dia;

 

Seguinte, mais uma duvida que surgiu no meu sistema que estou quase finalizando. Estou na parte do financeiro.

 

Minha duvida é seguinte, imaginamos o seguinte, o cliente esta fazendo o lançamento de um titulo no valor de R$ 100,00. Esse titulo vai ser divido em 3 vezes.

 

Dividindo o R$ 100,00 / 3 = R$ 33,33333. Só que eu quero é que fique assim, primeira e segunda parcela de R$ 33,00 e a terceira parcela com o valor de R$ 34,00.

 

Colocar valores inteiros em cada parcela e fazer o arredondamento na ultima parcela.

 

Alguém poderia me ajudar nessa situação?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que saiba usar o round(), certo (http://www.criarweb.com/artigos/744.php)

Então, já que não sei se esses dados não estão armazenados, acredito que não, então devem estar numa array temporariamente, pois você vai ter de distribuir eles em parcelas, arredondar cada um, e somá-los novamente para ver quanto vai sobrar para última parcela...

Você não vai poder arredondar a última parcela como disse (talvez tenha apenas explicado errado), pois a última vai ter a sobra, se arredondar o valor total será diferente do original.

serial algo assim na array:

vetor 1: 33,333

vetor 2: 33,333

vetor 3: 33,333

 

usar uma rotina usando round para ir de vetor em vetor arredondando (exceto o último), ficaria:

vetor 1: 33,000
vetor 2: 33,000

somar todos, diminuir do total, e jogar a diferença no último vetor (vetor 3).

vetor 3 = 100 - 66

Confere?


Compartilhar este post


Link para o post
Compartilhar em outros sites

e o correto é fazer uma outra função para verificar o montante da parcela e comparar com as parcelas dividas para ver se são iguais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xan, boa tarde;

 

Eu tenho esse código que faz o insert das parcelas. Teria como você me explicar como ficaria essa função?

 

Segue o código.

valor = "100,00" 'valor da parcela

prazo = "30" 'dias de prazo da data da emissao do boleto

parcela = 3 'quantidade de parcelas

dividido = valor/parcela 'divisão do boleto pela quantidade de parcelas

data = "19/08/2015"

if data = "" then
	data = date()
end if

data	= DateAdd("d", cint(prazo), data)

ParcelaInicial 	= 1
ParcelaFinal	= request.Form("parcelas")'O QUE VEM DO FORM


for i = ParcelaInicial to ParcelaFinal


data = DateAdd("d", cint(prazo), formatdatetime(data,2))

set buscaparcela = conn.execute("select count(*) as parcela from tec_contaspagar where numero_documento='"&request.Form("documento")&"' and tipo='A' and id_fornecedor='"&request.Form("fornecedor")&"'") 'busco a parcela com o valor maior na tabela


parc = buscaparcela("parcela") 'numero da parcela que vem do banco

parc2 = cint(parc)+1 'soma a parcela que vem do banco com mais 1

set insertcpg = conn.execute("insert into tec_contaspagar (numero_documento, tipo, data, parcela, valor_parcela, data_vencimento, tipo_pgto, id_rede, id_cliente, id_fornecedor,acertado, user_system, observacao, dataregistro) values ('"&request.Form("documento")&"','A','"&mask_data(request.Form("dataemissao"))&"','"&parc2&"','"&replace(replace(formatcurrency(dividido),",","."),"R$","")&"','"&mask_data(data)&"','"&request.Form("formapgto")&"','99','439','"&request.Form("fornecedor")&"',1,'"&session("nome")&"','"&request.Form("observacao")&"','"&mask_data(Date)&"')") 'faz o insert no banco de dados
next

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo, assim: vc executa sua função que vai gerar as três parcelas, depois vc soma as parcelas novamente para ver se o total é igual ao valor inicial que foi parcelado. Muitos não fazem e acabam perdendo centavos em cada parcelamento, que no final com vários produtos tem um desfalque na receita. entendeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alexandre, estou quase finalizando esse processo.

 

Eu fiz da seguinte forma, peguei o valor real, dividi por 3. Coloquei a função Round em cada parcela. Sendo assim quando eu termino de fazer o insert da parcelas no banco de dados eu faço a soma. Tento a soma de todas as parcelas eu pego e diminou o valor real pelo valor da soma das parcelas.

 

Tendo a diferença eu somo com o valor da ultima parcela sendo assim ele me da o valor exato do titulo.

 

Ficou assim o meu código

valor = request.Form("valordocumento")

prazo = request.Form("prazoparcela")

parcela = request.Form("parcelas")

dividido = valor/parcela

data = request.Form("dataemissao")

if data = "" then
	data = date()
end if

data	= DateAdd("d", cint(prazo), data)

ParcelaInicial 	= 1
ParcelaFinal	= request.Form("parcelas")'O QUE VEM DO FORM


for i = ParcelaInicial to ParcelaFinal

data = DateAdd("d", cint(prazo), formatdatetime(data,2))

set buscaparcela = conn.execute("select count(*) as parcela from tec_contaspagar where numero_documento='"&request.Form("documento")&"' and tipo='A' and id_fornecedor='"&request.Form("fornecedor")&"'")

parc = buscaparcela("parcela")

parc2 = cint(parc)+1

set insertcpg = conn.execute("insert into tec_contaspagar (numero_documento, tipo, data, parcela, valor_parcela, data_vencimento, tipo_pgto, id_rede, id_cliente, id_fornecedor,acertado, user_system, observacao, dataregistro) values ('"&request.Form("documento")&"','A','"&mask_data(request.Form("dataemissao"))&"','"&parc2&"','"&round(dividido)&"','"&mask_data(data)&"','"&request.Form("formapgto")&"','99','439','"&request.Form("fornecedor")&"',1,'"&session("nome")&"','"&request.Form("observacao")&"','"&mask_data(Date)&"')")
next


set somaparcela = conn.execute("select sum(valor_parcela) as totalparcela from tec_contaspagar where numero_documento='"&request.Form("documento")&"' and tipo='A'")

set ult_parcela = conn.execute("select parcela as ultimaparcela, valor_parcela from tec_contaspagar where numero_documento='"&request.Form("documento")&"' and tipo='A' order by parcela desc limit 0,1")


valor = request.Form("valordocumento")
totalpacela = somaparcela("totalparcela")
ultimaparcela = ult_parcela("valor_parcela")
valoreal = (valor)-(totalpacela)
valor_real_ultima_parcela = replace(ultimaparcela+valoreal,",",".")

set update_parcela = conn.execute("update tec_contaspagar set valor_parcela='"&valor_real_ultima_parcela&"' where numero_documento='"&request.Form("documento")&"' and tipo='A' and parcela='"&ult_parcela("ultimaparcela")&"'")

Muito Grato!!

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

11880385_954747897902340_152711616613589

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.