kostikpenzin / credit-calc
这是一个用于通过年金/差异化还款方式计算贷款还款计划的计算器。您可以指定部分提前还款,同时考虑一次性/定期手续费。该包可以很容易地通过我们自己的还款计划计算算法进行扩展。
v0.1.2
2023-04-19 12:20 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpunit/phpunit: ^8.3
README
具有指定提前还款支付的贷款还款计划计算。支持年金还款顺序和差异化还款顺序。
包中的所有货币值都是整数,并代表以分为单位的总和。
安装
Composer: composer require kostikpenzin/credit-calc
使用
require __DIR__ . '/../vendor/autoload.php'; use CreditCalc\Calculator; use CreditCalc\CreditParams; use CreditCalc\UnexpectedPayment; use CreditCalc\RepaymentSchedule; $params = new CreditParams(new DateTime('2023-10-31 00:00:00'), 100000000, 990, 12, CreditParams::DURATION_MONTH); $unexpectedPayments = [ new UnexpectedPayment(10000000, new DateTime('2023-12-15 00:00:00'), UnexpectedPayment::LESS_PAYMENT), new UnexpectedPayment(3565411, new DateTime('2023-01-13 00:00:00'), UnexpectedPayment::LESS_LOAN_PERIOD), new UnexpectedPayment(15000000, new DateTime('2023-02-29 00:00:00'), UnexpectedPayment::LESS_LOAN_PERIOD), ]; $calculator = new Calculator; // we consider the repayment schedule with annuity payments // So that there are differentiated payments, we specify Calculator::TYPE_DIFFERENTIAL as the third parameter /** @var RepaymentSchedule $schedule Payment schedule */ $schedule = $calculator->calculate($params, $unexpectedPayments, Calculator::TYPE_ANNUITY); foreach ($schedule as $repayment) { /** @var DateTime $date Date of the next payment period */ $date = $repayment->getDate()->format('d.m.Y'); /** @var int $payment The amount of the next payment */ $payment = $repayment->getPayment(); /** @var int $percents Interest on the next payment */ $percents = $repayment->getPercents(); /** @var int $body The body of the loan for the next payment */ $body = $repayment->getBody(); /** @var int $body Loan balance after payment */ $balance = $repayment->getBalance(); } /** @var int $total Get the amount of all loan payments */ $total = $schedule->calculateTotalPayments(); /** @var int $overpayment Get the amount of overpayment on the loan */ $overpayment = $schedule->calculateOverpayment(); /** @var int $requestedSum Get the loan amount */ $requestedSum = $schedule->getCreditParams()->getRequestedSum(); /** @var string psk The full cost of the loan as a percentage per annum with rounding up to 3 digits */ $psk = $schedule->calculateTotalCost();