ghostring 0 Denunciar post Postado Agosto 10, 2015 Olá escrevi este objeto para calcular parcelas por mes e por dia, porem nao esta funcionando, sera que alguem pode dar uma luz nesse codigo? class IFPagamento { public $forma; public $mes; public $ano; public $total; public $numero_parcelas; public $primeiro_vencimento; public $bomba; public $vencimentos; public $vencimentobd; public $dia; public $primeiro_mes; public $valor_parcela; public function __construct($valor,$texto,$dia) { $this->forma = $texto; $this->total = $valor; $this->bomba = explode(';',$texto); $this->PrimeiroVencimento(); $this->Parcelas(); $this->dia = $dia; // passar aqui a data do pedido como vencimento $this->Intervalo(); $this->valor_parcela = ($valor / $this->numero_parcelas); $this->ano = substr($dia,0,4); $this->mes = substr($dia,5,2); } public function PrimeiroVencimento() { if($this->bomba[0] == 'hoje') { $this->primeiro_vencimento = date("d"); } else { $this->primeiro_vencimento = $this->bomba[0]; } } public function Parcelas() { $this->numero_parcelas = $this->bomba[1]; } public function Intervalo() { if($this->bomba[2] == 'mensal') { $dia = $this->primeiro_vencimento; echo '<p>Dia: '.$dia.'</p>'; if($dia < 10) { $dia = '0'.$dia; } $mes = $this->mes; $ano = $this->ano; for($x = 0; $x < $this->numero_parcelas; $x++) { $this->vencimentos[$x] = date("d/m/Y",strtotime('+'.$x.' month',mktime(0, 0, 0,$mes,$dia,$ano))); $this->vencimentobd[$x] = date("Y-m-d",strtotime('+'.$x.' month',mktime(0, 0, 0,$mes,$dia,$ano))); // o problema esta nesta parte do date q calcula o proximo mes... } } else { } } } Compartilhar este post Link para o post Compartilhar em outros sites
Higor Roberto 2 Denunciar post Postado Agosto 10, 2015 Olá, só para eu entender... Quando você cria o objeto qual é o parâmetro que você passa para essa classe? Em especial a $texto. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Agosto 10, 2015 PHP já tem isso pronto $datas = new DatePeriod(new DateTime('2015-02-10'), new DateInterval('P1M'), 10); foreach($datas as $data) { echo $data->format('d/m/Y'),'<br>'; } 10 = parcelas Compartilhar este post Link para o post Compartilhar em outros sites
ghostring 0 Denunciar post Postado Agosto 10, 2015 Acabei resolvendo dessa forma porque a versão que estou utilizando não possui esse dateperiod. class IFPagamento { public $forma; public $mes; public $ano; public $total; public $numero_parcelas; public $primeiro_vencimento; public $bomba; public $vencimentos; public $vencimentobd; public $dia; public $primeiro_mes; public $valor_parcela; public function __construct($valor,$texto,$dia) { $this->forma = $texto; $this->total = $valor; $this->bomba = explode(';',$texto); $this->PrimeiroVencimento(); $this->Parcelas(); $this->dia = $dia; // passar aqui a data do pedido como vencimento $this->valor_parcela = ($valor / $this->numero_parcelas); $this->ano = substr($dia,0,4); $this->mes = substr($dia,5,2); $this->Intervalo(); } public function ValorParcela() { $this->valor_parcela = $this->total / $this->bomba[1]; } public function PrimeiroVencimento() { if($this->bomba[0] == 'hoje') { $this->primeiro_vencimento = date("d"); } else { $this->primeiro_vencimento = $this->bomba[0]; } } public function Parcelas() { $this->numero_parcelas = $this->bomba[1]; } public function DiasnoMes($mes,$ano) { $ano = $ano; // Ano atual $ultimo_dia = date("t", mktime(0,0,0,$mes,'01',$ano)); // Mágica, plim! return $ultimo_dia; } public function Intervalo() { $dia = ($this->primeiro_vencimento); $mes = 1 * $this->mes; $ano = 1 * $this->ano; if($this->bomba[2] == 'mensal') { if(strlen($dia) < 2) { $dia = '0'.$dia; } for($i=0;$i < $this->numero_parcelas; $i++) { $mes++; if($mes > 12) { $mes = 1; $ano++; } if(strlen($mes) < 2) { $mes = '0'.$mes; } if($dia > ($this->DiasnoMes($mes,$ano))) { $this->vencimentos[$i] = ($this->DiasnoMes($mes,$ano)).'/'.$mes.'/'.$ano; $this->vencimentobd[$i] = $ano.'/'.$mes.'/'.($this->DiasnoMes($mes,$ano)); } else { $this->vencimentos[$i] = $dia.'/'.$mes.'/'.$ano; $this->vencimentobd[$i] = $ano.'-'.$mes.'-'.$dia; } } } else { for($i=0; $i < ($this->numero_parcelas); $i++) { $dia = $dia + $this->bomba[2]; if($dia > ($this->DiasnoMes($mes,$ano))) { $dia = $dia - ($this->DiasnoMes($mes,$ano)); $mes = $mes + 1; if($mes > 12) { $mes = 1; $ano = $ano + 1; } } if((strlen($dia)) < 2) { $dia = '0'.$dia; } if((strlen($mes)) < 2) { $mes = '0'.$mes; } $this->vencimentos[$i] = $dia.'/'.$mes.'/'.$ano; $this->vencimentobd[$i] = $ano.'-'.$mes.'-'.$dia; } } } public function __destruct() { } } O $texto eh preenchido da seguinte maneira Por exemplo venda a vista hoje fica: hoje;1;hoje Entrada dia 10 em 3x sem juros: 10;3;mensal Entrada dia 25 em 3x sem juros: 25;3;mensal Em 3 parcelas 7 dias corridos: hoje;3;7 Em 6 vezes 15 dias corridos: hoje;6;15 Compartilhar este post Link para o post Compartilhar em outros sites