Module: BouchCalculate
- Included in:
- Bouch
- Defined in:
- lib/bouch/calc.rb
Overview
Financial budget calculation and operations for Bouch
Instance Method Summary collapse
-
#calc_assets(assets, type = 'assets') ⇒ Object
Calculate asset value aggregate amount.
-
#calc_budget_percentage(total, salary) ⇒ Object
Calculate the percentage of budget of a salary/income.
-
#calc_debt_ratio(debts, assets) ⇒ Object
Calculate a debt ratio: total debts divided by total assets.
-
#calc_debt_ratio_percent(debt_ratio) ⇒ Object
Calculate a debt ratio percentage.
-
#calc_debts(debts) ⇒ Object
Calculate debt/liability aggregate amount.
-
#calc_net_worth(assets = [], equity = []) ⇒ Object
Calculate a Net Worth sum.
-
#calc_quarters_raw(budget) ⇒ Object
Calculate each financial quarters budget items, including repeating ones.
-
#calc_quarters_raw_total ⇒ Object
Calculate all financial quarter budget into an aggregate annual budget.
-
#calc_repeating(item) ⇒ Object
Calculate a quarterly repeating budget item amount.
-
#calc_salary(amount, freq) ⇒ Object
Calculate an annual income based on a weekly frequency salary.
Instance Method Details
#calc_assets(assets, type = 'assets') ⇒ Object
Calculate asset value aggregate amount
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/bouch/calc.rb', line 6 def calc_assets(assets, type = 'assets') return if assets.nil? assets.each_value do |value| case type when 'assets' @assets << value when 'equity' @equity << value end end end |
#calc_budget_percentage(total, salary) ⇒ Object
Calculate the percentage of budget of a salary/income
20 21 22 |
# File 'lib/bouch/calc.rb', line 20 def calc_budget_percentage(total, salary) ((total.to_f / salary) * 100).round(2) end |
#calc_debt_ratio(debts, assets) ⇒ Object
Calculate a debt ratio: total debts divided by total assets
34 35 36 |
# File 'lib/bouch/calc.rb', line 34 def calc_debt_ratio(debts, assets) (debts.to_f / assets).round(4) end |
#calc_debt_ratio_percent(debt_ratio) ⇒ Object
Calculate a debt ratio percentage
39 40 41 |
# File 'lib/bouch/calc.rb', line 39 def calc_debt_ratio_percent(debt_ratio) (debt_ratio.to_f * 100).round(2) end |
#calc_debts(debts) ⇒ Object
Calculate debt/liability aggregate amount
25 26 27 28 29 30 31 |
# File 'lib/bouch/calc.rb', line 25 def calc_debts(debts) return if debts.nil? debts.each_value do |value| @debts << value end end |
#calc_net_worth(assets = [], equity = []) ⇒ Object
Calculate a Net Worth sum
44 45 46 |
# File 'lib/bouch/calc.rb', line 44 def calc_net_worth(assets = [], equity = []) @net_worth = (assets + equity).sum.to_f.round(2) end |
#calc_quarters_raw(budget) ⇒ Object
Calculate each financial quarters budget items, including repeating ones
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/bouch/calc.rb', line 59 def calc_quarters_raw(budget) budget.each_value do |items| idx = @quarters.length @quarters[idx] = [] items.each_value do |value| case value when Hash if value.key?('repeat') @quarters[idx] << calc_repeating(value['cost']) end else @quarters[idx] << value end end end end |
#calc_quarters_raw_total ⇒ Object
Calculate all financial quarter budget into an aggregate annual budget
77 78 79 |
# File 'lib/bouch/calc.rb', line 77 def calc_quarters_raw_total @quarters[0].sum + @quarters[1].sum + @quarters[2].sum + @quarters[3].sum end |
#calc_repeating(item) ⇒ Object
Calculate a quarterly repeating budget item amount
49 50 51 |
# File 'lib/bouch/calc.rb', line 49 def calc_repeating(item) (item.to_f * 3).round(2) end |
#calc_salary(amount, freq) ⇒ Object
Calculate an annual income based on a weekly frequency salary
54 55 56 |
# File 'lib/bouch/calc.rb', line 54 def calc_salary(amount, freq) (amount.to_f * (52.0 / freq)).round(2) end |