loan_creator 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/loan_creator/common.rb +6 -1
- data/lib/loan_creator/linear.rb +29 -2
- data/lib/loan_creator/version.rb +1 -1
- data/loan_creator.gemspec +2 -0
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f175586a927e2dd609903b79ed629c1ab5bc3aecde02b1cc5809629d33c5b852
|
4
|
+
data.tar.gz: fd695b7fba80c64efa7b5c0cefc9a1092ed6c74aa4ac070da3cb25771740e3bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6de1a02fc201dd985c0c255ee7b96989d477723607015647f9608228174f9bfdd4aa7f667ea9d74425a251b4912dae0430e1edd84623b7a8c1953e28ce1797f9
|
7
|
+
data.tar.gz: b3b3e8d4a1d007b1f8481238df1d021b5f597d2a46b887495f4099320dcd20711ccc2fb9e2ed2fa34775a99c33826c9de2d4a5b7ede12d7eb8e978d45df017f1
|
data/CHANGELOG.md
CHANGED
data/lib/loan_creator/common.rb
CHANGED
@@ -116,7 +116,8 @@ module LoanCreator
|
|
116
116
|
end
|
117
117
|
|
118
118
|
def set_initial_values
|
119
|
-
@starting_index
|
119
|
+
@starting_index = initial_values[:starting_index] || 1
|
120
|
+
@initial_due_interests = bigd(initial_values[:due_interests] || 0)
|
120
121
|
|
121
122
|
return if initial_values.blank?
|
122
123
|
|
@@ -223,5 +224,9 @@ module LoanCreator
|
|
223
224
|
def realistic_durations?
|
224
225
|
!!@realistic_durations
|
225
226
|
end
|
227
|
+
|
228
|
+
def compute_period_generated_interests(interests_rate)
|
229
|
+
(@crd_beginning_of_period + @due_interests_beginning_of_period).mult(interests_rate, BIG_DECIMAL_DIGITS)
|
230
|
+
end
|
226
231
|
end
|
227
232
|
end
|
data/lib/loan_creator/linear.rb
CHANGED
@@ -27,7 +27,8 @@ module LoanCreator
|
|
27
27
|
|
28
28
|
# Reminder: CRD beginning of period = CRD end of period **of previous period**
|
29
29
|
@crd_beginning_of_period = @crd_end_of_period
|
30
|
-
@
|
30
|
+
@due_interests_beginning_of_period = @due_interests_end_of_period
|
31
|
+
@period_theoric_interests = period_theoric_interests(computed_periodic_interests_rate)
|
31
32
|
@delta_interests = @period_theoric_interests - @period_theoric_interests.round(2)
|
32
33
|
@accrued_delta_interests += @delta_interests
|
33
34
|
@amount_to_add = bigd(
|
@@ -46,18 +47,44 @@ module LoanCreator
|
|
46
47
|
@total_paid_interests_end_of_period += @period_interests
|
47
48
|
@period_amount_to_pay = @period_interests + @period_capital
|
48
49
|
@crd_end_of_period -= @period_capital
|
50
|
+
@due_interests_end_of_period -= reimbursed_due_interests
|
49
51
|
|
50
52
|
current_term
|
51
53
|
end
|
52
54
|
|
55
|
+
def period_theoric_interests(computed_periodic_interests_rate)
|
56
|
+
if @due_interests_beginning_of_period > 0
|
57
|
+
reimbursed_due_interests + compute_period_generated_interests(computed_periodic_interests_rate)
|
58
|
+
else
|
59
|
+
compute_period_generated_interests(computed_periodic_interests_rate)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
53
63
|
def period_capital
|
54
64
|
if @last_period
|
55
65
|
@crd_beginning_of_period
|
56
66
|
elsif @deferred_period
|
57
67
|
bigd(0)
|
68
|
+
elsif @due_interests_beginning_of_period > 0
|
69
|
+
compute_period_capital - reimbursed_due_interests
|
58
70
|
else
|
59
|
-
|
71
|
+
compute_period_capital
|
60
72
|
end
|
61
73
|
end
|
74
|
+
|
75
|
+
def reimbursed_due_interests
|
76
|
+
if @deferred_period
|
77
|
+
bigd(0)
|
78
|
+
else
|
79
|
+
[
|
80
|
+
@due_interests_beginning_of_period,
|
81
|
+
compute_period_capital
|
82
|
+
].min
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def compute_period_capital
|
87
|
+
((amount + @initial_due_interests) / (duration_in_periods - deferred_in_periods)).round(2)
|
88
|
+
end
|
62
89
|
end
|
63
90
|
end
|
data/lib/loan_creator/version.rb
CHANGED
data/loan_creator.gemspec
CHANGED
@@ -24,6 +24,8 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
25
25
|
spec.add_development_dependency 'simplecov', '~> 0.16'
|
26
26
|
spec.add_development_dependency 'byebug', '~> 11.0'
|
27
|
+
spec.add_development_dependency 'pry', '~> 0.13.1'
|
28
|
+
spec.add_development_dependency 'table_print', '~> 1.5'
|
27
29
|
|
28
30
|
spec.add_runtime_dependency 'bigdecimal'
|
29
31
|
spec.add_runtime_dependency 'activesupport'
|
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.8.
|
4
|
+
version: 0.8.2
|
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-
|
15
|
+
date: 2021-05-05 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: bundler
|
@@ -84,6 +84,34 @@ dependencies:
|
|
84
84
|
- - "~>"
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: '11.0'
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: pry
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - "~>"
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.13.1
|
94
|
+
type: :development
|
95
|
+
prerelease: false
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: 0.13.1
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: table_print
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '1.5'
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '1.5'
|
87
115
|
- !ruby/object:Gem::Dependency
|
88
116
|
name: bigdecimal
|
89
117
|
requirement: !ruby/object:Gem::Requirement
|