@prestamype/financial-functions
Version:
Implementación de funciones financieras
54 lines (49 loc) • 1.32 kB
JavaScript
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;
;