effective_memberships 0.13.0 → 0.13.2

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