UNPKG

@prestamype/financial-functions

Version:
54 lines (49 loc) • 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; /** * Interface -> amort_payment function * @param {Number} amount * @param {Number} nper * @param {Number} commission_rate * @param {Number} i_rate * */ class Payment { static get_base_amortization(amount, nper, i_rate) { return amount / (((1 + i_rate) ** nper - 1) / i_rate); } static gen_schedule(amount, nper, i_rate, commission_rate) { var amort_amount = this.amort_payment(amount, commission_rate); var base_amort = this.get_base_amortization(amort_amount, nper, i_rate); var total_amount = amount + amount * commission_rate; var res = Array.from({ length: nper }, () => 0).reduce((c, a, i) => { var item = { i: c.amount * i_rate, amortization: base_amort * (1 + i_rate) ** i }; return { schedule: [...c.schedule, item], amount: c.amount - item.amortization }; }, { schedule: [], amount: total_amount }); var payments = res.schedule.map(a => { a.fee = a.i + a.amortization; return a; }); payments[payments.length - 1].fee += res.amount; return { payments, total_amount }; } } exports.default = Payment; module.exports = exports.default;