SIMULADOR DE PARCELAS

DINEY 27/06/2012 17:34:39
#405048
Boa tarde!

Estou desenvolvendo uma ecommerce em ASP, preciso gerar um simulador de parcelas, achei este
código de gerar um parcelas semelhante ao do Pagseguro só que em PHP e eu não sei nada de php,
alguém poderia me dizer se da pra passar para ASP, o código é o seguinte:



/**
* @author Tiarê Balbi
* @package PagSeguro
* @category osCommerce, Loja Virtual, Pagamentos
*/

class Pagseguro {

/**
* Fator para calculo de juros em parcela
* @var array
*/
var $fator = array(
[ô]1[ô]=>[ô]1[ô],
[ô]2[ô]=>[ô]0.51495[ô],
[ô]3[ô]=>[ô]0.34670[ô],
[ô]4[ô]=>[ô]0.26255[ô],
[ô]5[ô]=>[ô]0.21210[ô],
[ô]6[ô]=>[ô]0.17847[ô],
[ô]7[ô]=>[ô]0.15446[ô],
[ô]8[ô]=>[ô]0.13645[ô],
[ô]9[ô]=>[ô]0.12246[ô],
[ô]10[ô]=>[ô]0.11127[ô],
[ô]11[ô]=>[ô]0.10212[ô],
[ô]12[ô]=>[ô]0.09450[ô],
[ô]13[ô]=>[ô]0.08806[ô],
[ô]14[ô]=>[ô]0.08254[ô],
[ô]15[ô]=>[ô]0.07777[ô],
[ô]16[ô]=>[ô]0.07359[ô],
[ô]17[ô]=>[ô]0.06991[ô],
[ô]18[ô]=>[ô]0.06664[ô]
);

/**
* Bandeiras das empresas de cartão de credito e o numero maximo de parcelas
* @var array
*/
var $bandeiras = array(
[ô]1[ô]=>array([ô]nome[ô]=>[ô]Visa[ô],[ô]parcelas[ô]=>[ô]12[ô]),
[ô]2[ô]=>array([ô]nome[ô]=>[ô]MasterCard[ô],[ô]parcelas[ô]=>[ô]12[ô]),
[ô]3[ô]=>array([ô]nome[ô]=>[ô]Diners[ô],[ô]parcelas[ô]=>[ô]12[ô]),
[ô]4[ô]=>array([ô]nome[ô]=>[ô]American Express[ô],[ô]parcelas[ô]=>[ô]12[ô]),
[ô]5[ô]=>array([ô]nome[ô]=>[ô]Hipercard[ô],[ô]parcelas[ô]=>[ô]12[ô]),
[ô]6[ô]=>array([ô]nome[ô]=>[ô]Aura[ô],[ô]parcelas[ô]=>[ô]18[ô])
);

var $parcela_minima = 5.00;

/**
* Converte o valor para formato numerico valido
* @param string $valor
*/
public function formatNumber($valor){

$preco = (!empty($valor) ? $valor : [Ô]0.00[Ô]);
return number_format($preco, 2, [ô],[ô], [ô][ô]);

}

/**
* Converte o valor para um valor inteiro sem casa decimal
* @param int $valor
*/
public function formatInteiro($valor){
$preco = (!empty($valor) ? $valor : [Ô]0.00[Ô]);
return number_format($preco, 0, [ô],[ô], [ô][ô]);

}

/**
* Realiza o calculo e cria uma array retornando o valor da parcela, total de parcela, total pago respectiva parcela.
* @param int $valor
* @param int $cartao
*/
public function parcelamento($valor,$cartao){

$valor = str_replace([Ô],[Ô], [Ô].[Ô], $valor);

$retorno = array();

$retorno[[ô]cartao[ô]] = $this->bandeiras[$cartao][[ô]nome[ô]];


for($i=1;$i<=$this->bandeiras[$cartao][[ô]parcelas[ô]];$i++){

$valor_parcela = $this->formatNumber($valor*$this->fator[$i]);


if($i != 1 && $this->formatInteiro($this->parcela_minima) > $this->formatInteiro($valor_parcela)){
break;
}

$retorno[[ô]valores[ô]][$i] = array(
[ô]prestacao[ô]=>$i,
[ô]valor[ô]=>$valor_parcela,
[ô]total_pago[ô]=>$this->formatNumber($valor*$this->fator[$i]*$i)
);

}

return $retorno;
}

}



Usando:


$pg = new Pagseguro();

//Primeiro campo é o valor que você deseja simular
//Segundo campo é a bandeira do cartão, lista de bandeiras abaixo:
/*

1: Visa
2: MasterCard
3: Diners
4: American Express
5: Hipercard
6: Aura

*/
$retorno = $pg->parcelamento([ô]182,22[ô], [ô]1[ô]);

//A função Parcelamento retornará uma array() que você pode ler ela da forma que você achar melhor abaixo segue um exemplo:
echo $retorno[[ô]cartao[ô]] . [ô]<br/>[ô];

foreach($retorno[[ô]valores[ô]] as $valor ){
echo [ô]Numero de Parcelas: [ô] . $valor[[ô]prestacao[ô]] . [ô] x [ô];
echo $valor[[ô]valor[ô]] . [ô]<br/>[ô];
}



Claudiney
www.cassystems.com.br
KERPLUNK 27/06/2012 17:50:14
#405053
Resposta escolhida
Você está começando o sistema do zero?
DINEY 27/06/2012 18:05:05
#405054
Boa tarde,


não pelo contrario já estou na fase de finalização e tudo em ASP.


Claudiney
www.cassystems.com.br
KERPLUNK 27/06/2012 18:10:44
#405055
Bem, eu teria aconselhado em criar em ASP.NET, mas já que você está nos [Ô]finalmente[Ô]. O processo de geração de parcelas, depende do tipo de juros que vai ser usado, se juros simples ou juros composto. Seja qual for, você aplica a fórmula de cálculo no valor(contando já o número de parcelas) e vai ter o valor de cada parcela. Então basta fazer um loop que preenche uma <TABLE> com cada uma das parcelas.
Tópico encerrado , respostas não são mais permitidas