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
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.