Class: Teri::CategoryManager

Inherits:
Object
  • Object
show all
Defined in:
lib/teri/category_manager.rb

Overview

Manages categories for accounting transactions

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCategoryManager

Returns a new instance of CategoryManager.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/teri/category_manager.rb', line 6

def initialize
  # Define common account categories
  @expense_categories = [
    'Expenses:Rent',
    'Expenses:Utilities',
    'Expenses:Salaries',
    'Expenses:Insurance',
    'Expenses:Office',
    'Expenses:Professional',
    'Expenses:Taxes',
    'Expenses:Interest',
    'Expenses:Maintenance',
    'Expenses:Other',
  ]

  @income_categories = [
    'Income:Sales',
    'Income:Services',
    'Income:Interest',
    'Income:Rent',
    'Income:Other',
  ]

  @asset_categories = [
    'Assets:Cash',
    'Assets:Accounts Receivable',
    'Assets:Inventory',
    'Assets:Equipment',
    'Assets:Property',
    'Assets:Other',
  ]

  @liability_categories = [
    'Liabilities:Accounts Payable',
    'Liabilities:Loans',
    'Liabilities:Mortgage',
    'Liabilities:Credit Cards',
    'Liabilities:Taxes Payable',
    'Liabilities:Other',
  ]

  @equity_categories = [
    'Equity:Capital',
    'Equity:Retained Earnings',
    'Equity:Drawings',
    'Equity:Other',
  ]
end

Instance Attribute Details

#asset_categoriesObject (readonly)

Returns the value of attribute asset_categories.



4
5
6
# File 'lib/teri/category_manager.rb', line 4

def asset_categories
  @asset_categories
end

#equity_categoriesObject (readonly)

Returns the value of attribute equity_categories.



4
5
6
# File 'lib/teri/category_manager.rb', line 4

def equity_categories
  @equity_categories
end

#expense_categoriesObject (readonly)

Returns the value of attribute expense_categories.



4
5
6
# File 'lib/teri/category_manager.rb', line 4

def expense_categories
  @expense_categories
end

#income_categoriesObject (readonly)

Returns the value of attribute income_categories.



4
5
6
# File 'lib/teri/category_manager.rb', line 4

def income_categories
  @income_categories
end

#liability_categoriesObject (readonly)

Returns the value of attribute liability_categories.



4
5
6
# File 'lib/teri/category_manager.rb', line 4

def liability_categories
  @liability_categories
end

Instance Method Details

#add_custom_category(category) ⇒ Object

Add a custom category



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/teri/category_manager.rb', line 76

def add_custom_category(category)
  type = category_type(category)
  case type
  when :expense
    @expense_categories << category unless @expense_categories.include?(category)
  when :income
    @income_categories << category unless @income_categories.include?(category)
  when :asset
    @asset_categories << category unless @asset_categories.include?(category)
  when :liability
    @liability_categories << category unless @liability_categories.include?(category)
  when :equity
    @equity_categories << category unless @equity_categories.include?(category)
  end
end

#all_categoriesObject

Returns all categories combined



56
57
58
# File 'lib/teri/category_manager.rb', line 56

def all_categories
  @expense_categories + @income_categories + @asset_categories + @liability_categories + @equity_categories
end

#category_type(category) ⇒ Object

Get category type (expense, income, asset, liability, equity)



66
67
68
69
70
71
72
73
# File 'lib/teri/category_manager.rb', line 66

def category_type(category)
  return :expense if category.start_with?('Expenses:')
  return :income if category.start_with?('Income:')
  return :asset if category.start_with?('Assets:')
  return :liability if category.start_with?('Liabilities:')
  return :equity if category.start_with?('Equity:')
  :unknown
end

#valid_category?(category) ⇒ Boolean

Check if a category is valid

Returns:

  • (Boolean)


61
62
63
# File 'lib/teri/category_manager.rb', line 61

def valid_category?(category)
  all_categories.include?(category)
end