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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b47c4f81099d5e4078814e9f04765ae8b2790ac3fe19ff0a0f5442e9e5f6475
4
- data.tar.gz: 727b05c16923003822a9383d3cd3b8f582655cae1e769df98de0245bdd0dedd7
3
+ metadata.gz: '017428f74b7a9dd16e4d16a8a256ca2cbf510252266908134034cc56eb651c42'
4
+ data.tar.gz: be01e2eb2f76608ae46b1cfbed55225c3e32f035345e32912db4fcba901da1c4
5
5
  SHA512:
6
- metadata.gz: fc8454e6c624109974f4f6bbcb65a92a892a9a19ed72565fdc53414017d03a30de766b1609fff6b4dca89a3f93c8800502ba4841032860bf3733fedc9b01da56
7
- data.tar.gz: 0db5f5f98ea6271c36fd09c2cd32a3f757ef55ca7cda4f2be130e12f0162aaa6474993062247ef02cdca3dfb1da4df1cc54dc5a3e32f91cf49c412a351de30db
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
- Members with outstanding renewal fees are automatically marked
16
- not in good standing on #{date.strftime('%B %d')}.
17
- The status is cleared when they pay their fees.
18
- You can also mark a member as always not in good standing.
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 = EffectiveMemberships.Category.all.where.not(id: membership.category_id)
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 = EffectiveMemberships.Category.all
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"
@@ -1,3 +1,3 @@
1
1
  module EffectiveMemberships
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
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.1.7
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-22 00:00:00.000000000 Z
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