pacioli 0.0.8 → 0.0.9

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.
@@ -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