ricardokovalski/installments-calculator

Biblioteca para calcular juros em parcelamentos.

v1.0.2 2021-08-12 00:15 UTC

This package is auto-updated.

Last update: 2024-05-06 18:26:29 UTC


README

Uma biblioteca PHP para calcular juros de parcelamentos.

Source Code PHP Programming Language Source Code Author Read License

Sobre

ricardokovalski/installments-calculator é uma biblioteca PHP que serve para calcular juros de parcelamentos.

Instalação

Instale este pacote como uma dependência usando Composer.

composer require ricardokovalski/installments-calculator

Uso básico

InstallmentCalculationConfig

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);

InstallmentCalculation

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();

Formatters

MonetaryFormatterConfig

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);

MonetaryFormatter

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);

Exemplo completo

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());
}

Copyright and License

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.