loan_creator 0.6.3.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c906065bac296df07426a567f4798d7202fa88a8bdc5015f9424bf86cd808f28
4
- data.tar.gz: a4303b1997d07d8a064b2c6b8406760d6b506e21cdb9048a9a0d774fc69fca09
3
+ metadata.gz: 2cca09d7b818ee423c142ca692301a01963982ff2b003c65b8097f2972648fa5
4
+ data.tar.gz: ba3169e453b3dcd7dbab5f5ce543fbc03c6744e87425adfdb12ad8bfdbf102b7
5
5
  SHA512:
6
- metadata.gz: a15bd8c5abb50eff1b6fe4313ca945ab5f9928b8cd7b93cd7b2649b37095b71dfb00fea7058883019bf951ecc9034b15b66c44bb7366c78dd78d52758927014a
7
- data.tar.gz: d4fe3bf469606cd8f0287a673ff09e7ba7f6b29177adb3dc3cca7cdd2680aa092adfb35ba4daa34300c9c7c2fa7779a4c79ca968e197158533cc0d1c85453159
6
+ metadata.gz: a40a97895eacab077be8a4a8ca414fda3a026bb6aac721ca35e03891d24ea6c58f44cd6a68e875860ff660a8b418692ad88e00d89b0e6c16842006f99330cae7
7
+ data.tar.gz: 833292dfdfabe53174a6c65b9509df02060c72c09bfa67c08e8e73535ed1e413e335269d5a073ad5951a76cc310b5eb2f53e138053312d6be8622ad096e3309e
@@ -1,3 +1,10 @@
1
+ v0.7.0
2
+ -------------------------
3
+
4
+ - change `capitalized_interests` for `capitalized_interests_beginning_of_period`
5
+ and `capitalized_interests_end_of_period` in `LoanCreator::Term`
6
+ - add `capitalized_interests` in `:inital_values` for `LoanCreator::Bullet` loans
7
+
1
8
  v0.6.2
2
9
  -------------------------
3
10
 
@@ -7,7 +7,7 @@ module LoanCreator
7
7
  reset_current_term
8
8
  @crd_beginning_of_period = amount
9
9
  @crd_end_of_period = amount
10
- (duration_in_periods - 1).times { |period| compute_term(timetable, period + 1) }
10
+ (duration_in_periods - 1).times { |period| compute_term(timetable) }
11
11
  compute_last_term
12
12
  timetable << current_term
13
13
  timetable
@@ -16,21 +16,23 @@ module LoanCreator
16
16
  private
17
17
 
18
18
  def compute_last_term
19
- @crd_end_of_period = bigd('0')
20
- @period_interests = compute_capitalized_interests(duration_in_periods)
21
- @period_capital = @crd_beginning_of_period
22
- @total_paid_capital_end_of_period = @period_capital
23
- @total_paid_interests_end_of_period = @period_interests
24
- @period_amount_to_pay = @period_capital + @period_interests
25
- @capitalized_interests = compute_capitalized_interests(duration_in_periods)
19
+ @crd_end_of_period = bigd('0')
20
+ @capitalized_interests_beginning_of_period = @capitalized_interests_end_of_period
21
+ @period_interests = @capitalized_interests_end_of_period + compute_capitalized_interests
22
+ @capitalized_interests_end_of_period = 0
23
+ @period_capital = @crd_beginning_of_period
24
+ @total_paid_capital_end_of_period = @period_capital
25
+ @total_paid_interests_end_of_period = @period_interests
26
+ @period_amount_to_pay = @period_capital + @period_interests
26
27
  end
27
28
 
28
- def compute_capitalized_interests(period)
29
- amount.mult((bigd(1) + periodic_interests_rate) ** period, BIG_DECIMAL_DIGITS) - amount
29
+ def compute_capitalized_interests
30
+ (amount + @capitalized_interests_beginning_of_period).mult(periodic_interests_rate, BIG_DECIMAL_DIGITS)
30
31
  end
31
32
 
32
- def compute_term(timetable, period)
33
- @capitalized_interests = compute_capitalized_interests(period)
33
+ def compute_term(timetable)
34
+ @capitalized_interests_beginning_of_period = @capitalized_interests_end_of_period
35
+ @capitalized_interests_end_of_period += compute_capitalized_interests
34
36
  timetable << current_term
35
37
  end
36
38
  end
@@ -110,40 +110,45 @@ module LoanCreator
110
110
  (@total_paid_capital_end_of_period = bigd(initial_values[:paid_capital]))
111
111
  (@total_paid_interests_end_of_period = bigd(initial_values[:paid_interests]))
