effective_memberships 0.6.2 → 0.6.5

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: 276edc8f53de07b32c2a6f5467727cda1ca37a4748dd6fccf37fd8657150e1b8
4
+ data.tar.gz: '097342ca3d781331f2d660e0e027016b34c67d0f13f24b535b2703c0d30cf212'
5
5
  SHA512:
6
- metadata.gz: 414b1c1c2b7a166fc214d35a62b6b7f5f19cddd6845852dfd0c1bc255720601673eb2607ba1456f1b5c28a92ca3092d92554577855965428e0eb2ffd7cd892b6
7
- data.tar.gz: c78a8ebee8e8e56493e89519242ebcec959603f87f877c55683fea709fc29d09c7ac3de5260124e58b1a69021ad6abb0716584826518207ef9722a5a746e98ac
6
+ metadata.gz: 87669cf4f1bc83980b9f915916a509d1580cb4ba14545c178bf344f9dfe9f0c9c8c7b45f6e350fc38d1ae4aa9f2ef0c1de93382e8e310fc368623b007b4a1a4e
7
+ data.tar.gz: 1c71acefad1595cc972e63399a4709c1d934f1f487c439bf593feb8cdb9d2167a7ea703f2d36ad78e010c727e128d7548a0b26847538ea3ba81ab48d69ba3ba4
@@ -195,7 +195,7 @@ module EffectiveMembershipsApplicant
195
195
  before_validation(if: -> { (new_record? || current_step == :select) && owner.present? }) do
196
196
  self.applicant_type ||= can_apply_applicant_types_collection().first
197
197
  self.from_category = owner.membership&.category
198
- self.from_status = owner.membership&.status
198
+ self.from_status = owner.membership&.status if reinstatement?
199
199
  end
200
200
 
201
201
  before_validation(if: -> { current_step == :experience }) do
@@ -559,7 +559,7 @@ module EffectiveMembershipsApplicant
559
559
  def can_apply_applicant_types_collection
560
560
  if owner.blank? || owner.membership.blank? || owner.membership.categories.blank?
561
561
  ['Apply to Join']
562
- elsif owner.membership.statuses.present?
562
+ elsif owner.membership.statuses.any?(&:reinstatable?)
563
563
  ['Apply for Reinstatement', 'Apply to Join']
564
564
  else
565
565
  ['Apply to Reclassify']
@@ -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
 
@@ -151,7 +151,7 @@ module EffectiveMembershipsRegistrar
151
151
  save!(owner, date: date)
152
152
  end
153
153
 
154
- def reclassify!(owner, to:, date: nil, skip_fees: false)
154
+ def reclassify!(owner, to:, status: nil, date: nil, skip_fees: false)
155
155
  raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
156
156
  raise('owner must have an existing membership. use register! instead') if owner.membership.blank?
157
157
 
@@ -159,6 +159,7 @@ module EffectiveMembershipsRegistrar
159
159
 
160
160
  raise('expecting a to memberships category') unless to.class.respond_to?(:effective_memberships_category?)
161
161
  raise('expecting a from memberships category') unless from.class.respond_to?(:effective_memberships_category?)
162
+ raise('expecting a memberships status') unless status.nil? || status.class.respond_to?(:effective_memberships_status?)
162
163
  raise('expected to and from to be different') if from == to
163
164
 
164
165
  date ||= Time.zone.now
@@ -171,6 +172,9 @@ module EffectiveMembershipsRegistrar
171
172
  membership.build_membership_category(category: to)
172
173
  membership.membership_category(category: from).mark_for_destruction
173
174
 
175
+ # Assign Status
176
+ membership.build_membership_status(status: status) if status.present?
177
+
174
178
  unless skip_fees
175
179
  fee = owner.build_prorated_fee(date: date)
176
180
  raise('already has purchased prorated fee') if fee.purchased?
@@ -305,7 +309,11 @@ module EffectiveMembershipsRegistrar
305
309
 
306
310
  def next_membership_number(owner, to:)
307
311
  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?) }
312
+
313
+ categories = Array(to)
314
+ raise('expecting a membership category') unless categories.all? { |cat| cat.class.respond_to?(:effective_memberships_category?) }
315
+
316
+ return nil if categories.none?(&:membership_number_required?)
309
317
 
310
318
  # Just a simple number right now
311
319
  number = (Effective::Membership.all.max_number || 0) + 1
@@ -68,4 +68,9 @@ module EffectiveMembershipsStatus
68
68
  status_type == 'Organization'
69
69
  end
70
70
 
71
+ # Used for Apply to Join Reinstatement
72
+ def reinstatable?
73
+ true
74
+ end
75
+
71
76
  end
@@ -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?)
@@ -3,7 +3,10 @@
3
3
 
4
4
  = card do
5
5
  - if resource.min_applicant_equivalences > 0
6
- .alert.alert-danger You must include #{resource.min_applicant_equivalences} or more equivalent memberships.
6
+ %p You must include #{resource.min_applicant_equivalences} or more equivalent memberships.
7
+
8
+ - if resource.min_applicant_equivalences == 0
9
+ %p Equivalent memberships are not required. Click the Remove button to skip adding memberships.
7
10
 
8
11
  = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
9
12
  = f.hidden_field :id
@@ -8,6 +8,9 @@
8
8
  - if resource.min_applicant_experiences_months > 0
9
9
  %p You must include #{resource.min_applicant_experiences_months} or more months of experience.
10
10
 
11
+ - if resource.min_applicant_educations == 0 && resource.min_applicant_experiences_months == 0
12
+ %p Work experience is not required. Click the Remove button to skip adding work experience.
13
+
11
14
  = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
12
15
  = f.hidden_field :id
13
16
  = f.error :applicant_experiences
@@ -1,3 +1,3 @@
1
1
  module EffectiveMemberships
2
- VERSION = '0.6.2'
2
+ VERSION = '0.6.5'
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.5
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-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails