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 +4 -4
- data/app/models/concerns/effective_memberships_applicant.rb +2 -2
- data/app/models/concerns/effective_memberships_category.rb +4 -0
- data/app/models/concerns/effective_memberships_registrar.rb +14 -6
- data/app/models/concerns/effective_memberships_status.rb +5 -0
- data/app/models/effective/membership.rb +5 -3
- data/app/views/effective/applicants/equivalences.html.haml +4 -1
- data/app/views/effective/applicants/experience.html.haml +3 -0
- data/lib/effective_memberships/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 276edc8f53de07b32c2a6f5467727cda1ca37a4748dd6fccf37fd8657150e1b8
|
4
|
+
data.tar.gz: '097342ca3d781331f2d660e0e027016b34c67d0f13f24b535b2703c0d30cf212'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
562
|
+
elsif owner.membership.statuses.any?(&:reinstatable?)
|
563
563
|
['Apply for Reinstatement', 'Apply to Join']
|
564
564
|
else
|
565
565
|
['Apply to Reclassify']
|
@@ -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
|
-
|
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
|
@@ -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,
|
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
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2022-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|