Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amantes do PHP :D
estou com um problema aqui no sistema que estou fazendo:
Pego a data do primeiro vencimento e coloco na primeira parcela e a cada parcela são somados 30 dias à data da parcela anterior, ou se preferirem assim,
data do primeiro vencimento + 30 dias (1ª parcela), +60 dias (2ª parcela), +90 dias (3ª parcela) e assim sucessivamente.
segue o código para análise http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
$idcli = seguro($_POST['id']);
$valortotal = (float)str_replace(',','.',seguro($_POST['valortotal']));
$numparc = seguro($_POST['numero']);
$vcto = seguro($_POST['vencimento']);
$contador = "0";
if(isset($_POST['submit'])) {
$valorparcela = $valortotal / $numparc;
while($contador < $numparc-1) {
$valor = (int)$valorparcela;
$contador++;
$query = "INSERT INTO financeiro VALUES (NULL, '$idcli', '$valor', '$contador', '$vencimento', '$status')";
$query2 = mysql_query($query) or die(mysql_error());
if($query2){
echo "<center><strong>Parcela $contador cadastrada com sucesso!</strong></center><br />";
} else {
echo "Erro ao cadastrar parcela";
}
}
$contador++;
$valor = $valortotal - (int)$valorparcela*($numparc-1);
$query = "INSERT INTO financeiro VALUES (NULL, '$idcli', '$valor', '$contador', '$vencimento', '$status')";
$query2 = mysql_query($query) or die(mysql_error());
if($query2){
echo "<center><strong>Parcela $contador cadastrada com sucesso!</strong></center><br />";
} else {
echo "Erro ao cadastrar parcela";
}
}
abraçode uma olhada nesse topico ... tem uma solucao boa do beraldo .. e tambem tem uma minha so que eh mais trabalhosa ^^
http://forum.imasters.com.br/index.php...aded&start=
valww espero ter ajudado
$vencimentos = array();
$numeroParcelas = 5;
$data = '25/05/2009';
$arrayData = explode('/',$data);
for ($i=0; $i<$numeroParcelas; $i++) {
$vencimentos[$i] = date('d/m/Y',mktime(0,0,0,$arrayData[1],$arrayData[0]+$i*30,$arrayData[2]));
}
lembrando que não eh muito eficiente fazer a soma de 30 em 30 dias como você comentou, por que existem meses que sao 30 dias outros 31... e isso acaba causando um atraso nas parcelas a longo prazo... o mais eficiente seria
for ($i=0; $i<$numeroParcelas; $i++) {
$vencimentos[$i] = date('d/m/Y',mktime(0,0,0,$arrayData[1]+$i,$arrayData[0],$arrayData[2]));
}
Soma 1 mes a cada parcela.Só que geraria outro problema... Pode acabar colocando dia 31 de fevereiro...
O mais correto é somar 30 dias, mas usando uma função de soma de data...
function SomarData($data, $dias, $meses = 0, $ano = 0)
{
/www.brunogross.com/
//passe a data no formato dd/mm/yyyy
$data = explode("/", $data);
$newData = date("d/m/Y", mktime(0, 0, 0, $data[1] + $meses,
$data[0] + $dias, $data[2] + $ano) );
return $newData;
}>
Só que geraria outro problema... Pode acabar colocando dia 31 de fevereiro...
O mais correto é somar 30 dias, mas usando uma função de soma de data...
function SomarData($data, $dias, $meses = 0, $ano = 0)
{
/www.brunogross.com/
//passe a data no formato dd/mm/yyyy
$data = explode("/", $data);
$newData = date("d/m/Y", mktime(0, 0, 0, $data[1] + $meses,
$data[0] + $dias, $data[2] + $ano) );
return $newData;
}mktime nao gera datas inexistentes... o q pode acontecer eh ele jogar o vencimento de fevereiro para março.
Mas se a idéia é fazer uma parcela a cada 30 dias, é assim que tem que ser... se cair em uma data inexistente, ele joga pra frente...
Carlos Eduardo
detalhe:
data = dd/mm/yyyy