Library for loan amortization schedule manipulation
..::Live demo::..
const LoanSchedule = require ( "loan-schedule.js" ) ;
const loanSchedule = new LoanSchedule ( { } ) ;
const LoanSchedule = require ( "loan-schedule.js" ) ;
const loanSchedule = new LoanSchedule ( {
DecimalDigit : 2 ,
dateFormat : "DD.MM.YYYY" ,
prodCalendar : "ru"
} ) ;
let interest = loanSchedule . calculateInterestByPeriod ( {
from : "10.12.2015" ,
to : "10.01.2016" ,
amount : 1000 ,
rate : 16.7
} ) ;
console . log ( interest ) ;
let payment = loanSchedule . calculateAnnuityPaymentAmount ( {
amount : 110000 ,
term : 60 ,
rate : 12.9
} ) ;
console . log ( payment ) ;
let loanAmount = loanSchedule . calculateMaxLoanAmount ( {
paymentAmount : 2497.21 ,
term : 60 ,
rate : 12.9
} ) ;
console . log ( loanAmount ) ;
Annuity loan schedule (payment amount will be calculated)
loanSchedule . calculateSchedule ( {
amount : 50000 ,
rate : 11.5 ,
term : 12 ,
paymentOnDay : 25 ,
issueDate : "25.10.2016" ,
scheduleType : LoanSchedule . ANNUITY_SCHEDULE
} ) . payments . forEach ( ( pay ) => {
console . log ( pay . paymentDate + "\t|\t\t"
+ pay . initialBalance + "\t|\t\t"
+ pay . paymentAmount + "\t|\t\t"
+ pay . principalAmount + "\t|\t\t"
+ pay . interestAmount + "\t|\t\t"
+ pay . finalBalance
) ;
} ) ;
Annuity loan schedule (payment amount is set)
loanSchedule . calculateSchedule ( {
amount : 50000 ,
rate : 11.5 ,
term : 12 ,
paymentAmount : 40000 ,
paymentOnDay : 25 ,
issueDate : "25.10.2016" ,
scheduleType : LoanSchedule . ANNUITY_SCHEDULE
} ) . payments . forEach ( ( pay ) => {
console . log ( pay . paymentDate + "\t|\t\t"
+ pay . initialBalance + "\t|\t\t"
+ pay . paymentAmount + "\t|\t\t"
+ pay . principalAmount + "\t|\t\t"
+ pay . interestAmount + "\t|\t\t"
+ pay . finalBalance
) ;
} ) ;
Differentiated loan schedule
loanSchedule . calculateSchedule ( {
amount : 50000 ,
rate : 11.5 ,
term : 12 ,
paymentOnDay : 25 ,
issueDate : "25.10.2016" ,
scheduleType : LoanSchedule . DIFFERENTIATED_SCHEDULE
} ) . payments . forEach ( ( pay ) => {
console . log ( pay . paymentDate + "\t|\t\t"
+ pay . initialBalance + "\t|\t\t"
+ pay . paymentAmount + "\t|\t\t"
+ pay . principalAmount + "\t|\t\t"
+ pay . interestAmount + "\t|\t\t"
+ pay . finalBalance
) ;
} ) ;
loanSchedule . calculateSchedule ( {
amount : 50000 ,
rate : 11.5 ,
term : 12 ,
paymentOnDay : 25 ,
issueDate : "25.10.2016" ,
scheduleType : LoanSchedule . BUUBLE_SCHEDULE
} ) . payments . forEach ( ( pay ) => {
console . log ( pay . paymentDate + "\t|\t\t"
+ pay . initialBalance + "\t|\t\t"
+ pay . paymentAmount + "\t|\t\t"
+ pay . principalAmount + "\t|\t\t"
+ pay . interestAmount + "\t|\t\t"
+ pay . finalBalance
) ;
} ) ;