UNPKG

@prestamype/financial-functions

Version:
45 lines (37 loc) • 1.07 kB
/** * Interface -> amort_payment function * @param {Number} amount * @param {Number} nper * @param {Number} commission_rate * @param {Number} i_rate * */ export default 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) { const amort_amount = this.amort_payment(amount, commission_rate) const base_amort = this.get_base_amortization(amort_amount, nper, i_rate) const total_amount = amount + amount*commission_rate let res = Array.from({ length: nper }, () => 0).reduce((c,a,i) => { const 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 }) const payments = res.schedule.map(a => { a.fee = a.i + a.amortization return a }) payments[payments.length - 1].fee += res.amount return { payments, total_amount, } } }