Skip to content

Instantly share code, notes, and snippets.

@lucasff
Created June 23, 2014 19:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucasff/997307d3e514013b1970 to your computer and use it in GitHub Desktop.
Save lucasff/997307d3e514013b1970 to your computer and use it in GitHub Desktop.
Cálculo de Parcelamento para CakePHP 1.3
<?php
class ParcelamentoHelper extends AppHelper
{
//var $helpers = array('String');
var $coef = array(4 => 1.02490,
5 => 1.03750,
6 => 1.05019,
7 => 1.06300,
8 => 1.07589,
9 => 1.08889,
10 => 1.10200,
11 => 1.11530,
12 => 1.12860
);
public function parcelaValida($valor, $parcelamento)
{
App::import('Helper', 'String');
$this->String = new StringHelper();
$retorno['valor'] = null;
$retorno['parcela'] = null;
$retorno['juros'] = null;
if (is_string($valor)) {
$valor = (str_replace(',', '.', $valor));
}
$juros_apartir = $parcelamento['juros_apartir'];
$juros = false;
for ($i = 1; $i <= (int) $parcelamento['parcelas']; $i++):
$parcela = $valor / $i;
if ($i > $juros_apartir && up($parcelamento['sigla']) == 'PAGSEGURO') {
$parcela = $valor * $this->coef[$i] / $i;
$juros = true;
}
if ($i == 1 || $parcela > $this->String->moedaToBco(Configure::read('Loja.valor_minimo_parcelamento'))):
$retorno['valor'] = $parcela;
$retorno['parcela'] = $i;
$retorno['juros'] = $juros;
endIf;
endFor;
return $retorno;
}
public function listaParcelamentos($valor, $parcelamento)
{
App::import('Helper', 'String');
$this->String = new StringHelper();
$content = '';
$retorno['valor'] = null;
$retorno['parcela'] = null;
$retorno['juros'] = null;
if (is_string($valor)) {
$valor = (str_replace(',', '.', $valor));
}
$juros_apartir = $parcelamento['juros_apartir'];
$juros = false;
//abro a div de divisao de coluna
$content .= '';
//'<span class="blue_color left"><strong>Número de Parcelas</strong></span> <strong>Valor parcela</strong>';
for ($i = 1; $i <= (int) $parcelamento['parcelas']; $i++):
$parcela = $valor / $i;
if ($i > $juros_apartir && up($parcelamento['sigla']) == 'PAGSEGURO') {
$parcela = $valor * $this->coef[$i] / $i;
$juros = true;
}
if ($i == 1 || $parcela > $this->String->moedaToBco(Configure::read('Loja.valor_minimo_parcelamento'))) {
$retorno['valor'] = $parcela;
$retorno['parcela'] = $i;
$retorno['juros'] = $juros;
$content .= '
<div class="row">
<div class="td1">' . $retorno['parcela'] . ' X R$ ' . $this->String->bcoToMoeda($retorno['valor']) . ' - ' . ($retorno["juros"] == true ? "com juros" : "sem juros") . '</div>
</div>
';
//se o index for igual a metade de valor da parcela, corto a lista ao meio com uma coluna
//if ($i % (int) ((int) $parcelamento['parcelas'] / 2) == 0 && $i != $parcelamento['parcelas']) {
//$content .= '</ul><ul>';
//'<span class="row"><span class="blue_color left"><strong>Número de Parcelas</strong></span> <strong>Valor parcela</strong></span>';
//}
}
endFor;
//fecho a div de divisao de coluna
//$content .= '</div>';
return $content;
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment