blend_spreadsheet_loan_generator 0.1.39 → 0.1.40

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: 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