112
112
  (@accrued_delta_interests = bigd(initial_values[:accrued_delta_interests]))
113
+ if self.is_a?(LoanCreator::Bullet)
114
+ (@capitalized_interests_beginning_of_period = bigd(initial_values[:capitalized_interests] || 0))
115
+ end
113
116
  end
114
117
 
115
118
  def reset_current_term
116
- @crd_beginning_of_period = bigd('0')
117
- @crd_end_of_period = bigd('0')
118
- @period_theoric_interests = bigd('0')
119
- @capitalized_interests = bigd('0')
120
- @delta_interests = bigd('0')
121
- @accrued_delta_interests = @accrued_delta_interests || bigd('0')
122
- @amount_to_add = bigd('0')
123
- @period_interests = bigd('0')
124
- @period_capital = bigd('0')
125
- @total_paid_capital_end_of_period = @total_paid_capital_end_of_period || bigd('0')
126
- @total_paid_interests_end_of_period = @total_paid_interests_end_of_period || bigd('0')
127
- @period_amount_to_pay = bigd('0')
128
- @due_on = nil
119
+ @accrued_delta_interests ||= bigd('0')
120
+ @total_paid_capital_end_of_period ||= bigd('0')
121
+ @total_paid_interests_end_of_period ||= bigd('0')
122
+ @capitalized_interests_beginning_of_period ||= bigd('0')
123
+ @crd_beginning_of_period = bigd('0')
124
+ @crd_end_of_period = bigd('0')
125
+ @period_theoric_interests = bigd('0')
126
+ @capitalized_interests_end_of_period = @capitalized_interests_beginning_of_period
127
+ @delta_interests = bigd('0')
128
+ @amount_to_add = bigd('0')
129
+ @period_interests = bigd('0')
130
+ @period_capital = bigd('0')
131
+ @period_amount_to_pay = bigd('0')
132
+ @due_on = nil
129
133
  end
130
134
 
131
135
  def current_term
132
136
  LoanCreator::Term.new(
133
- crd_beginning_of_period: @crd_beginning_of_period,
134
- crd_end_of_period: @crd_end_of_period,
135
- period_theoric_interests: @period_theoric_interests,
136
- delta_interests: @delta_interests,
137
- accrued_delta_interests: @accrued_delta_interests,
138
- capitalized_interests: @capitalized_interests,
139
- amount_to_add: @amount_to_add,
140
- period_interests: @period_interests,
141
- period_capital: @period_capital,
142
- total_paid_capital_end_of_period: @total_paid_capital_end_of_period,
143
- total_paid_interests_end_of_period: @total_paid_interests_end_of_period,
144
- period_amount_to_pay: @period_amount_to_pay,
145
- due_on: @due_on,
146
- index: compute_index
137
+ crd_beginning_of_period: @crd_beginning_of_period,
138
+ crd_end_of_period: @crd_end_of_period,
139
+ period_theoric_interests: @period_theoric_interests,
140
+ delta_interests: @delta_interests,
141
+ accrued_delta_interests: @accrued_delta_interests,
142
+ capitalized_interests_beginning_of_period: @capitalized_interests_beginning_of_period,
143
+ capitalized_interests_end_of_period: @capitalized_interests_end_of_period,
144
+ amount_to_add: @amount_to_add,
145
+ period_interests: @period_interests,
146
+ period_capital: @period_capital,
147
+ total_paid_capital_end_of_period: @total_paid_capital_end_of_period,
148
+ total_paid_interests_end_of_period: @total_paid_interests_end_of_period,
149
+ period_amount_to_pay: @period_amount_to_pay,
150
+ due_on: @due_on,
151
+ index: compute_index
147
152
  )
148
153
  end
149
154
 
@@ -17,8 +17,11 @@ module LoanCreator
17
17
  # Accrued interests' delta
18
18
  :accrued_delta_interests,
19
19
 
20
- # Capitalized interests (Bullet only)
21
- :capitalized_interests,
20
+ # Capitalized interests at the beginning of the term (Bullet only)
21
+ :capitalized_interests_beginning_of_period,
22
+
23
+ # Capitalized interests at the end of the term (Bullet only)
24
+ :capitalized_interests_end_of_period,
22
25
 
23
26
  # Adjustment of -0.01, 0 or +0.01 cent depending on accrued_delta_interests
24
27
  :amount_to_add,
@@ -1,3 +1,3 @@
1
1
  module LoanCreator
2
- VERSION = '0.6.3.1'.freeze
2
+ VERSION = '0.7.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loan_creator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thibaulth
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2021-01-05 00:00:00.000000000 Z
15
+ date: 2021-01-06 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler