pacioli 0.0.5 → 0.0.6
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.
- data/lib/pacioli/company.rb +10 -14
- data/lib/pacioli/exception.rb +1 -0
- data/lib/pacioli/validations/company_validator.rb +20 -0
- data/lib/pacioli/version.rb +1 -1
- data/lib/pacioli.rb +1 -0
- data/spec/lib/pacioli/account_spec.rb +8 -0
- metadata +10 -9
data/lib/pacioli/company.rb
CHANGED
@@ -43,34 +43,30 @@ module Pacioli
|
|
43
43
|
self.companyable = companyable_object
|
44
44
|
end
|
45
45
|
|
46
|
-
def
|
47
|
-
account = AssetAccount.create!(options)
|
46
|
+
def add_account(account)
|
48
47
|
self.accounts << account
|
48
|
+
CompanyValidator.for(self).execute
|
49
49
|
account
|
50
50
|
end
|
51
51
|
|
52
|
+
def add_asset_account(options={})
|
53
|
+
add_account AssetAccount.new(options)
|
54
|
+
end
|
55
|
+
|
52
56
|
def add_equity_account(options={})
|
53
|
-
|
54
|
-
self.accounts << account
|
55
|
-
account
|
57
|
+
add_account EquityAccount.new(options)
|
56
58
|
end
|
57
59
|
|
58
60
|
def add_liability_account(options={})
|
59
|
-
|
60
|
-
self.accounts << account
|
61
|
-
account
|
61
|
+
add_account LiabilityAccount.new(options)
|
62
62
|
end
|
63
63
|
|
64
64
|
def add_income_account(options={})
|
65
|
-
|
66
|
-
self.accounts << account
|
67
|
-
account
|
65
|
+
add_account IncomeAccount.new(options)
|
68
66
|
end
|
69
67
|
|
70
68
|
def add_expense_account(options={})
|
71
|
-
|
72
|
-
self.accounts << account
|
73
|
-
account
|
69
|
+
add_account ExpenseAccount.new(options)
|
74
70
|
end
|
75
71
|
|
76
72
|
def record_journal_entry(&block)
|
data/lib/pacioli/exception.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Pacioli
|
2
|
+
class CompanyValidator
|
3
|
+
attr_accessor :company
|
4
|
+
|
5
|
+
def self.for(company)
|
6
|
+
validator = new
|
7
|
+
validator.company = company
|
8
|
+
validator
|
9
|
+
end
|
10
|
+
|
11
|
+
def execute
|
12
|
+
validate_accounts
|
13
|
+
end
|
14
|
+
|
15
|
+
def validate_accounts
|
16
|
+
accounts = self.company.accounts.map(&:name)
|
17
|
+
raise Pacioli::CompanyAccountException, "The company has multiple accounts with the same name: '#{accounts.detect{ |e| accounts.count(e) > 1 }}' already exists" unless accounts.detect{ |e| accounts.count(e) > 1 }.nil?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/pacioli/version.rb
CHANGED
data/lib/pacioli.rb
CHANGED
@@ -38,6 +38,14 @@ describe Pacioli::Account do
|
|
38
38
|
account.should be_income
|
39
39
|
end
|
40
40
|
|
41
|
+
it "should raise an error when trying to add multiple accounts with the same name" do
|
42
|
+
@company.add_income_account name: "Sales"
|
43
|
+
lambda {
|
44
|
+
@company.add_income_account name: "Sales"
|
45
|
+
}.should raise_error(Pacioli::CompanyAccountException, "The company has multiple accounts with the same name: 'Sales' already exists")
|
46
|
+
|
47
|
+
end
|
48
|
+
|
41
49
|
end
|
42
50
|
|
43
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pacioli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-01-17 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70282124011920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70282124011920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activerecord
|
27
|
-
requirement: &
|
27
|
+
requirement: &70282124011420 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70282124011420
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: i18n
|
38
|
-
requirement: &
|
38
|
+
requirement: &70282124011000 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70282124011000
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: combustion
|
49
|
-
requirement: &
|
49
|
+
requirement: &70282124010460 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 0.3.1
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70282124010460
|
58
58
|
description: A double-entry bookkeeping system for Ruby on Rails
|
59
59
|
email:
|
60
60
|
- jeffmess@gmail.com
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/pacioli/liability_account.rb
|
87
87
|
- lib/pacioli/posting_rule.rb
|
88
88
|
- lib/pacioli/transaction.rb
|
89
|
+
- lib/pacioli/validations/company_validator.rb
|
89
90
|
- lib/pacioli/validations/journal_entry_validator.rb
|
90
91
|
- lib/pacioli/validations/posting_rule_validator.rb
|
91
92
|
- lib/pacioli/version.rb
|