PHP: Função para gerar parcelas com dia de vencimento fixo (melhorado)
Função aprimorada pelo Igor Botani Gonçalves do Estudio Digital, contribuindo com os leitores desse blog.
Detalhes:
– não é obrigatório passar a data.
– se não passar data alguma a função vai contar que o primeiro vencimento é hoje.
– já tem todas as validações possíveis.
– se a primeira parcela é dia 30/01, a segunda será no começo de março e a terceira parcela será 30/03.
– está preparada para ano bissexto.
<?php function calcularParcelas($nParcelas, $dataPrimeiraParcela = null){ if($dataPrimeiraParcela != null){ $dataPrimeiraParcela = explode( "/",$dataPrimeiraParcela); $dia = $dataPrimeiraParcela[0]; $mes = $dataPrimeiraParcela[1]; $ano = $dataPrimeiraParcela[2]; } else { $dia = date("d"); $mes = date("m"); $ano = date("Y"); } for($x = 0; $x < $nParcelas; $x++){ echo date("d/m/Y",strtotime("+".$x." month",mktime(0, 0, 0,$mes,$dia,$ano))),"<br/>"; } } echo "Calcula as parcela a partir de hoje<br/>"; calcularParcelas(5); echo "<br/><br/>"; echo "Calcula as parcela a partir de uma data qualquer<br/>"; calcularParcelas(5, "31/08/2011"); ?> |
Resultado:
Calcula as parcela a partir de hoje
28/04/2011
28/05/2011
28/06/2011
28/07/2011
28/08/2011
Calcula as parcela a partir de uma data qualquer
31/08/2011
01/10/2011
31/10/2011
01/12/2011
31/12/2011
Agora me diga…. eu quero pegar essas parcelas e colocar no Bd, e como faço para tipo pegar $parcela1, $parcela2, $parcela3e assim por diante quantas forem geradas ? eu não queria só imprimir elas e sim armazena-las … valew. aguardo retorno.
Olá Réuryky,
foi criado um post para responder a sua dúvida:
http://www.linhadecomando.com/php/php-gravando-parcelas-no-mysql
Olá, achei esta função e está me ajudando muito. Porém, ele conta exatamente 30 dias após o primeiro vencimento. OU seja, se cair no dia 31/08, podera cair duas datas no mesmo mês. o Interessante seria que as parcelas fossem uma em cada mês. Independente de ter dado 30 dias ou não. Você poderia me ajudar com isso?
Obrigada e parabéns pelo trabalho!
Muito bom seu artigo, tenho uma dúvida, como que faço para caso a data seja 31/10/2014 ele gere 30/11/2014, 31/12/2014, 31/01/2015, 28/02/2015, 31/03/2015. Tipo ele geraria a partir de um vencimento que no caso seria 31 ai ele iria calcular e ver os meses que fosse de 30 dias ele jogaria para dia 30 e o mês de fevereiro ele iria colocar para dia 28.
Olá Alysson.
Neste link http://www.webdeia.com.br/detalhes/gerador-de-parcelas eu vendo um script que faz exatamente o que você quer.
Tem algum scrypt para: gerar vencimento fixo para as contas de um cliente, é para um supermercado, então o cliente compra todo o dia e o sistema tem de gerar as parcelas para o dia escolhido, estou tendo problemas com o fevereiro – 28 e com os meses com 31.
Pessoal, boa tarde!
Eu gostaria de gravar o número de cada parcela no DB. Se o usuário escolher pagar em várias vezes, tipo 4 parcelas, gostaria de gravar o número de cada parcela gerada de acordo com os vencimentos, ou seja:
Vencimento Parcela
30/03/2019 01
30/04/2019 02
30/05/2019 03
30/06/2019 04
Como eu faria isto em PHP?
Olá Valdevy,
neste post http://www.linhadecomando.com/php/php-gravando-parcelas-no-mysql explico como gravar a parcela no BD.
Abraço
E como faz se for, por exemplo, uma academia, onde não há número definido de parcelas?
Fala Alexandre,
Não sei se entendi bem a sua dúvida, mas você poderia ter um input de parcelas para cada aluno.
Esse script pula fevereiro caso a parcela seja do dia 29 pra frente, fiquem atentos, vou tentar corrigir isso e posto aqui!
Fala Gabriel,
Valeu pelo comentário. Ajudará os demais que acessarem este post.
Conseguiu resolver essa questão?
Alguém sabe como gerar as parcelas por dias de intervalo? Exemplo: 14, 20 ou 30 dias.