fork download
  1. <?php
  2.  
  3. function calculo_negociacao($valor_total, $parcelas, $dt_vencimento, $valor_entrada, $taxa = 0) {
  4. $parcelado = [];
  5. $inicio = 0;
  6.  
  7. $JUROS = $taxa / 100.00;
  8.  
  9. if ($valor_entrada > 0) {
  10. $inicio = 1;
  11. $valor_total = $valor_total - $valor_entrada;
  12. }
  13.  
  14. $valor = $valor_total / ($parcelas - $inicio); // reduzimos 1 parcela se houver entrada ou 0 se nao
  15.  
  16. $valor = $valor + $valor_total * $JUROS * pow((1 + $JUROS), $parcelas - $inicio);
  17.  
  18. print_r($valor);
  19.  
  20. $valor = number_format((float)$valor, 2, '.', '');
  21.  
  22. $parcelado = array_fill($inicio, $parcelas - $inicio, ['valor' => $valor]); // $parcelas - 1 pois será menos 1 com a entrada ou 0 se nao houver
  23.  
  24. // só depois de calcularmos todos é que podemos adicionar a entrada no inicio
  25. if ($valor_entrada > 0) {
  26. array_unshift($parcelado, ['valor' => number_format((float)$valor_entrada, 2, '.', '')]);
  27. }
  28.  
  29. $dt_vencimento = explode( '-', $dt_vencimento);
  30. $dia = $dt_vencimento[0];
  31. $mes = $dt_vencimento[1];
  32. $ano = $dt_vencimento[2];
  33.  
  34. for($x = 0; $x < $parcelas; $x++){
  35. $parcelado[$x]['parcela'] = $x + 1;
  36. $parcelado[$x]['dt_vencimento'] = date("Y-m-d",strtotime("+".$x." month",mktime(0, 0, 0, $mes, $dia, $ano)));
  37. }
  38.  
  39. return $parcelado;
  40. }
  41.  
  42. $valor = 150.00;
  43. $taxa = 1.00;
  44. $valor_entrada= 50.00;
  45. $parcela = 4;
  46. $dt_vencimento = '09-09-2019';
  47. $negociacao = calculo_negociacao($valor, $parcela, $dt_vencimento, $valor_entrada, $taxa);
  48. //var_dump($negociacao);
  49.  
  50. echo '<pre>';
  51. echo var_dump($negociacao);
Success #stdin #stdout 0.02s 24600KB
stdin
Standard input is empty
stdout
<pre>array(4) {
  [0]=>
  array(3) {
    ["valor"]=>
    string(5) "50.00"
    ["parcela"]=>
    int(1)
    ["dt_vencimento"]=>
    string(10) "2018-09-04"
  }
  [1]=>
  array(3) {
    ["valor"]=>
    string(5) "33.36"
    ["parcela"]=>
    int(2)
    ["dt_vencimento"]=>
    string(10) "2018-10-04"
  }
  [2]=>
  array(3) {
    ["valor"]=>
    string(5) "33.36"
    ["parcela"]=>
    int(3)
    ["dt_vencimento"]=>
    string(10) "2018-11-04"
  }
  [3]=>
  array(3) {
    ["valor"]=>
    string(5) "33.36"
    ["parcela"]=>
    int(4)
    ["dt_vencimento"]=>
    string(10) "2018-12-04"
  }
}