Module: BouchCalculate

Included in:
Bouch
Defined in:
lib/bouch/calc.rb

Overview

Financial budget calculation and operations for Bouch

Instance Method Summary collapse

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_totalObject

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