pacioli 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -37,5 +37,19 @@ module Pacioli
37
37
  def balance
38
38
  debits.sum(&:amount) - credits.sum(&:amount)
39
39
  end
40
+
41
+ def credited_with_source_document?(source)
42
+ # has this account recorded a credit entry for the source document
43
+ self.transactions.select(&:credit?).map(&:journal_entry).select {|je| je.source == source}.any?
44
+ end
45
+
46
+ def debited_with_source_document?(source)
47
+ # has this account recorded a debit entry for the source document
48
+ self.transactions.select(&:debit?).map(&:journal_entry).select {|je| je.source == source}.any?
49
+ end
50
+
51
+ def self.for(name)
52
+ where(name: name)
53
+ end
40
54
  end
41
55
  end
@@ -11,6 +11,10 @@ module Pacioli
11
11
  Company.where(companyable_type: company.class.name, companyable_id: company.id).first
12
12
  end
13
13
 
14
+ def fetch_account(name)
15
+ self.accounts.for(name).first
16
+ end
17
+
14
18
  def asset_accounts
15
19
  self.accounts.select(&:asset?)
16
20
  end
@@ -1,5 +1,9 @@
1
1
  module Pacioli
2
2
  class Credit < Transaction
3
3
 
4
+ def credit?
5
+ true
6
+ end
7
+
4
8
  end
5
9
  end
data/lib/pacioli/debit.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  module Pacioli
2
2
  class Debit < Transaction
3
3
 
4
+ def debit?
5
+ true
6
+ end
7
+
4
8
  end
5
9
  end
@@ -3,5 +3,13 @@ module Pacioli
3
3
  belongs_to :journal_entry, foreign_key: :pacioli_journal_entry_id
4
4
  belongs_to :account, foreign_key: :pacioli_account_id
5
5
  belongs_to :customer, foreign_key: :pacioli_customer_id
6
+
7
+ def debit?
8
+ false
9
+ end
10
+
11
+ def credit?
12
+ false
13
+ end
6
14
  end
7
15
  end
@@ -1,3 +1,3 @@
1
1
  module Pacioli
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -201,7 +201,7 @@ describe Pacioli::Account do
201
201
  end
202
202
  end
203
203
 
204
- context "Recording against a customer" do
204
+ context "Recording against a customer with a source document" do
205
205
  before(:each) do
206
206
  @customer = @company.register_customer do
207
207
  with_name "Leonardo da Vinci"
@@ -214,6 +214,7 @@ describe Pacioli::Account do
214
214
 
215
215
  @company.record_journal_entry do
216
216
  with_description "Invoice 123 for November Rent"
217
+ with_source_document customer # source should be the invoice!
217
218
  debit account: "Accounts Receivable", amount: 4500.00, against_customer: customer
218
219
  credit account: "Sales", amount: 4500.00
219
220
  end
@@ -223,6 +224,11 @@ describe Pacioli::Account do
223
224
  @customer.balance.should == 4500.00
224
225
  end
225
226
 
227
+ it "should have a recorded a debit entry against Accounts Receivable for the source document" do
228
+ @company.fetch_account("Accounts Receivable").debited_with_source_document?(@customer).should be_true
229
+ @company.fetch_account("Accounts Receivable").credited_with_source_document?(@customer).should be_false
230
+ end
231
+
226
232
  context "Customer makes a payment against the invoice" do
227
233
  before(:each) do
228
234
  customer = @customer
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.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-01-18 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70302660263700 !ruby/object:Gem::Requirement
16
+ requirement: &70268710502900 !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: *70302660263700
24
+ version_requirements: *70268710502900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
27
- requirement: &70302660263200 !ruby/object:Gem::Requirement
27
+ requirement: &70268710502400 !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: *70302660263200
35
+ version_requirements: *70268710502400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: i18n
38
- requirement: &70302660262780 !ruby/object:Gem::Requirement
38
+ requirement: &70268710501980 !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: *70302660262780
46
+ version_requirements: *70268710501980
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: combustion
49
- requirement: &70302660262240 !ruby/object:Gem::Requirement
49
+ requirement: &70268710501440 !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: *70302660262240
57
+ version_requirements: *70268710501440
58
58
  description: A double-entry bookkeeping system for Ruby on Rails
59
59
  email:
60
60
  - jeffmess@gmail.com