effective_memberships 0.13.0 → 0.13.2

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: ef95cbbf40f72c47c5ca64efd70d28d1cb879e52431b22471f2d570ef759d495
4
- data.tar.gz: a150c327ec0869e26822f7d484cdc99c414cd666679150e9ee0c83efc3b125aa
3
+ metadata.gz: 3eddddc73bf54e32d870cd26982092d29cedf29083845a6ec93ddad09f9a8c46
4
+ data.tar.gz: 69e21c598c39b6d28a5031bd07308c2ededa79448975da5d4db4d9a3be50325e
5
5
  SHA512:
6
- metadata.gz: cc04a6003782b0c39e4b67d03c012dc3e2247c93b5f43bd38fd47a843da7ee0c9fa11e5a02d56672724f95c453e5cf266179ea22f9e06da851c1d484a583edd2
7
- data.tar.gz: dc070be5820ad2f616c4320a745879ff26b8e153f24ddc99fb92913d753f96198c387b58b8656e443737cec8ea1b5417032faceb394eae2ea640c61efbb05cf4
6
+ metadata.gz: 69b84ed6117f73c0b463f4236defe71bec83a59c0f06a6a2954373e6ae88070132d022dcb9f9fd39e87bd14f993b236a32e2f3ddc1b63aa8969bbb1826400ae0
7
+ data.tar.gz: 509f767917c6d3553127423e26f26784ca92f6a73b115482b5d1d25ad393fa578f73d5396446c5be8335d8a3f18dcefa53e15634edb40c80bed5c8b91658d718
@@ -360,7 +360,6 @@ module EffectiveMembershipsApplicant
360
360
  validates :declare_reinstatement, acceptance: true
361
361
  end
362
362
 
363
-
364
363
  # Admin Approve
365
364
  validate(if: -> { approved_membership_date.present? }) do
366
365
  if approved_membership_date.to_date > Time.zone.now.to_date
@@ -501,9 +500,9 @@ module EffectiveMembershipsApplicant
501
500
  end
502
501
 
503
502
  # Draft -> Submitted requirements
504
- def submit!
505
- raise('already submitted') if was_submitted?
506
- raise('expected a purchased order') unless submit_order&.purchased?
503
+ def submit!(force: false)
504
+ raise('already submitted') if was_submitted? && !force
505
+ raise('expected a purchased order') if !submit_order&.purchased? && !force
507
506
 
508
507
  wizard_steps[:checkout] ||= Time.zone.now
509
508
  wizard_steps[:submitted] = Time.zone.now
@@ -863,9 +862,21 @@ module EffectiveMembershipsApplicant
863
862
  number: approved_membership_number.presence # Set by the Admin Process form, or nil
864
863
  )
865
864
  elsif reclassification?
866
- EffectiveMemberships.Registrar.reclassify!(owner, to: to_category, status: to_status)
865
+ EffectiveMemberships.Registrar.reclassify!(
866
+ owner,
867
+ to: to_category,
868
+ status: to_status,
869
+ date: approved_membership_date.presence, # Set by the Admin Process form, or nil
870
+ number: approved_membership_number.presence # Set by the Admin Process form, or nil
871
+ )
867
872
  elsif reinstatement?
868
- EffectiveMemberships.Registrar.reinstate!(owner, to: to_category)
873
+ # No status
874
+ EffectiveMemberships.Registrar.reinstate!(
875
+ owner,
876
+ to: to_category,
877
+ date: approved_membership_date.presence, # Set by the Admin Process form, or nil
878
+ number: approved_membership_number.presence # Set by the Admin Process form, or nil
879
+ )
869
880
  else
870
881
  raise('unsupported approval applicant_type')
871
882
  end
@@ -23,6 +23,9 @@ module EffectiveMembershipsDirectory
23
23
  attr_accessor :first_name
24
24
  attr_accessor :last_name
25
25
 
26
+ # Memberships
27
+ attr_accessor :number
28
+
26
29
  # Organizations
27
30
  attr_accessor :title
28
31
 
@@ -47,7 +50,7 @@ module EffectiveMembershipsDirectory
47
50
  # Search Users and Organizations for only these fields. Passed into search_any. Return nil for all.
48
51
  # Should this include email?
49
52
  def search_any_columns
50
- [:title, :name, :first_name, :middle_name, :last_name]
53
+ [:title, :name, :first_name, :middle_name, :last_name, :number]
51
54
  end
52
55
 
53
56
  def per_page
@@ -116,6 +119,11 @@ module EffectiveMembershipsDirectory
116
119
  memberships = memberships.with_category(EffectiveMemberships.Category.where(id: category))
117
120
  end
118
121
 
122
+ # Filter by number
123
+ if number.present?
124
+ memberships = memberships.where('number ILIKE ?', "%#{number}%")
125
+ end
126
+
119
127
  # Return an ActiveRecord::Relation of Effective::Memberships
120
128
  memberships
121
129
  end
@@ -163,7 +163,7 @@ module EffectiveMembershipsRegistrar
163
163
  owner.build_prorated_fee(date: date)
164
164
  end
165
165
 
166
- def reclassify!(owner, to:, status: nil, date: nil, skip_fees: false)
166
+ def reclassify!(owner, to:, status: nil, date: nil, number: nil, skip_fees: false)
167
167
  raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
168
168
  raise('owner must have an existing membership. use register! instead') if owner.membership.blank?
169
169
 
@@ -183,6 +183,14 @@ module EffectiveMembershipsRegistrar
183
183
  # Last Changed Date
184
184
  membership.registration_on = date
185
185
 
