effective_memberships 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/admin/registrar_actions_controller.rb +4 -0
- data/app/datatables/admin/effective_membership_histories_datatable.rb +9 -1
- data/app/models/concerns/effective_memberships_owner.rb +4 -0
- data/app/models/effective/registrar_action.rb +24 -10
- data/app/views/admin/registrar_actions/_form_assign.html.haml +34 -0
- data/app/views/admin/registrar_actions/_form_bad_standing.html.haml +6 -5
- data/app/views/admin/registrar_actions/_form_reclassify.html.haml +2 -3
- data/app/views/admin/registrar_actions/_form_register.html.haml +1 -1
- data/lib/effective_memberships/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '017428f74b7a9dd16e4d16a8a256ca2cbf510252266908134034cc56eb651c42'
|
4
|
+
data.tar.gz: be01e2eb2f76608ae46b1cfbed55225c3e32f035345e32912db4fcba901da1c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84ccc24c2f09182b1288da31693dde5500478aa4eb9ba3fe58320a12fd85e113df9eaa7b7e954cf39fad473377ea72d855d2e959f89fdc7c5746f4314bdf9258
|
7
|
+
data.tar.gz: 15e78208b04cc08f90f09056b7fb5a5df92b3b1b55255734751501ca9fe3a2572ddf5448bf5f09139ee0c6b08f133451ed19a2232d8d3cbe5954ddcfddc20102
|
@@ -14,6 +14,10 @@ module Admin
|
|
14
14
|
success: -> { "#{resource.owner} has been reclassified to #{resource.owner.membership.category}" },
|
15
15
|
redirect: -> { admin_owners_path(resource) }
|
16
16
|
|
17
|
+
submit :assign, 'Assign',
|
18
|
+
success: -> { "#{resource.owner} has been assigned to #{resource.owner.membership.categories.to_sentence}" },
|
19
|
+
redirect: -> { admin_owners_path(resource) }
|
20
|
+
|
17
21
|
submit :remove, 'Remove',
|
18
22
|
success: -> { "#{resource.owner} has been removed" },
|
19
23
|
redirect: -> { admin_owners_path(resource) }
|
@@ -14,7 +14,15 @@ module Admin
|
|
14
14
|
|
15
15
|
col :number
|
16
16
|
|
17
|
-
col :categories, label: 'Category'
|
17
|
+
col :categories, label: 'Category' do |history|
|
18
|
+
history.categories.map.with_index do |category, index|
|
19
|
+
category_id = history.category_ids[index]
|
20
|
+
link = link_to(category, effective_memberships.edit_admin_category_path(category_id))
|
21
|
+
|
22
|
+
content_tag(:div, link, class: 'col-resource_item')
|
23
|
+
end.join.html_safe
|
24
|
+
end
|
25
|
+
|
18
26
|
col :category_ids, visible: false
|
19
27
|
|
20
28
|
col :bad_standing
|
@@ -103,6 +103,10 @@ module EffectiveMembershipsOwner
|
|
103
103
|
membership_histories.find { |history| history.removed? }.start_on
|
104
104
|
end
|
105
105
|
|
106
|
+
def registrar_action_categories(action)
|
107
|
+
EffectiveMemberships.Category.sorted.all
|
108
|
+
end
|
109
|
+
|
106
110
|
# Instance Methods
|
107
111
|
def additional_fee_attributes(fee)
|
108
112
|
raise('expected an Effective::Fee') unless fee.kind_of?(Effective::Fee)
|
@@ -17,6 +17,9 @@ module Effective
|
|
17
17
|
attr_accessor :membership_number
|
18
18
|
attr_accessor :skip_fees
|
19
19
|
|
20
|
+
# Assign
|
21
|
+
attr_accessor :category_ids
|
22
|
+
|
20
23
|
# All Action Validations
|
21
24
|
validates :current_action, presence: true
|
22
25
|
validates :current_user, presence: true
|
@@ -29,10 +32,27 @@ module Effective
|
|
29
32
|
validates :category_id, presence: true,
|
30
33
|
if: -> { current_action == :reclassify || current_action == :register }
|
31
34
|
|
35
|
+
validates :category_ids, presence: true, if: -> { current_action == :assign }
|
36
|
+
|
32
37
|
def to_s
|
33
38
|
'action'
|
34
39
|
end
|
35
40
|
|
41
|
+
def register!
|
42
|
+
update!(current_action: :register)
|
43
|
+
EffectiveMemberships.Registrar.register!(owner, to: category, number: membership_number.presence, skip_fees: skip_fees?)
|
44
|
+
end
|
45
|
+
|
46
|
+
def reclassify!
|
47
|
+
update!(current_action: :reclassify)
|
48
|
+
EffectiveMemberships.Registrar.reclassify!(owner, to: category, skip_fees: skip_fees?)
|
49
|
+
end
|
50
|
+
|
51
|
+
def assign!
|
52
|
+
update!(current_action: :assign)
|
53
|
+
EffectiveMemberships.Registrar.assign!(owner, categories: categories, number: membership_number.presence)
|
54
|
+
end
|
55
|
+
|
36
56
|
def good_standing!
|
37
57
|
update!(current_action: :good_standing)
|
38
58
|
EffectiveMemberships.Registrar.good_standing!(owner)
|
@@ -43,11 +63,6 @@ module Effective
|
|
43
63
|
EffectiveMemberships.Registrar.bad_standing!(owner, reason: bad_standing_reason)
|
44
64
|
end
|
45
65
|
|
46
|
-
def reclassify!
|
47
|
-
update!(current_action: :reclassify)
|
48
|
-
EffectiveMemberships.Registrar.reclassify!(owner, to: category, skip_fees: skip_fees?)
|
49
|
-
end
|
50
|
-
|
51
66
|
def fees_paid!
|
52
67
|
update!(current_action: :fees_paid)
|
53
68
|
EffectiveMemberships.Registrar.fees_paid!(owner)
|
@@ -58,11 +73,6 @@ module Effective
|
|
58
73
|
EffectiveMemberships.Registrar.remove!(owner)
|
59
74
|
end
|
60
75
|
|
61
|
-
def register!
|
62
|
-
update!(current_action: :register)
|
63
|
-
EffectiveMemberships.Registrar.register!(owner, to: category, number: membership_number.presence, skip_fees: skip_fees?)
|
64
|
-
end
|
65
|
-
|
66
76
|
def update!(atts)
|
67
77
|
assign_attributes(atts); save!
|
68
78
|
end
|
@@ -89,6 +99,10 @@ module Effective
|
|
89
99
|
EffectiveMemberships.Category.find(@category_id) if @category_id
|
90
100
|
end
|
91
101
|
|
102
|
+
def categories
|
103
|
+
EffectiveMemberships.Category.where(id: @category_ids) if @category_ids
|
104
|
+
end
|
105
|
+
|
92
106
|
def skip_fees?
|
93
107
|
EffectiveResources.truthy?(@skip_fees)
|
94
108
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
.card
|
2
|
+
.card-body
|
3
|
+
%h5.card-title Assign
|
4
|
+
|
5
|
+
= effective_form_with(model: [:admin, registrar_action], url: effective_memberships.admin_registrar_actions_path) do |f|
|
6
|
+
= f.hidden_field :owner_id
|
7
|
+
= f.hidden_field :owner_type
|
8
|
+
|
9
|
+
- membership = f.object.owner.membership
|
10
|
+
|
11
|
+
%p.text-muted
|
12
|
+
Assign to one or more categories.
|
13
|
+
|
14
|
+
= f.static_field :current_action, label: 'Current Categories' do
|
15
|
+
- Array(membership&.categories).each do |category|
|
16
|
+
%div= link_to(category, effective_memberships.edit_admin_category_path(category))
|
17
|
+
|
18
|
+
- if membership.blank?
|
19
|
+
None
|
20
|
+
|
21
|
+
= f.check_box :current_action, label: 'Yes, assign this member to categories'
|
22
|
+
|
23
|
+
= f.show_if :current_action, true do
|
24
|
+
- categories = f.object.owner.registrar_action_categories(:assign)
|
25
|
+
= f.select :category_ids, categories, label: 'Assign to', required: true, multiple: true
|
26
|
+
|
27
|
+
- if membership.present?
|
28
|
+
%p The member will keep their existing membership number: #{membership.number}.
|
29
|
+
- else
|
30
|
+
= f.text_field :membership_number, hint: "leave blank to assign the next number"
|
31
|
+
|
32
|
+
%p No fees will be created
|
33
|
+
|
34
|
+
= f.submit 'Assign', border: false, center: true, 'data-confirm': "Really assign #{f.object.owner}?"
|
@@ -9,13 +9,14 @@
|
|
9
9
|
- membership = f.object.owner.membership
|
10
10
|
|
11
11
|
- period = EffectiveMemberships.Registrar.current_period
|
12
|
-
- date = EffectiveMemberships.Registrar.bad_standing_date(period: period)
|
12
|
+
- date = (EffectiveMemberships.Registrar.bad_standing_date(period: period) rescue false)
|
13
13
|
|
14
14
|
%p.text-muted
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
- if date.present?
|
16
|
+
Members with outstanding renewal fees are automatically marked
|
17
|
+
not in good standing on #{date.strftime('%B %d')}.
|
18
|
+
The status is cleared when they pay their fees.
|
19
|
+
You can also mark a member as always in bad standing.
|
19
20
|
|
20
21
|
= f.static_field :current_action, label: 'Current Status' do
|
21
22
|
|
@@ -7,9 +7,7 @@
|
|
7
7
|
= f.hidden_field :owner_type
|
8
8
|
|
9
9
|
- membership = f.object.owner.membership
|
10
|
-
|
11
10
|
- period = EffectiveMemberships.Registrar.current_period
|
12
|
-
- date = EffectiveMemberships.Registrar.bad_standing_date(period: period)
|
13
11
|
|
14
12
|
%p.text-muted
|
15
13
|
Change a member's existing category and optionally create fees.
|
@@ -22,7 +20,8 @@
|
|
22
20
|
= f.show_if :current_action, true do
|
23
21
|
%p The member will keep their existing membership number: #{membership.number}.
|
24
22
|
|
25
|
-
- categories =
|
23
|
+
- categories = f.object.owner.registrar_action_categories(:reclassify) - membership.categories
|
24
|
+
|
26
25
|
= f.select :category_id, categories, label: 'Reclassify to', required: true
|
27
26
|
|
28
27
|
= f.check_box :skip_fees, label: 'Yes, skip creating fees and just set the category'
|
@@ -17,7 +17,7 @@
|
|
17
17
|
= f.check_box :current_action, label: 'Yes, register to a membership'
|
18
18
|
|
19
19
|
= f.show_if :current_action, true do
|
20
|
-
- categories =
|
20
|
+
- categories = f.object.owner.registrar_action_categories(:register)
|
21
21
|
= f.select :category_id, categories, label: 'Register to'
|
22
22
|
|
23
23
|
= f.text_field :membership_number, hint: "leave blank to assign the next number"
|
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.8
|
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: 2021-12-
|
11
|
+
date: 2021-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -282,6 +282,7 @@ files:
|
|
282
282
|
- app/views/admin/fees/_form.html.haml
|
283
283
|
- app/views/admin/memberships/_status.html.haml
|
284
284
|
- app/views/admin/registrar_actions/_form.html.haml
|
285
|
+
- app/views/admin/registrar_actions/_form_assign.html.haml
|
285
286
|
- app/views/admin/registrar_actions/_form_bad_standing.html.haml
|
286
287
|
- app/views/admin/registrar_actions/_form_fees_paid.html.haml
|
287
288
|
- app/views/admin/registrar_actions/_form_reclassify.html.haml
|