Fórum Custo Efetivo Total (CET) como calcular no delphi ?? #365085
15/10/2008
0
Exemplo:
Data do contrato = 13/06/08 mês
Valor Financiado= R$ 1.000,00
Valor da TAC = R$ 200,00
Valor do IOF R$ 25,68
Taxa Juros Contrato= 2¬ ao mes
Número de Parcelas= 24 parcelas mensais
Valor Prestação= R$ 52,87
Data de vencimento da 1 parcela=13/07/08
preciso implementar isso no sistema so que nao encontrei nenhum material que aborde a forma de calculo
se alguem tiver uma ideia fico grato
Data do contrato = 13/06/08 mês
Valor Financiado= R$ 1.000,00
Valor da TAC = R$ 200,00
Valor do IOF R$ 25,68
Taxa Juros Contrato= 2¬ ao mes
Número de Parcelas= 24 parcelas mensais
Valor Prestação= R$ 52,87
Data de vencimento da 1 parcela=13/07/08
preciso implementar isso no sistema so que nao encontrei nenhum material que aborde a forma de calculo
se alguem tiver uma ideia fico grato
Fernando
Curtir tópico
+ 0
Responder
Posts
16/10/2008
Marcosrocha
Entende de Javascript?
Fonte: http://www.procon.sp.gov.br/webcet/webcet_2008-03-07_16-40.html
function calculaJurosCET(vnum_mes,vjuranox_fin,vjur_mes,parcela,data_contrato,proxData,vvlr_prin,difAno)
{
var b = 0;
var vjur= 0.5;
var vjur_fin = vjuranox_fin.replace(".","");
vjur_fin = vjur_fin.replace(",",".");
var vjur1= 1;
var vjur2= 0;
var vjur_fin1= 1;
var vjur_fin2= 0;
vjur_mes= vjur_mes.replace(".","");
vjur_mes= vjur_mes.replace(",",".");
vjur_mes = parseFloat(vjur_mes) / 100;
var primeiraParcela = parcela;
igual = 0;
denovo = 0;
vjur_fin_old = 0;
vjur_dia= ((Math.pow(1 + (vjur_mes),(1/30)))- 1)/100;
vjur_dia= vjur_dia * 100;
vvlr_prin_old = vvlr_prin;
while (Math.abs(vvlr_prin - b) > 0.00001)
{
vvlr_tot = 0;
parcela= primeiraParcela;
data_niver_cntr = getAniversarioContrato(data_contrato,primeiraParcela);
vdif_dc = calculaDiferencaEntreDatas(data_contrato,primeiraParcela);
//if((vdif_dc[0] == 28) || (vdif_dc[0] == 29))
//vdif_dc[0] = 31;
mes_contrato = data_contrato.substring(3,5);
ano_contrato = data_contrato.substring(6,10);
adif_dc = new Array();
adiff_dc = 0;
vdiff_data = 0;
i_acerto = 0;
vvlr_novo = 0;
dias_padrao = quantidadeDias(mes_contrato,ano_contrato);
if(vdif_dc[0] > dias_padrao) // se mais de 31 dias
{
//alert(vdif_dc[0] + ´ > ´ + dias_padrao + ´ em ´ + mes_contrato + ´/´ + ano_contrato);
i_acerto = 1;
adif_dc1 = calculaDiferencaEntreDatas(data_contrato,data_niver_cntr);
adif_dc2= calculaDiferencaEntreDatas(data_contrato,primeiraParcela);
qtdMesesDif= contaMeses(data_niver_cntr,primeiraParcela);
qtdMesesDif = qtdMesesDif - 1;
adif_dc= qtdMesesDif + (adif_dc1[0] / dias_padrao);
idx = 0;
if(vvlr_prin == vvlr_prin_old)
{
adiff_dc = adif_dc;
v1=(1+vjur_dia);
v2=Math.abs(adif_dc1[0]);
vvlr_desc1 = Math.pow(v1,v2);
vvlr_desc = vvlr_prin * (vvlr_desc1);
vvlr_desc = Arredonda(vvlr_desc,2);
vvlr_novo = vvlr_desc;
str_vlr_desc = String(vvlr_desc).replace(".",",");
idx++;
}
vvlr_tot_old = vvlr_tot;
//alert(´qtdMesesDif: ´ + qtdMesesDif + ´\nvjur_mes: ´ + vjur_mes + ´\nvjur_dia: ´ + vjur_dia + ´\nvvlr_prin_old: ´ + vvlr_prin_old + ´\nvvlr_prin: ´ + vvlr_prin +´\nadif_dc: ´ + adif_dc + ´\nadif_dc1: ´ + adif_dc1 + ´\ndias_padrao: ´ + dias_padrao);
}
i_acerto = 0;
for(init=0; init < (parseInt(vnum_mes)); init++)
{
if(init != 0)
{
proxData = verProximaData(primeiraParcela,parcela);
vdif_data = calculaDiferencaEntreDatas(parcela,proxData);
//alert(´!= 0: \nvdif_data: ´ + vdif_data[0]);
}
else
{
proxData = parcela;
vdif_data = vdif_dc;
//alert(´eh 0: \nvdif_dc[0]: ´ + vdif_dc[0]);
}
if((vvlr_tot != 0) && (init == 0) )
{
vvlr_desc = vvlr_tot;
vvlr_desc = Arredonda(vvlr_desc,2);
str_vlr_desc = String(vvlr_desc).replace(".",",");
strFormula[(init + i_acerto)] = milhar(String(str_vlr_desc),String(str_vlr_desc));
parcela = proxData;
vdiff_data = vdif_data[0];
}
else
{
//if((vdif_data[0] == 28) || (vdif_data[0] == 29))
//vdif_data[0] = 31;
vdiff_data += vdif_data[0];
v1=(1+vjur_fin/100);
v2=Math.abs(vdiff_data)/(365);
vvlr_desc1 = Math.pow(v1,v2);
vvlr_desc = vvlr_pres / vvlr_desc1;
vvlr_desc = Arredonda(vvlr_desc,2);
vvlr_tot = vvlr_tot + vvlr_desc;
str_vlr_desc= String(vvlr_desc).replace(".",",");
strFormula[(init + i_acerto)] = milhar(String(str_vlr_desc),String(str_vlr_desc));
parcela = proxData;
}
//alert(´<30 \ndif_data: ´ + vdif_data[0] + ´\nvdiff_data: ´ + vdiff_data + ´\nv1: ´ + v1 + ´\nv2: ´ + v2 + ´\nvjur_fin: ´ + vjur_fin + ´\nvjurfin1: ´ + vjur_fin1 + ´\nvjurfin2: ´ + vjur_fin2 +´\nvvlr_desc1: ´ + vvlr_desc1 +´\nvnum_mes: ´ + vnum_mes + ´\ninit: ´ + init + ´\nprimeiraParcela: ´ + primeiraParcela + ´\nparcela: ´ + parcela + ´\nproxData: ´ + proxData + ´\ndifAno: ´ + difAno[0] + ´\nvvlr_tot: ´ + vvlr_tot + ´\nvvlr_prin: ´ + vvlr_prin +´\nformula: ´ + strFormula[(init + i_acerto)]);
}
b = vvlr_tot;
if (b < vvlr_prin)
vjur_fin1=vjur_fin;
else
vjur_fin2=vjur_fin;
vjur_fin=(parseFloat(vjur_fin1)+parseFloat(vjur_fin2))/2;
if(vjur_fin_old == vjur_fin)
igual++;
else
igual = 0;
vjur_fin_old = vjur_fin;
//alert(vjur_fin);
if(igual == 10)
{
if(denovo == 0)
{
vjur_fin1 = vjuranox_fin.replace(".","");
vjur_fin1 = vjur_fin1.replace(",",".");
vjur_fin1= vjur_fin1 * 2;
denovo = 1;
igual = 0;
}
else
break;
}
}
vjuranox_fin=(Math.pow((1+parseFloat(vjur_fin)),12)-1);
vjuranox_fin=String(Arredonda(vjuranox_fin,5));
vjur_fin=vjur_fin;
vjur_fin=String(Arredonda(vjur_fin,5));
return new Array(strFormula,vvlr_tot,vjuranox_fin,vjur_fin);
}
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)