effective_memberships 0.1.19 → 0.1.23
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/controllers/effective/applicants_controller.rb +1 -0
- data/app/models/concerns/effective_memberships_applicant.rb +45 -103
- data/app/models/concerns/effective_memberships_fee_payment.rb +23 -97
- data/app/models/effective/fee.rb +1 -3
- data/app/views/admin/categories/_form_applicant_fees.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: 928383b46dabf57a0ee3e4ebed61050c15ddd4d2da01fcc50cec8ead2ded706b
|
4
|
+
data.tar.gz: 2e7b2f5b6e5e75991239f093783ab8a83c6f2b522fa8f5a482c067d04cb122ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cd3faa8139e44db7aa485de820bed35f09b9d8cf8b2d56010cd87bf47515f143b9289362978cc305d63a50d8a24b4b8b9dadaabd240fffcc50abb970e8ac7d4
|
7
|
+
data.tar.gz: ba43e01d4180108144333d61d17f22a4297374db0842c6e33bf7044d381b192883d6813532b5717dca8df778293b065e1a0ba7d07a2c867f2c60b03912520e1e
|
@@ -60,6 +60,8 @@ module EffectiveMembershipsApplicant
|
|
60
60
|
submitted: 'Submitted'
|
61
61
|
)
|
62
62
|
|
63
|
+
acts_as_purchasable_wizard
|
64
|
+
|
63
65
|
log_changes(except: :wizard_steps) if respond_to?(:log_changes)
|
64
66
|
|
65
67
|
has_many_attached :applicant_files
|
@@ -247,12 +249,6 @@ module EffectiveMembershipsApplicant
|
|
247
249
|
validates :declare_truth, acceptance: true
|
248
250
|
end
|
249
251
|
|
250
|
-
# Billing Step
|
251
|
-
validate(if: -> { current_step == :billing && owner.present? }) do
|
252
|
-
self.errors.add(:base, "must have a billing address") unless owner.billing_address.present?
|
253
|
-
self.errors.add(:base, "must have an email") unless owner.email.present?
|
254
|
-
end
|
255
|
-
|
256
252
|
# Admin Approve
|
257
253
|
validate(if: -> { approved_membership_date.present? }) do
|
258
254
|
if approved_membership_date.to_date > Time.zone.now.to_date
|
@@ -288,10 +284,47 @@ module EffectiveMembershipsApplicant
|
|
288
284
|
end
|
289
285
|
end
|
290
286
|
|
291
|
-
|
292
|
-
|
293
|
-
|
287
|
+
# All Fees and Orders
|
288
|
+
def submit_fees
|
289
|
+
fees.select { |fee| fee.applicant_submit_fee? }
|
290
|
+
end
|
291
|
+
|
292
|
+
def submit_order
|
293
|
+
orders.find { |order| order.purchasables.any?(&:applicant_submit_fee?) }
|
294
|
+
end
|
295
|
+
|
296
|
+
def submit_fee_qb_item_name
|
297
|
+
'Applicant'
|
294
298
|
end
|
299
|
+
|
300
|
+
def find_or_build_submit_fees
|
301
|
+
return submit_fees if submit_fees.present?
|
302
|
+
|
303
|
+
fees.build(
|
304
|
+
owner: owner,
|
305
|
+
fee_type: 'Applicant',
|
306
|
+
category: category,
|
307
|
+
price: category.applicant_fee,
|
308
|
+
qb_item_name: submit_fee_qb_item_name()
|
309
|
+
)
|
310
|
+
|
311
|
+
submit_fees
|
312
|
+
end
|
313
|
+
|
314
|
+
# Draft -> Submitted requirements
|
315
|
+
def submit!
|
316
|
+
raise('already submitted') if was_submitted?
|
317
|
+
raise('expected a purchased order') unless submit_order&.purchased?
|
318
|
+
|
319
|
+
after_commit do
|
320
|
+
applicant_references.each { |reference| reference.notify! if reference.submitted? }
|
321
|
+
end
|
322
|
+
|
323
|
+
wizard_steps[:checkout] ||= Time.zone.now
|
324
|
+
wizard_steps[:submitted] = Time.zone.now
|
325
|
+
submitted!
|
326
|
+
end
|
327
|
+
|
295
328
|
end
|
296
329
|
|
297
330
|
# Instance Methods
|
@@ -330,10 +363,6 @@ module EffectiveMembershipsApplicant
|
|
330
363
|
approved? || declined?
|
331
364
|
end
|
332
365
|
|
333
|
-
def can_visit_step?(step)
|
334
|
-
can_revisit_completed_steps(step)
|
335
|
-
end
|
336
|
-
|
337
366
|
def summary
|
338
367
|
case status_was
|
339
368
|
when 'draft'
|
@@ -435,96 +464,9 @@ module EffectiveMembershipsApplicant
|
|
435
464
|
category&.min_applicant_files.to_i
|
436
465
|
end
|
437
466
|
|
438
|
-
#
|
439
|
-
|
440
|
-
|
441
|
-
end
|
442
|
-
|
443
|
-
def submit_order
|
444
|
-
orders.find { |order| order.purchasables.any?(&:applicant_submit_fee?) }
|
445
|
-
end
|
446
|
-
|
447
|
-
def find_or_build_submit_fees
|
448
|
-
return submit_fees if submit_fees.present?
|
449
|
-
|
450
|
-
fees.build(
|
451
|
-
owner: owner,
|
452
|
-
fee_type: 'Applicant',
|
453
|
-
category: category,
|
454
|
-
price: category.applicant_fee
|
455
|
-
)
|
456
|
-
|
457
|
-
submit_fees
|
458
|
-
end
|
459
|
-
|
460
|
-
def find_or_build_submit_order
|
461
|
-
order = submit_order || orders.build(user: owner)
|
462
|
-
fees = submit_fees()
|
463
|
-
|
464
|
-
# Adds fees, but does not overwrite any existing price.
|
465
|
-
fees.each do |fee|
|
466
|
-
order.add(fee) unless order.purchasables.include?(fee)
|
467
|
-
end
|
468
|
-
|
469
|
-
order.purchasables.each do |purchasable|
|
470
|
-
order.remove(purchasable) unless fees.include?(purchasable)
|
471
|
-
end
|
472
|
-
|
473
|
-
# From Billing Step
|
474
|
-
order.billing_address = owner.billing_address if owner.billing_address.present?
|
475
|
-
|
476
|
-
order.save
|
477
|
-
|
478
|
-
order
|
479
|
-
end
|
480
|
-
|
481
|
-
# Should be indempotent.
|
482
|
-
def build_submit_fees_and_order
|
483
|
-
return false if was_submitted?
|
484
|
-
|
485
|
-
fees = find_or_build_submit_fees()
|
486
|
-
raise('already has purchased submit fees') if fees.any? { |fee| fee.purchased? }
|
487
|
-
|
488
|
-
order = find_or_build_submit_order()
|
489
|
-
raise('already has purchased submit order') if order.purchased?
|
490
|
-
|
491
|
-
true
|
492
|
-
end
|
493
|
-
|
494
|
-
# Owner clicks on the Billing step. Next step is Checkout
|
495
|
-
def billing!
|
496
|
-
ready!
|
497
|
-
end
|
498
|
-
|
499
|
-
# Ready to check out
|
500
|
-
def ready!
|
501
|
-
build_submit_fees_and_order
|
502
|
-
save!
|
503
|
-
end
|
504
|
-
|
505
|
-
# Called automatically via after_purchase hook above
|
506
|
-
def submit_purchased!
|
507
|
-
return false if was_submitted?
|
508
|
-
|
509
|
-
wizard_steps[:checkout] = Time.zone.now
|
510
|
-
submit!
|
511
|
-
end
|
512
|
-
|
513
|
-
# Draft -> Submitted requirements
|
514
|
-
def submit!
|
515
|
-
raise('already submitted') if was_submitted?
|
516
|
-
raise('expected a purchased order') unless submit_order&.purchased?
|
517
|
-
|
518
|
-
after_commit do
|
519
|
-
applicant_references.each { |reference| reference.notify! if reference.submitted? }
|
520
|
-
end
|
521
|
-
|
522
|
-
wizard_steps[:checkout] ||= Time.zone.now
|
523
|
-
wizard_steps[:submitted] = Time.zone.now
|
524
|
-
submitted!
|
525
|
-
end
|
526
|
-
|
527
|
-
# Submitted -> Completed requirements
|
467
|
+
# The submit! method used to be here
|
468
|
+
# But it needs to be inside the included do block
|
469
|
+
# So see above. Sorry.
|
528
470
|
|
529
471
|
def applicant_references_required?
|
530
472
|
min_applicant_references > 0
|
@@ -44,6 +44,8 @@ module EffectiveMembershipsFeePayment
|
|
44
44
|
submitted: 'Submitted'
|
45
45
|
)
|
46
46
|
|
47
|
+
acts_as_purchasable_wizard
|
48
|
+
|
47
49
|
log_changes(except: :wizard_steps) if respond_to?(:log_changes)
|
48
50
|
|
49
51
|
# Declarations Step
|
@@ -110,12 +112,6 @@ module EffectiveMembershipsFeePayment
|
|
110
112
|
validates :declare_truth, acceptance: true
|
111
113
|
end
|
112
114
|
|
113
|
-
# Billing Step
|
114
|
-
validate(if: -> { current_step == :billing && owner.present? }) do
|
115
|
-
self.errors.add(:base, "must have a billing address") unless owner.billing_address.present?
|
116
|
-
self.errors.add(:base, "must have an email") unless owner.email.present?
|
117
|
-
end
|
118
|
-
|
119
115
|
# Clear required steps memoization
|
120
116
|
after_save { @_required_steps = nil }
|
121
117
|
|
@@ -135,13 +131,30 @@ module EffectiveMembershipsFeePayment
|
|
135
131
|
end
|
136
132
|
end
|
137
133
|
|
138
|
-
|
139
|
-
|
134
|
+
# All Fees and Orders
|
135
|
+
# Overriding acts_as_purchasable_wizard
|
136
|
+
def outstanding_fees
|
137
|
+
owner&.outstanding_fee_payment_fees
|
138
|
+
end
|
139
|
+
|
140
|
+
def submit_fees
|
141
|
+
fees
|
142
|
+
end
|
143
|
+
|
144
|
+
def submit_order
|
145
|
+
orders.first
|
146
|
+
end
|
147
|
+
|
148
|
+
# We take over the owner's outstanding fees.
|
149
|
+
def find_or_build_submit_fees
|
150
|
+
Array(outstanding_fees).each { |fee| fees << fee unless fees.include?(fee) }
|
151
|
+
submit_fees
|
152
|
+
end
|
140
153
|
|
141
|
-
|
142
|
-
after_submit_purchased!
|
154
|
+
def after_submit_purchased!
|
143
155
|
EffectiveMemberships.Registrar.fee_payment_purchased!(owner)
|
144
156
|
end
|
157
|
+
|
145
158
|
end
|
146
159
|
|
147
160
|
def to_s
|
@@ -157,14 +170,6 @@ module EffectiveMembershipsFeePayment
|
|
157
170
|
submitted?
|
158
171
|
end
|
159
172
|
|
160
|
-
def can_visit_step?(step)
|
161
|
-
can_revisit_completed_steps(step)
|
162
|
-
end
|
163
|
-
|
164
|
-
def outstanding_fees
|
165
|
-
owner&.outstanding_fee_payment_fees
|
166
|
-
end
|
167
|
-
|
168
173
|
def select!
|
169
174
|
reset!
|
170
175
|
end
|
@@ -200,83 +205,4 @@ module EffectiveMembershipsFeePayment
|
|
200
205
|
owner.representatives.any?(&:marked_for_destruction?)
|
201
206
|
end
|
202
207
|
|
203
|
-
# All Fees and Orders
|
204
|
-
def submit_fees
|
205
|
-
fees
|
206
|
-
end
|
207
|
-
|
208
|
-
def submit_order
|
209
|
-
orders.first
|
210
|
-
end
|
211
|
-
|
212
|
-
# We take over the owner's outstanding fees.
|
213
|
-
def find_or_build_submit_fees
|
214
|
-
Array(outstanding_fees).each { |fee| fees << fee unless fees.include?(fee) }
|
215
|
-
submit_fees
|
216
|
-
end
|
217
|
-
|
218
|
-
def find_or_build_submit_order
|
219
|
-
order = submit_order || orders.build(user: owner)
|
220
|
-
fees = submit_fees()
|
221
|
-
|
222
|
-
fees.each do |fee|
|
223
|
-
order.add(fee) unless order.purchasables.include?(fee)
|
224
|
-
end
|
225
|
-
|
226
|
-
order.purchasables.each do |purchasable|
|
227
|
-
order.remove(purchasable) unless fees.include?(purchasable)
|
228
|
-
end
|
229
|
-
|
230
|
-
order.billing_address = owner.billing_address if owner.billing_address.present?
|
231
|
-
|
232
|
-
order.save
|
233
|
-
|
234
|
-
order
|
235
|
-
end
|
236
|
-
|
237
|
-
# Should be indempotent.
|
238
|
-
def build_submit_fees_and_order
|
239
|
-
return false if was_submitted?
|
240
|
-
|
241
|
-
fees = find_or_build_submit_fees()
|
242
|
-
raise('already has purchased submit fees') if fees.any? { |fee| fee.purchased? }
|
243
|
-
|
244
|
-
order = find_or_build_submit_order()
|
245
|
-
raise('already has purchased submit order') if order.purchased?
|
246
|
-
|
247
|
-
true
|
248
|
-
end
|
249
|
-
|
250
|
-
# Owner clicks on the Billing Submit. Next step is Checkout
|
251
|
-
def billing!
|
252
|
-
ready!
|
253
|
-
end
|
254
|
-
|
255
|
-
def ready!
|
256
|
-
build_submit_fees_and_order
|
257
|
-
save!
|
258
|
-
end
|
259
|
-
|
260
|
-
# Called automatically via after_purchase hook above
|
261
|
-
def submit_purchased!
|
262
|
-
return false if was_submitted?
|
263
|
-
|
264
|
-
wizard_steps[:checkout] = Time.zone.now
|
265
|
-
submit!
|
266
|
-
end
|
267
|
-
|
268
|
-
# A hook to extend
|
269
|
-
def after_submit_purchased!
|
270
|
-
end
|
271
|
-
|
272
|
-
# Draft -> Submitted
|
273
|
-
def submit!
|
274
|
-
raise('already submitted') if was_submitted?
|
275
|
-
raise('expected a purchased order') unless submit_order&.purchased?
|
276
|
-
|
277
|
-
wizard_steps[:checkout] ||= Time.zone.now
|
278
|
-
wizard_steps[:submitted] = Time.zone.now
|
279
|
-
submitted!
|
280
|
-
end
|
281
|
-
|
282
208
|
end
|
data/app/models/effective/fee.rb
CHANGED
@@ -107,8 +107,6 @@ module Effective
|
|
107
107
|
EffectiveMemberships.custom_fee_types.include?(fee_type)
|
108
108
|
end
|
109
109
|
|
110
|
-
private
|
111
|
-
|
112
110
|
def default_period
|
113
111
|
EffectiveMemberships.Registrar.current_period
|
114
112
|
end
|
@@ -131,7 +129,7 @@ module Effective
|
|
131
129
|
end
|
132
130
|
|
133
131
|
def default_qb_item_name
|
134
|
-
category&.qb_item_name.presence || "#{fee_type}
|
132
|
+
category&.qb_item_name.presence || "#{fee_type}"
|
135
133
|
end
|
136
134
|
|
137
135
|
def default_tax_exempt
|
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.1.
|
4
|
+
version: 0.1.23
|
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-01-
|
11
|
+
date: 2022-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|