PHP

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

13 thoughts on “PHP: Função para gerar parcelas com dia de vencimento fixo (melhorado)

  • 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
  • Renata

    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
  • Alysson

    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
  • FABIANO A ALMEIDA

    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
  • VALDEVY PIRES

    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
  • Alexandre Moreira

    E como faz se for, por exemplo, uma academia, onde não há número definido de parcelas?

    Resposta
    • Fala Alexandre,

      Não sei se entendi bem a sua dúvida, mas você poderia ter um input de parcelas para cada aluno.

      Resposta
  • Gabriel Oliveira

    Esse script pula fevereiro caso a parcela seja do dia 29 pra frente, fiquem atentos, vou tentar corrigir isso e posto aqui!

    Resposta
    • Fala Gabriel,

      Valeu pelo comentário. Ajudará os demais que acessarem este post.

      Resposta
  • Alguém sabe como gerar as parcelas por dias de intervalo? Exemplo: 14, 20 ou 30 dias.

    Resposta

Deixe um comentário

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