fork download
  1. <?php
  2.  
  3. function calcularJuros($valor, $dias, $taxaJuros, $diasSemJuros) {
  4. if ($dias > $diasSemJuros) {
  5. $diasComJuros = $dias - $diasSemJuros;
  6. $valorComJuros = $valor * pow((1 + $taxaJuros / 100), ($diasComJuros / 30));
  7. return $valorComJuros;
  8. }
  9. return $valor;
  10. }
  11.  
  12. function gerarParcelas($dataInicial, $intervalos, $valorTotal, $taxaJuros, $diasSemJuros) {
  13. $datasParcelas = [];
  14. $quantidadeParcelas = count($intervalos);
  15. $valorParcela = $valorTotal / $quantidadeParcelas;
  16.  
  17. foreach ($intervalos as $dias) {
  18. $dataVencimento = clone $dataInicial;
  19. $dataVencimento->modify("+{$dias} days");
  20. $valorParcelaComJuros = calcularJuros($valorParcela, $dias, $taxaJuros, $diasSemJuros);
  21. $datasParcelas[] = [
  22. 'data_vencimento' => $dataVencimento,
  23. 'valor_parcela' => $valorParcelaComJuros
  24. ];
  25. }
  26.  
  27. return $datasParcelas;
  28. }
  29.  
  30. // Exemplo de uso
  31. $dataInicial = new DateTime('2024-07-06');
  32. $intervalos = [28, 42, 56];
  33. $valorTotal = 1000.00;
  34. $taxaJuros = 2; // 2% de juros ao mês
  35. $diasSemJuros = 30; // Sem juros para os primeiros 30 dias
  36.  
  37. $parcelas = gerarParcelas($dataInicial, $intervalos, $valorTotal, $taxaJuros, $diasSemJuros);
  38.  
  39. foreach ($parcelas as $parcela) {
  40. echo "Data de Vencimento: " . $parcela['data_vencimento']->format('Y-m-d') . PHP_EOL;
  41. echo "Valor da Parcela: R$ " . number_format($parcela['valor_parcela'], 2, ',', '.') . PHP_EOL;
  42. echo "-----------------------" . PHP_EOL;
  43. }
  44.  
Success #stdin #stdout 0.04s 26396KB
stdin
Standard input is empty
stdout
Data de Vencimento: 2024-08-03
Valor da Parcela: R$ 333,33
-----------------------
Data de Vencimento: 2024-08-17
Valor da Parcela: R$ 335,98
-----------------------
Data de Vencimento: 2024-08-31
Valor da Parcela: R$ 339,10
-----------------------