-
Notifications
You must be signed in to change notification settings - Fork 1
/
cet.php
102 lines (69 loc) · 3.81 KB
/
cet.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
function arredondar_dois_decimal($valor) {
$float_arredondar=round($valor * 100) / 100;
return $float_arredondar;
}
function arredondar_dois_decimal_para_cima($valor) {
$float_arredondar=ceil($valor * 100) / 100;
return $float_arredondar;
}
function cet($numero_parcelas, $valor_emprestimo) {
$numero_parcelas = $numero_parcelas;
$taxa_ao_periodo = ((0.212895464763618 / 100) + 1);
$parcela_atual = 1;
$retorno = array();
$mesInicial = date('m');
$totalTaxaAoPeriodo = 0;
$totalCalculo = 0;
$emprestimo = $valor_emprestimo;
$taxaMensal = (6.588 / 100) + 1;
$iof = 0.000082;
$iofFixo = $emprestimo * 0.0038;
$saldo = $emprestimo;
$totaliof = 0;
while($parcela_atual <= $numero_parcelas){
$n_dias_acumulativo = intval(round((mktime(0,0,0,date('m')+$parcela_atual,date('d'),date('Y')) - mktime(0,0,0,date('m'),date('d'),date('Y')))/86400));
$retorno[$parcela_atual] = array(
'data' => date('d/m/Y',mktime(0,0,0,date('m')+$parcela_atual,date('d'),date('Y'))),
'Numero de Dias' => $n_dias_acumulativo,
'Dias do Mês' => date('t',strtotime(date('Y-m-d',mktime(0,0,0,(date('m')+$parcela_atual)-1,date('d'),date('Y'))))),
'Taxa ao Periodo' => pow($taxa_ao_periodo,$n_dias_acumulativo)
);
$totalTaxaAoPeriodo = ( $totalTaxaAoPeriodo == 0 ? pow($taxa_ao_periodo,$n_dias_acumulativo) : $totalTaxaAoPeriodo * pow($taxa_ao_periodo,$n_dias_acumulativo) ) ;
$parcela_atual++;
}
foreach($retorno AS $parcela_atual => $dados){
$retorno[$parcela_atual]['Cálculo'] = ($totalTaxaAoPeriodo / $retorno[$parcela_atual]['Taxa ao Periodo']);
$totalCalculo += $retorno[$parcela_atual]['Cálculo'];
}
$prestacao = (($totalTaxaAoPeriodo * $emprestimo) / $totalCalculo);
foreach($retorno AS $parcela_atual => $dados){
$juros = ((pow($taxaMensal,$retorno[$parcela_atual]['Dias do Mês']/30))-1)*$saldo;
$amortizacao = ($prestacao - $juros);
$saldo -= ($amortizacao);
$retorno[$parcela_atual]['Juros'] = arredondar_dois_decimal($juros);
$retorno[$parcela_atual]['Amortização'] = arredondar_dois_decimal($amortizacao);
$retorno[$parcela_atual]['Saldo'] = arredondar_dois_decimal($saldo);
if($retorno[$parcela_atual]['Numero de Dias'] > 365) {
$calculoiof = ($amortizacao * $iof * 365);
$retorno[$parcela_atual]['IOF'] = ($calculoiof);
}else {
$calculoiof = ($amortizacao * $iof * $retorno[$parcela_atual]['Numero de Dias']);
$retorno[$parcela_atual]['IOF'] = arredondar_dois_decimal_para_cima($calculoiof);
}
$retorno[$parcela_atual]['Prestação'] = $prestacao;
$totaliof += $retorno[$parcela_atual]['IOF'];
}
$retorno['Configurações'] = array(
'Número de Parcelas' => $numero_parcelas
);
$retorno['Dados Finais'] = array(
'Valor Prestacao' => number_format($prestacao,2),
'IOF Total' => arredondar_dois_decimal($totaliof + $iofFixo),
'Valor Financiado' => ($emprestimo + arredondar_dois_decimal($totaliof + $iofFixo)),
'Prestação com Juros' => number_format((($emprestimo + arredondar_dois_decimal($totaliof + $iofFixo)) * $totalTaxaAoPeriodo) / $totalCalculo,2),
'Valor com Juros' => (((($emprestimo + arredondar_dois_decimal($totaliof + $iofFixo)) * $totalTaxaAoPeriodo) / $totalCalculo) * $numero_parcelas)
);
return $retorno;
}
?>