186
+ # Assign Number (this could be nil)
187
+ number = next_membership_number(owner, to: to) if number.nil?
188
+
189
+ if number.present?
190
+ membership.number = number
191
+ membership.number_as_integer = (Integer(number) rescue nil)
192
+ end
193
+
186
194
  # Assign Category
187
195
  membership.build_membership_category(category: to)
188
196
  membership.membership_category(category: from).mark_for_destruction
@@ -213,7 +221,7 @@ module EffectiveMembershipsRegistrar
213
221
  end
214
222
  end
215
223
 
216
- def reinstate!(owner, to: nil, date: nil, skip_fees: false)
224
+ def reinstate!(owner, to: nil, date: nil, number: nil, skip_fees: false)
217
225
  raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
218
226
 
219
227
  history = owner.reinstatement_membership_history || owner.membership_histories.last
@@ -236,10 +244,15 @@ module EffectiveMembershipsRegistrar
236
244
  membership.joined_on = date
237
245
  membership.registration_on = date
238
246
 
247
+ # Assign Old Number (this could be nil)
248
+ number = history.number if history.number.present?
249
+
239
250
  # Assign Number (this could be nil)
240
- if history.number.present?
241
- membership.number = history.number
242
- membership.number_as_integer = (Integer(history.number) rescue nil)
251
+ number = next_membership_number(owner, to: to) if number.nil?
252
+
253
+ if number.present?
254
+ membership.number = number
255
+ membership.number_as_integer = (Integer(number) rescue nil)
243
256
  end
244
257
 
245
258
  # Assign Category
@@ -64,12 +64,12 @@ module Effective
64
64
 
65
65
  def reclassify!
66
66
  update!(current_action: :reclassify)
67
- EffectiveMemberships.Registrar.reclassify!(owner, to: category, skip_fees: skip_fees?)
67
+ EffectiveMemberships.Registrar.reclassify!(owner, to: category, number: number, skip_fees: skip_fees?)
68
68
  end
69
69
 
70
70
  def reinstate!
71
71
  update!(current_action: :reinstate)
72
- EffectiveMemberships.Registrar.reinstate!(owner, skip_fees: skip_fees?)
72
+ EffectiveMemberships.Registrar.reinstate!(owner, number: number, skip_fees: skip_fees?)
73
73
  end
74
74
 
75
75
  def status_assign!
@@ -8,7 +8,7 @@
8
8
 
9
9
  %p
10
10
  - if applicant.owner.membership&.number_was.present?
11
- The member will keep their existing membership number: #{applicant.owner.membership.number}.
11
+ The member will keep their existing membership number: #{applicant.owner.membership.number_was}.
12
12
  - elsif applicant.reinstatement? && reinstatement&.number.present?
13
13
  The member will keep their previous membership number: #{reinstatement.number}.
14
14
  - else
@@ -18,12 +18,15 @@
18
18
  = f.check_box :current_action, label: 'Yes, reclassify this member to another category'
19
19
 
20
20
  = f.show_if :current_action, true do
21
- %p The member will keep their existing membership number: #{membership.number}.
22
-
23
21
  - categories = f.object.owner.registrar_action_categories(:reclassify) - membership.categories
24
-
25
22
  = f.select :category_id, categories, label: 'Reclassify to', required: true
26
23
 
24
+ %p
25
+ - if membership.number.present?
26
+ The member will keep their existing membership number: #{membership.number}.
27
+ - else
28
+ = f.text_field :membership_number, hint: "leave blank to assign the next number as per the category"
29
+
27
30
  = f.check_box :skip_fees, label: 'Yes, skip creating fees and just set the category'
28
31
 
29
32
  = f.hide_if :skip_fees, true do
@@ -27,6 +27,12 @@
27
27
  = f.check_box :current_action, label: 'Yes, reinstate this member to their previous category, status and number'
28
28
 
29
29
  = f.show_if :current_action, true do
30
+ %p
31
+ - if reinstatement.number.present?
32
+ The member will keep their existing membership number: #{reinstatement.number}.
33
+ - else
34
+ = f.text_field :membership_number, hint: "leave blank to assign the next number as per the category"
35
+
30
36
  = f.check_box :skip_fees, label: 'Yes, skip creating fees and just set the category'
31
37
 
32
38
  = f.hide_if :skip_fees, true do
@@ -9,6 +9,7 @@
9
9
  /= f.search_field :title
10
10
 
11
11
  = f.select :category, membership_directory.categories
12
+ = f.search_field :number
12
13
 
13
14
  = f.save('Search', class: 'btn btn-primary btn-search mr-3', name: nil)
14
15
  = link_to 'Reset filters', request.path
@@ -2,6 +2,7 @@
2
2
  %h6= membership.owner
3
3
  %p= membership.categories.map(&:membership_directory_title).to_sentence
4
4
  %p= membership.statuses.map(&:membership_directory_title).to_sentence
5
+ %p= membership.number
5
6
 
6
7
  - if membership.owner.try(:email).present?
7
8
  %p= reveal_mail_to(membership.owner.email)
@@ -4,6 +4,7 @@
4
4
  %h6= @membership.owner
5
5
  %p= @membership.categories.map(&:membership_directory_title).to_sentence
6
6
  %p= @membership.statuses.map(&:membership_directory_title).to_sentence
7
+ %p= @membership.number
7
8
 
8
9
  - if @membership.owner.respond_to?(:rich_text_body)
9
10
  .mb-4= @membership.owner.rich_text_body.to_s
@@ -1,3 +1,3 @@
1
1
  module EffectiveMemberships
2
- VERSION = '0.13.0'
2
+ VERSION = '0.13.2'
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.13.0
4
+ version: 0.13.2
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: 2023-03-16 00:00:00.000000000 Z
11
+ date: 2023-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails