effective_memberships 0.6.2 → 0.6.3

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