Ir para conteúdo

POWERED BY:

Arquivado

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

ghostring

Objeto Para calcular parcelas

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.