lutfijc35

Sliding Rate and Flat Rate Formula

Sep 3rd, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. slidingRate: function(tenor, nilai, sukuBunga, tgl, dACode, siklus, grace) { //Untuk Menghitung Saldo Turunan
  2. var getDateNow = [];
  3. var angsuranPokok, angsuranBunga, totalAngsuran;
  4. var sisa = nilai,
  5. nilaiAwal = nilai;
  6. // var sumSisa = 0
  7. var nilaiBunga = Math.round(100 * nilaiAwal * sukuBunga / 100) / 100
  8. // var flatCount = [];
  9.  
  10. var sumAngsuran = 0,
  11. sumBunga = 0;
  12.  
  13. angsuranPokok = Math.round(100 * nilaiAwal * siklus / (tenor - grace)) / 100
  14. angsuranBunga = Math.round(100 * nilaiBunga * siklus / tenor) / 100
  15. var slidingRate = [];
  16. // var angsuranAwal = angsuran
  17. for (var i = 1; i <= (tenor / siklus); i++) {
  18.  
  19. getDateNow = moment(String(tgl)).add((i * siklus), 'M').format('YYYY-MM-DD')
  20.  
  21. if (i == (tenor / siklus)) {
  22. angsuranPokok = Math.round(100 * (nilaiAwal - sumAngsuran)) / 100
  23. angsuranBunga = Math.round(100 * (nilaiBunga - sumBunga)) / 100
  24. }
  25.  
  26.  
  27.  
  28. // var number = angsuranPokok
  29. // var rest = number % 1000;
  30. //
  31. // if(rest > 500)
  32. // { number = number - rest + 1000; }
  33. // else
  34. // { number = number - rest; }
  35. //
  36. // if ((sisa - Math.round(number/100)*100) < angsuranPokok) {
  37. // number = sisa
  38. // }
  39. //
  40. // angsuranPokok = number
  41. // sisa = sisa - Math.round(number/100)*100
  42.  
  43. sisa = sisa - angsuranPokok
  44. if (i < grace) {
  45. // totalAngsuran =
  46. }
  47. totalAngsuran = angsuranBunga + angsuranPokok
  48. sumAngsuran += angsuranPokok
  49. sumBunga += angsuranBunga
  50.  
  51. if ((i % 12) == 0) {
  52. nilai = sisa
  53. }
  54.  
  55. slidingRate.push({
  56. Sequence: i,
  57. Periode: getDateNow,
  58. DueDate: getDateNow,
  59. sisaPokok: sisa,
  60. SettValue: angsuranPokok,
  61. InterestVal: angsuranBunga,
  62. TotalBill: totalAngsuran,
  63. DACode: dACode
  64. })
  65.  
  66. // angsuran += angsuranAwal
  67.  
  68. }
  69.  
  70. return slidingRate
  71. },
  72.  
  73. flat: function(tenor, nilai, sukuBunga, tgl, dACode, siklus, grace) { // Untuk Menghitung Saldo Tetap
  74.  
  75. var getDateNow = [];
  76. var angsuranPokok, angsuranBunga, totalAngsuran;
  77. var sisa = nilai,
  78. nilaiAwal = nilai;
  79. // var sumSisa = 0
  80. var nilaiBunga = Math.round(100 * nilaiAwal * sukuBunga / 100) / 100
  81. var flatCount = [];
  82.  
  83. var sumAngsuran = 0,
  84. sumBunga = 0;
  85.  
  86. angsuranPokok = Math.round(100 * nilaiAwal * siklus / tenor) / 100
  87. angsuranBunga = Math.round(100 * nilaiBunga * siklus / tenor) / 100
  88.  
  89. for (var i = 1; i <= (tenor / siklus); i++) {
  90. getDateNow = moment(String(tgl)).add((i * siklus) + grace, 'M').format('YYYY-MM-DD')
  91.  
  92. if (i == (tenor / siklus)) {
  93. angsuranPokok = Math.round(100 * (nilaiAwal - sumAngsuran)) / 100
  94. angsuranBunga = Math.round(100 * (nilaiBunga - sumBunga)) / 100
  95. }
  96.  
  97. sisa = sisa - angsuranPokok
  98.  
  99. totalAngsuran = angsuranBunga + angsuranPokok
  100. sumAngsuran += angsuranPokok
  101. sumBunga += angsuranBunga
  102. flatCount.push({
  103. Periode: getDateNow,
  104. DueDate: getDateNow,
  105. SettValue: angsuranPokok,
  106. InterestVal: angsuranBunga,
  107. TotalBill: totalAngsuran,
  108. sisa: Math.round(100 * sisa) / 100,
  109. Sequence: i,
  110. DACode: dACode
  111. })
  112.  
  113. }
  114. return flatCount
  115. },
Advertisement
Add Comment
Please, Sign In to add comment