effective_memberships 0.6.2 → 0.6.3

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
  SHA256:
3
- metadata.gz: 4b5129f1448e268a4dd8977f9ad66e4d85f6ea9a2430f4ef5ac301a134f273fd
4
- data.tar.gz: cc623fb32179f8157d28d80260ab32733fec716afbcdc0b887f76f1106fca241
3
+ metadata.gz: 3d93c9f826d21228e86c0b10e7f30453ba7201dd00e9eab65f9b332850d4cfd6
4
+ data.tar.gz: 75520c50d89f83b7f2f0657efcd3f581b058ab2af756640bccb6d5bf4fb66207
5
5
  SHA512:
6
- metadata.gz: 414b1c1c2b7a166fc214d35a62b6b7f5f19cddd6845852dfd0c1bc255720601673eb2607ba1456f1b5c28a92ca3092d92554577855965428e0eb2ffd7cd892b6
7
- data.tar.gz: c78a8ebee8e8e56493e89519242ebcec959603f87f877c55683fea709fc29d09c7ac3de5260124e58b1a69021ad6abb0716584826518207ef9722a5a746e98ac
6
+ metadata.gz: e63960291256ab28e1ae9e4a8e1949cabaf24d31ded3bdd2e74c5240ba6539431e24bf6bac5161f933b92243db98dde91cbada1f654ced95bd4725f0583d2677
7
+ data.tar.gz: 20ac5d9b6a2f1021b2df5391aa6751f48061cd9c672709870eeb303e17205968d57121089b2d851596b4e2780fe2fa903f61cfeb9969aa91ab11202f03e7eb46
@@ -169,6 +169,10 @@ module EffectiveMembershipsCategory
169
169
  category_type == 'Organization'
170
170
  end
171
171
 
172
+ def membership_number_required?
173
+ true
174
+ end
175
+
172
176
  def prorated_fee(date:)
173
177
  send("prorated_#{date.strftime('%b').downcase}").to_i
174
178
  end
@@ -53,7 +53,6 @@ module EffectiveMembershipsRegistrar
53
53
 
54
54
  # Default Date and next number
55
55
  date ||= Time.zone.now
56
- number = next_membership_number(owner, to: categories.first) if number.blank?
57
56
  period = period(date: date)
58
57
  period_end_on = period_end_on(date: date)
59
58
 
@@ -63,7 +62,8 @@ module EffectiveMembershipsRegistrar
63
62
  # Assign Dates
64
63
  membership.joined_on ||= date # Only if not already present
65
64
 
66
- # Assign Number
65
+ # Assign Number (this could be nil)
66
+ number = next_membership_number(owner, to: categories.first) if number.blank?
67
67
  membership.number ||= number
68
68
  membership.number_as_integer ||= (Integer(number) rescue nil)
69
69
 
@@ -111,7 +111,6 @@ module EffectiveMembershipsRegistrar
111
111
 
112
112
  # Default Date and next number
113
113
  date ||= Time.zone.now
114
- number = next_membership_number(owner, to: to) if number.blank?
115
114
  period = period(date: date)
116
115
  period_end_on = period_end_on(date: date)
117
116
 
@@ -122,7 +121,8 @@ module EffectiveMembershipsRegistrar
122
121
  membership.joined_on ||= date # Only if not already present
123
122
  membership.registration_on = date # Always new registration_on
124
123
 
125
- # Assign Number
124
+ # Assign Number (this could be nil)
125
+ number = next_membership_number(owner, to: to) if number.blank?
126
126
  membership.number = number
127
127
  membership.number_as_integer = (Integer(number) rescue nil)
128
128
 
@@ -305,7 +305,11 @@ module EffectiveMembershipsRegistrar
305
305
 
306
306
  def next_membership_number(owner, to:)
307
307
  raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
308
- raise('expecting a membership category') unless Array(to).all? { |to| to.class.respond_to?(:effective_memberships_category?) }
308
+
309
+ categories = Array(to)
310
+ raise('expecting a membership category') unless categories.all? { |cat| cat.class.respond_to?(:effective_memberships_category?) }
311
+
312
+ return nil if categories.none?(&:membership_number_required?)
309
313
 
310
314
  # Just a simple number right now
311
315
  number = (Effective::Membership.all.max_number || 0) + 1
@@ -51,10 +51,12 @@ module Effective
51
51
  end
52
52
 
53
53
  before_validation(if: -> { number_changed? }) do
54
- self.number_as_integer = (Integer(number) rescue nil)
54
+ self.number_as_integer = (number.present? ? (Integer(number) rescue nil) : nil)
55
55
  end
56
56
 
57
- validates :number, presence: true, uniqueness: true
57
+ validates :number, uniqueness: { allow_blank: true }
58
+ validates :number, presence: true, if: -> { categories.any?(:membership_number_required?) }
59
+
58
60
  validates :joined_on, presence: true
59
61
  validates :registration_on, presence: true
60
62
  validates :membership_categories, presence: true
@@ -80,7 +82,7 @@ module Effective
80
82
  (statuses.to_sentence if statuses.present?),
81
83
  (categories.to_sentence if categories.present?),
82
84
  'member',
83
- "##{number_was}",
85
+ ("##{number_was}" if number_was.present?),
84
86
  "who joined #{joined_on&.strftime('%F') || '-'}",
85
87
  ("and last registered #{registration_on.strftime('%F')}" if registration_on > joined_on),
86
88
  (". Membership is Not In Good Standing because #{bad_standing_reason}" if bad_standing?)
@@ -1,3 +1,3 @@
1
1
  module EffectiveMemberships
2
- VERSION = '0.6.2'
2
+ VERSION = '0.6.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_memberships
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-30 00:00:00.000000000 Z
11
+ date: 2022-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails