loan_creator 0.6.3.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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