Ir para conteúdo

POWERED BY:

Arquivado

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

SHWE12

Gerar Data de Vencimento de acordo com Parcelas

Recommended Posts

Boa tarde

estou desenvolvendo um sistema onde eu coloco a quantidade de parcelas e a data do primeiro vencimento e gostaria que o sistema calcula-se para mim a partir da data do primeiro vencimento as outras parcelas automaticamente

 

ex:

Parcelas = 4

Data da Primeira Parcela = 20/11/2010

 

Parcela 01 = 20/11/2010

Parcela 02 = 20/12/2010

Parcela 03 = 20/01/2011

Parcela 04 = 20/02/2011

 

To quebrando a cuca aqui e nada ainda...

está ai o código feito até o momento...

 


$cliente = $_POST['cliente'];
	$valor = $_POST['valor'];
	$parcelas = $_POST['parcelas'];
	$primeiro_vencimento = $_POST['primeiro_vencimento'];
	$observacoes = $_POST['observacoes'];
	
	$pr_vencimento = implode(preg_match("~\/~", $primeiro_vencimento) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $primeiro_vencimento) == 0 ? "-" : "/", $primeiro_vencimento)));
	
	
	//EXIBE OS PRODUTOS DA CESTA
	for($i=0; $i<($parcelas); $i++) 
	{ 
			
		$consulta = "INSERT INTO pagamento 
        VALUES (null,
        '$cliente',
		'$valor',
		'$cont/$parcelas',
		'$data_vencimento',
		'$observacoes',
		'aberto')";
				
		
		mysql_select_db($base_dados, $conexao);
		$Result1 = mysql_query($consulta, $conexao) or die(mysql_error());
		$cont = $cont+1;
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

procura no forum tem varios topicos de calculo com datas

 

basicamente você pode transformar a data com o mktime e depois fazer calculos como +1month ai faz automatico o calculo essas passagens de ano... mes com 30 ou 31 dias etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode utilizar o mktime da seguinte forma:

for($i = 1;$i < $parcelas;$i++){
  $datas[]= mktime(0, 0, 0, 20, 11+$i, 2010)
}

O maktime corrige a data se for gerado em um intervalo inválido exemplo:

se o resultado for 01/13/2010 ele gera 01/01/2011.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Leandro,

 

Desculpe mas não entendi muito bem o que você me passou no código..

 

SHWE12,

Não tive tempo de montar um exemplo melhor.

Mas, a lógica é a seguinte vocẽ percorre um 'for' fom a quantidade de parcelas e o mktime vai te dat a data de cada parcela seguinte.

 

Outro exemplo:

$parcelas = 4;
$data = explode('/','20/11/2010');
for($i = 1;$i < $parcelas;$i++){
  $retorno = mktime(0, 0, 0, $data[0], $data[1]+$i, $data[2]);
  echo date('d/m/Y',$retorno).'<br>';
}

Não testei. Mas, esse exemplo deve imprimir:

20/01/2011

20/02/2011

20/03/2011

 

SHWE12,

 

Desculpe, o exemplo que postei anteriormente tinha um erro.

Ele acrescenta um dia e não um mês a data.

 

No link abaixo, postei o código novamente com as devidas correções.

 

http://www.chaves.in/2010/11/como-gerar-data-de-vencimento-de-acordo-com-quantidade-de-parcelas/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Semana passada já foi peguntado isso umas 4x:

 

<?php
$dataInicial = DateTime::createFromFormat('d/m/Y', '08/11/2010');
$somaIntervalo = DateInterval::createFromDateString('15 days'); 


foreach(new DatePeriod($dataInicial, $somaIntervalo, 5, DatePeriod::EXCLUDE_START_DATE) as $proxPeriodo) {
 echo $proxPeriodo->format('d/m/Y') . "
";
}
?> 

Mais simples que isso, só fazendo pra você.

 

 

@Leandro Chaves

 

O seu código irá retornar:

12/08/2011

13/08/2011

14/08/2011

 

 

O código certo usando mktime seria:

 

<?php
$parcelas = 4;
$data = explode('/', '16/11/2010');
$somar_x_dias = 30;
for($i = 0 ;$i < $parcelas; $i++){
	echo date('d/m/Y', mktime(0, 0, 0, $data[1], $data[0] + $somar_x_dias, $data[2])) , '<br />';
	$data = explode('/', date('d/m/Y', mktime(0, 0, 0, $data[1], $data[0]+$somar_x_dias, $data[2])));
}
?>

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.