has_accounts 3.0.0.beta1 → 3.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e8806313d5c398494b0e1b60afe3a17ff4668dac
4
- data.tar.gz: 6eedb23cab48c97e30091ad035ad5ac7b2750e6a
3
+ metadata.gz: 579e264a5e2414301a5525c6b97dfe24cc8c5f64
4
+ data.tar.gz: 846d989c4b8192f05c4447c7a94ca2e334296870
5
5
  SHA512:
6
- metadata.gz: 6dcac2203c5128d8e3f342f7e5f75754d02c16b637a0353d8de1302991b32db46dddbc16ab54ec773cbf8a6713836ff95f36fe99bb11105115e1d9a72a2925e7
7
- data.tar.gz: 78c214b9b67659bbc56aed363b6c4d4e0c87ad9d785d16acd29b12a0737e5c493d6b92896626bd81998f19b11d8bdbc464605a1f396983ca15950e881518b424
6
+ metadata.gz: 79b725ac935eb1fe671a12574ce1a92f97a712735b00683472381016b815249c4bd30ca012cf1fef17c7ec27cf752a5f4e1f8cd2fdc8e3cf28b640fd53203699
7
+ data.tar.gz: e02026c59e428421d0ed3675ee8d7dc04328b6402aeca15936da9bb9a8336d976462a9b2dcb0afab30294303132d61920e8f952844088dd0da3eb125c081737c
@@ -51,6 +51,17 @@ class Account < ActiveRecord::Base
51
51
  # Tagging
52
52
  # =======
53
53
  if defined?(ActsAsTaggableOn) && ActsAsTaggableOn::Tag.table_exists?
54
+ class Account::AmbiguousTag < StandardError
55
+ def initialize(tag, count)
56
+ @tag = tag
57
+ @count = count
58
+ end
59
+
60
+ def to_s
61
+ "Given tag '#{@tag}' is ambiguous, found #{@count} records"
62
+ end
63
+ end
64
+
54
65
  acts_as_taggable
55
66
  attr_accessible :tag_list
56
67
 
@@ -61,6 +72,13 @@ class Account < ActiveRecord::Base
61
72
  def self.tag_collection
62
73
  (default_tags + Account.tag_counts.pluck(:name)).uniq
63
74
  end
75
+
76
+ def self.find_by_tag(tag)
77
+ accounts = tagged_with(tag)
78
+ count = accounts.count
79
+ raise Account::AmbiguousTag.new(tag, count) if count > 1
80
+ accounts.first
81
+ end
64
82
  end
65
83
 
66
84
  # Holder
@@ -77,6 +77,9 @@ class Booking < ActiveRecord::Base
77
77
  end
78
78
  }
79
79
 
80
+ # Scope for code filter
81
+ scope :by_code, -> (code) { where(code: code) }
82
+
80
83
  # Scope for date filter
81
84
  #
82
85
  # @param from [Date]
@@ -160,7 +163,7 @@ class Booking < ActiveRecord::Base
160
163
 
161
164
  # Accounted bookings
162
165
  # ==================
163
- SELECT_ACCOUNTED_AMOUNT = 'CASE WHEN credit_account_id = debit_account_id THEN 0.0 WHEN credit_account_id = %{account_id} THEN -bookings.amount WHEN debit_account_id = %{account_id} THEN bookings.amount ELSE 0 END'
166
+ SELECT_ACCOUNTED_AMOUNT = 'CASE WHEN credit_account_id = debit_account_id THEN 0.0 WHEN credit_account_id = %{account_id} THEN -bookings.amount WHEN debit_account_id = %{account_id} THEN bookings.amount ELSE 0 END'
164
167
 
165
168
  private
166
169
 
@@ -170,7 +173,7 @@ class Booking < ActiveRecord::Base
170
173
  elsif Account.exists?(account_or_id)
171
174
  return account_or_id
172
175
  else
173
- fail 'argument needs to be a record of type Account or an id for an existing Account record.'
176
+ raise ActiveRecord::RecordNotFound, 'argument needs to be a record of type Account or an id for an existing Account record.'
174
177
  end
175
178
  end
176
179
 
@@ -117,7 +117,7 @@ class BookingTemplate < ActiveRecord::Base
117
117
  # @return [Booking] unsaved Booking
118
118
  def self.build_booking(code, params = {})
119
119
  template = find_by_code(code)
120
- fail "BookingTemplate not found for '#{code}'" unless template
120
+ raise ActiveRecord::RecordNotFound, "BookingTemplate not found for '#{code}'" unless template
121
121
 
122
122
  template.build_booking params
123
123
  end
@@ -1,3 +1,3 @@
1
1
  module HasAccounts
2
- VERSION = '3.0.0.beta1'
2
+ VERSION = '3.0.0.beta2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_accounts
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta1
4
+ version: 3.0.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Hürlimann (CyT)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-28 00:00:00.000000000 Z
11
+ date: 2015-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -94,3 +94,4 @@ signing_key:
94
94
  specification_version: 4
95
95
  summary: HasAccounts provides models for financial accounting.
96
96
  test_files: []
97
+ has_rdoc: