Uma biblioteca PHP para calcular juros de parcelamentos.
ricardokovalski/installments-calculator é uma biblioteca PHP que serve para calcular juros de parcelamentos.
Instale este pacote como uma dependência usando Composer.
composer require ricardokovalski/installments-calculator
Para obtermos uma coleção com as parcelas calculadas, inicialmente devemos instanciar um objeto InstallmentCalculationConfig. Esse objeto requer um tipo de juros em seu construtor.
Com a classe InterestCalculation, podemos instanciar um tipo de juros qualquer, ou seja, Financial, Compound e Simple.
use RicardoKovalski\InstallmentsCalculator\Adapters\InterestCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculationConfig;
$interest = InterestCalculation::Financial(2.99);
$installmentCalculationConfig = new InstallmentCalculationConfig($interest);
Ainda no objeto InstallmentCalculationConfig, podemos modificar algumas configurações padrões, por exemplo:
use RicardoKovalski\InstallmentsCalculator\Adapters\InterestCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculationConfig;
$interest = InterestCalculation::Financial(2.99);
$installmentCalculationConfig = new InstallmentCalculationConfig($interest);
$interestCompound = InterestCalculation::Compound(1.99);
$installmentCalculationConfig->resetInterest($interestCompound);
No exemplo acima, resetamos o tipo de juros para Compound, sendo que inicialmente, InstallmentCalculationConfig havia sido instanciada com o tipo Financial.
Além de resetar o tipo de juros, podemos definir o número máximo de pacelas. Por padrão, esse número máximo de parcelas é 12.
use RicardoKovalski\InstallmentsCalculator\Adapters\InterestCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculationConfig;
$interest = InterestCalculation::Financial(2.99);
$installmentCalculationConfig = new InstallmentCalculationConfig($interest);
$installmentCalculationConfig->resetNumberMaxInstallments(6);
No exemplo acima, acabamos de resetar o número máximo de pacelas para 6.
Outras opções que temos disponível é de limitar o parcelamento em uma valor mínimo e se este estiver configurado para limitar, podemos definir o valor limite. Por padrão, já está habilitado esse limite no valor de 5.00.
use RicardoKovalski\InstallmentsCalculator\Adapters\InterestCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculationConfig;
$interest = InterestCalculation::Financial(2.99);
$installmentCalculationConfig = new InstallmentCalculationConfig($interest);
$installmentCalculationConfig->appendLimitValueInstallment(5.00);
No exemplo anterior, adicionamos mais 5.00 ao valor limite, ou seja, agora as parcelas serão calculadas até que a última parcela não seja inferior à 10.00. Caso queira que não se tenha esse limite configurado, basta desativar.
use RicardoKovalski\InstallmentsCalculator\Adapters\InterestCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculationConfig;
$interest = InterestCalculation::Financial(2.99);
$installmentCalculationConfig = new InstallmentCalculationConfig($interest);
$installmentCalculationConfig->resetLimitInstallments(false);
Para obter uma coleção de parcelas calculadas.
use RicardoKovalski\InstallmentsCalculator\Adapters\InterestCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculationConfig;
$interest = InterestCalculation::Financial(2.99);
$installmentCalculationConfig = new InstallmentCalculationConfig($interest);
$installmentCalculationConfig->resetLimitValueInstallment(10.00);
$installmentCalculation = new InstallmentCalculation($installmentCalculationConfig);
$installmentCalculation->appendTotalPurchase(343.90);
$installmentCalculation->calculate();
$collection = $installmentCalculation->getCollection();
use RicardoKovalski\InstallmentsCalculator\Adapters\MonetaryFormatterConfig;
use RicardoKovalski\InstallmentsCalculator\Enums\IsoCodes;
use RicardoKovalski\InstallmentsCalculator\Enums\Locale;
$formatterConfig = MonetaryFormatterConfig::BRL(Locale::PT_BR);
$formatterConfig->resetLocale(Locale::EN_US)
->resetCurrencyIsoCode(IsoCodes::USD)
->resetFractionDigits(3);
use RicardoKovalski\InstallmentsCalculator\Adapters\MonetaryFormatter;
use RicardoKovalski\InstallmentsCalculator\Adapters\MonetaryFormatterConfig;
use RicardoKovalski\InstallmentsCalculator\Enums\Locale;
$formatterConfig = MonetaryFormatterConfig::BRL(Locale::PT_BR);
$decimalFormatter = MonetaryFormatter::toDecimal($formatterConfig);
$intlCurrencyFormatter = MonetaryFormatter::toIntlCurrency($formatterConfig);
$intlDecimalFormatter = MonetaryFormatter::toIntlDecimal($formatterConfig);
use RicardoKovalski\InstallmentsCalculator\Adapters\InterestCalculation;
use RicardoKovalski\InstallmentsCalculator\Adapters\MonetaryFormatter;
use RicardoKovalski\InstallmentsCalculator\Adapters\MonetaryFormatterConfig;
use RicardoKovalski\InstallmentsCalculator\Enums\Locale;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculation;
use RicardoKovalski\InstallmentsCalculator\InstallmentCalculationConfig;
$interest = InterestCalculation::Financial(2.99);
$installmentCalculationConfig = new InstallmentCalculationConfig($interest);
$installmentCalculationConfig->resetLimitValueInstallment(10.00);
$installmentCalculation = new InstallmentCalculation($installmentCalculationConfig);
$installmentCalculation->appendTotalPurchase(343.90);
$installmentCalculation->calculate();
$collection = $installmentCalculation->getCollection();
$formatterConfig = MonetaryFormatterConfig::BRL(Locale::PT_BR);
$intlCurrencyFormatter = MonetaryFormatter::toIntlCurrency($formatterConfig);
foreach ($collection as $installment) {
$intlCurrencyFormatter->format($installment->getValueInstallment());
}
The ricardokovalski/installments-calculator library is copyright © Ricardo Kovalski and licensed for use under the terms of the MIT License (MIT). Please see LICENSE for more information.