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

8 comentários em “PHP: Função para gerar parcelas com dia de vencimento fixo (melhorado)

  • 30 de abril de 2011 em 14:25
    Permalink

    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.

    Resposta
  • 24 de setembro de 2012 em 12:39
    Permalink

    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!

    Resposta
  • 21 de agosto de 2015 em 9:14
    Permalink

    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.

    Resposta
  • 26 de abril de 2016 em 12:50
    Permalink

    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.

    Resposta
  • 8 de março de 2019 em 14:12
    Permalink

    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?

    Resposta

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *