blend_spreadsheet_loan_generator 0.1.39 → 0.1.40

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: d043810b8912e85bfe40bcfee3a276bc123abfd79347ab6673ee81e752fade55
4
- data.tar.gz: d1eaab1e4233d002cb125bd57f2027e165e3f41585e41ec01550d302f73f89f2
3
+ metadata.gz: 36f54b0c351b2b367ae9742d235e2aaa484df2e16388935da8ca576aa405b862
4
+ data.tar.gz: f87380832034597138217d523984e200e45c3826433ad4e25d9addc03b344da8
5
5
  SHA512:
6
- metadata.gz: a86ad2ef28e743138548bc11ef58215557eeada70dbf373b38e34e9a64fdcaf1c301ef95fe4ff31dda5becdc384747799ce214151ed2ec964d00ca82608ff12f
7
- data.tar.gz: 876b38428df482b091fc480dfae9a643e9a8c4b231f7ff60a3c488f7b3553fcf4e152ac3d9e45aa16ec1ae8213d7edc3276fc4c1c91e95276c1da2c7ebcc6cf2
6
+ metadata.gz: 2cfa0694a3f2ef0ca4fe5e85025e1f6912bc37c2667ff0fe872add54a85664f7868dc79d79c96fdf5a753485aa5685652f7f4af9499e06f417187e85448e5eed
7
+ data.tar.gz: 5dbd7beb01e12da8b58f6402769c0842b0929a61e04fefc93f427ba94b5ccc34d53b21517b2dad53b9f32eea6f620636d03638f000dafe76d787f927e72635ba
@@ -87,13 +87,17 @@ module BlendSpreadsheetLoanGenerator
87
87
  end
88
88
  end
89
89
 
90
- def apply_formulas(worksheet:)
90
+ def apply_formulas(worksheet:, early_repayment?: true)
91
91
  columns.each.with_index do |title, column|
92
92
  worksheet[1, column + 1] = title
93
93
  end
94
94
  loan.duration.times do |line|
95
95
  columns.each.with_index do |title, column|
96
- worksheet[line + 2, column + 1] = @formula.send("#{title}_formula", line: line + 2)
96
+ if early_repayment && title == 'period_calculated_fees'
97
+ worksheet[line + 2, column + 1] = @formula.send("#{title}_formula", line: line + 2, early_repayment?: true)
98
+ else
99
+ worksheet[line + 2, column + 1] = @formula.send("#{title}_formula", line: line + 2)
100
+ end
97
101
  end
98
102
  end
99
103
  end
@@ -127,7 +127,7 @@ module BlendSpreadsheetLoanGenerator
127
127
 
128
128
  @formula = Formula.new(loan: loan)
129
129
 
130
- apply_formulas(worksheet: worksheet)
130
+ apply_formulas(worksheet: worksheet, early_repayment?: true)
131
131
 
132
132
  worksheet[2, columns.index('remaining_capital_start') + 1] =
133
133
  excel_float(values[last_paid_line + 1][:remaining_capital_start])
@@ -168,15 +168,23 @@ module BlendSpreadsheetLoanGenerator
168
168
  end
169
169
  end
170
170
 
171
- def period_calculated_fees_formula(line:)
171
+ def period_calculated_fees_formula(line:, early_repayment?: false)
172
172
  term = line - 1
173
173
  if loan.deferred_and_capitalized > 0 && term > loan.deferred_and_capitalized
174
174
  with_fees = "#{remaining_capital_start(line)} * (1 + #{period_rate(line)} + #{period_fees_rate(line)})^#{loan.deferred_and_capitalized} * (#{period_rate(line)} + #{period_fees_rate(line)})"
175
175
  without_fees = "#{remaining_capital_start(line)} * (1 + #{period_rate(line)})^#{loan.deferred_and_capitalized} * #{period_rate(line)}"
176
+
176
177
  "=#{with_fees} - #{without_fees}"
177
178
  elsif loan.bullet_term?(term)
178
- with_fees = "#{remaining_capital_start(line)} * (1 + #{period_fees_rate(line)} + #{period_rate(line)})^#{index(line)}"
179
- without_fees = "#{remaining_capital_start(line)} * (1 + #{period_rate(line)})^#{index(line)}"
179
+ index = (
180
+ if early_repayment?
181
+ index(line - 1)
182
+ else
183
+ index(line)
184
+ end
185
+ )
186
+ with_fees = "#{remaining_capital_start(line)} * (1 + #{period_fees_rate(line)} + #{period_rate(line)})^#{index}"
187
+ without_fees = "#{remaining_capital_start(line)} * (1 + #{period_rate(line)})^#{index}"
180
188
  current = "#{with_fees} - #{without_fees}"
181
189
 
182
190
  "=#{current} - #{capitalized_fees_start(line)}"
@@ -1,7 +1,7 @@
1
1
  require 'dry/cli'
2
2
 
3
3
  module BlendSpreadsheetLoanGenerator
4
- VERSION = '0.1.39'.freeze
4
+ VERSION = '0.1.40'.freeze
5
5
 
6
6
  class Version < Dry::CLI::Command
7
7
  desc 'Print version'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blend_spreadsheet_loan_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.39
4
+ version: 0.1.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - MZiserman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-27 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport