effective_products 0.2.1 → 0.3.1

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: 1c6308aed4b26bc76f95a87ca13e768885e71ec54a7a66b16b29353677c19868
4
- data.tar.gz: 700fcdcb9a93587f76e97ca612f6196d9d7e3dc6cda028040b7b9b6d9128a211
3
+ metadata.gz: c6b962a8361ef38e6fd53023d4f6cc26a048d14dad3c6764c65c4592aeeb4feb
4
+ data.tar.gz: bed89486cacc7cc0a6fe02e2e4bd0559134e67198ca688c594375b270ef4f8ad
5
5
  SHA512:
6
- metadata.gz: 93dd15eb15917a33df26311dd79dc8cdbb681475ac9eeec10422fe38c1ef2d7d4ab5f11af3264df2b0ddd889291c7b07e1115c7f1602fc9aa9d0c2cd2c0ce59e
7
- data.tar.gz: 5b3af4f0ab24d58254470acff34a62568b083519d818c5674c5db7ffc07e99759fbc6c0da30d96b48a8e400b2ab3590cf5c9afb7db53ff6f49f580ad7bb78169
6
+ metadata.gz: 270befc380dfe3fdc3f0b6c93aca1225cd0969322a81ae8f23b0e855335c328f7cff0fac00abdcf5706d7455066366d932fe7409e8a34388c629c147783fe261
7
+ data.tar.gz: b39a6283d0e81cf2e2204a8aeac6f14f8d52f75683a36cc65d1b1e7cf4ca7f91bc8aed3a64cc35c5130d63ce07a2aade14819e5dfe3f2bd73bc0cd0ab82616d5
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2022 Code and Effect Inc.
1
+ Copyright 2023 Code and Effect Inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -2,25 +2,37 @@ module Admin
2
2
  class EffectiveStampsDatatable < Effective::Datatable
3
3
  filters do
4
4
  scope :ready_to_issue
5
+ scope :pending_applicant_approval
6
+ scope :pending_stamp_request_purchase
5
7
  scope :issued
6
8
  scope :all
7
9
  end
8
10
 
9
11
  datatable do
10
- order :updated_at
12
+ order :created_at
11
13
 
12
14
  col :updated_at, visible: false
13
15
  col :created_at, visible: false
14
16
  col :id, visible: false
15
17
 
16
18
  col :created_at, as: :date
19
+ col :status, visible: false
17
20
  col :owner, search: :string
18
21
 
19
- col :applicant, visible: false
20
- col :stamp_wizard, visible: false
22
+ col(:applicant, search: :string) do |stamp|
23
+ if stamp.applicant.present?
24
+ link_to(stamp.applicant, effective_memberships.edit_admin_applicant_path(stamp.applicant)) + ' ' + badges(stamp.applicant.status)
25
+ end
26
+ end
21
27
 
22
- col(:email) { |stamp| mail_to stamp.owner.email }
23
- col(:phone) { |stamp| stamp.owner.phone }
28
+ col(:stamp_wizard, search: :string) do |stamp|
29
+ if stamp.stamp_wizard.present?
30
+ stamp.stamp_wizard.to_s + ' ' + badges(stamp.stamp_wizard.status)
31
+ end
32
+ end
33
+
34
+ col(:email, visible: false) { |stamp| mail_to stamp.owner.email }
35
+ col(:phone, visible: false) { |stamp| stamp.owner.phone }
24
36
 
25
37
  col :member_number, label: 'Member #' do |stamp|
26
38
  stamp.owner.try(:membership).try(:number)
@@ -31,21 +43,20 @@ module Admin
31
43
 
32
44
  col :category, search: EffectiveProducts.stamp_categories
33
45
 
34
- col :shipping_address, visible: false
35
- col(:address1) { |stamp| stamp.shipping_address.try(:address1) }
36
- col(:address2) { |stamp| stamp.shipping_address.try(:address2) }
37
- col(:city) { |stamp| stamp.shipping_address.try(:city) }
38
- col(:state_code, label: 'Prov') { |stamp| stamp.shipping_address.try(:state_code) }
39
- col(:postal_code, label: 'Postal') { |stamp| stamp.shipping_address.try(:postal_code) }
40
- col(:country_code, label: 'Country') { |stamp| stamp.shipping_address.try(:country_code) }
46
+ col :shipping_address
47
+ col(:address1, visible: false) { |stamp| stamp.shipping_address.try(:address1) }
48
+ col(:address2, visible: false) { |stamp| stamp.shipping_address.try(:address2) }
49
+ col(:city, visible: false) { |stamp| stamp.shipping_address.try(:city) }
50
+ col(:state_code, visible: false, label: 'Prov') { |stamp| stamp.shipping_address.try(:state_code) }
51
+ col(:postal_code, visible: false, label: 'Postal') { |stamp| stamp.shipping_address.try(:postal_code) }
52
+ col(:country_code, visible: false, label: 'Country') { |stamp| stamp.shipping_address.try(:country_code) }
41
53
 
42
- col :purchased_order, visible: false
54
+ col :purchased_order, search: :string, visible: false
43
55
  col :price, as: :price, visible: false
44
56
  col :tax_exempt, visible: false
45
57
  col :qb_item_name, visible: false
46
58
 
47
- col :status, visible: false
48
- col :issued_at
59
+ col :issued_at, as: :date
49
60
 
50
61
  actions_col
51
62
  end
@@ -92,7 +92,7 @@ module EffectiveProductsStampWizard
92
92
 
93
93
  # Instance Methods
94
94
  def to_s
95
- 'stamp request'
95
+ persisted? ? "#{model_name.human} ##{id}" : model_name.human
96
96
  end
97
97
 
98
98
  def in_progress?
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Effective
4
4
  class Ring < ActiveRecord::Base
5
+ self.table_name = (EffectiveProducts.rings_table_name || :rings).to_s
6
+
5
7
  SIZES = [3, 4, 5, 6, 7, 8]
6
8
  TITANIUM_SIZES = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
7
9
  METALS = ['14k Yellow Gold', 'Sterling Silver', 'Titanium']
@@ -1,6 +1,6 @@
1
1
  module Effective
2
2
  class RingWizard < ActiveRecord::Base
3
- self.table_name = EffectiveProducts.ring_wizards_table_name.to_s
3
+ self.table_name = (EffectiveProducts.ring_wizards_table_name || :ring_wizards).to_s
4
4
 
5
5
  effective_products_ring_wizard
6
6
  end
@@ -2,9 +2,13 @@
2
2
 
3
3
  module Effective
4
4
  class Stamp < ActiveRecord::Base
5
+ self.table_name = (EffectiveProducts.stamps_table_name || :stamps).to_s
6
+
5
7
  acts_as_purchasable
6
8
  acts_as_addressable :shipping
7
9
 
10
+ attr_accessor :admin_action
11
+
8
12
  acts_as_statused(
9
13
  :draft, # Built in an application
10
14
  :submitted, # Submitted by an applicant or stamp wizard
@@ -43,16 +47,25 @@ module Effective
43
47
  timestamps
44
48
  end
45
49
 
46
- scope :deep, -> { includes(:addresses, owner: [:membership]) }
50
+ scope :deep, -> { includes(:addresses, :purchased_order, owner: [:membership], applicant: [:category, :user], stamp_wizard: [:user]) }
51
+ scope :not_issued, -> { where.not(status: :issued) }
47
52
 
48
53
  scope :with_approved_applicants, -> { where(applicant_id: EffectiveMemberships.Applicant.approved) }
49
- scope :with_stamp_wizards, -> { purchased.where(applicant_id: nil).where.not(stamp_wizard_id: nil) }
50
- scope :created_by_admin, -> { where(applicant_id: nil, stamp_wizard_id: nil) }
54
+ scope :with_unapproved_applicants, -> { where.not(applicant_id: nil).where.not(applicant_id: EffectiveMemberships.Applicant.approved) }
55
+
56
+ scope :with_purchased_stamp_wizards, -> { purchased.where.not(stamp_wizard_id: nil) }
57
+ scope :with_not_purchased_stamp_wizards, -> { not_purchased.where.not(stamp_wizard_id: nil) }
58
+
59
+ scope :created_by_admin, -> { submitted.where(applicant_id: nil, stamp_wizard_id: nil) }
51
60
 
61
+ # Datatable Scopes
52
62
  scope :ready_to_issue, -> {
53
- with_approved_applicants.or(with_stamp_wizards).or(created_by_admin).where.not(status: :issued)
63
+ with_approved_applicants.or(with_purchased_stamp_wizards).or(created_by_admin).submitted
54
64
  }
55
65
 
66
+ scope :pending_applicant_approval, -> { not_issued.with_unapproved_applicants }
67
+ scope :pending_stamp_request_purchase, -> { not_issued.with_not_purchased_stamp_wizards }
68
+
56
69
  validates :name, presence: true
57
70
  validates :name_confirmation, presence: true
58
71
  validates :category, presence: true
@@ -66,6 +79,10 @@ module Effective
66
79
  self.errors.add(:category, "is not included") unless EffectiveProducts.stamp_categories.include?(category)
67
80
  end
68
81
 
82
+ validate(if: -> { admin_action }) do
83
+ self.errors.add(:owner_id, "must have a membership") unless owner && owner.try(:membership).present?
84
+ end
85
+
69
86
  def to_s
70
87
  [model_name.human, *name.presence].join(' ')
71
88
  end
@@ -91,6 +108,7 @@ module Effective
91
108
 
92
109
  # This is the Admin Save and Mark Paid action
93
110
  def mark_paid!
111
+ update!(admin_action: true) # Make sure we have an owner with a membership
94
112
  raise('expected an user with a membership category') unless owner && owner.try(:membership).present?
95
113
 
96
114
  category = owner.membership.categories.first
@@ -1,6 +1,6 @@
1
1
  module Effective
2
2
  class StampWizard < ActiveRecord::Base
3
- self.table_name = EffectiveProducts.stamp_wizards_table_name.to_s
3
+ self.table_name = (EffectiveProducts.stamp_wizards_table_name || :stamp_wizards).to_s
4
4
 
5
5
  effective_products_stamp_wizard
6
6
  end
@@ -1,21 +1,8 @@
1
- = effective_form_with(model: [:admin, stamp], engine: true) do |f|
2
- - if inline_datatable?
3
- = f.hidden_field :owner_id
4
- = f.hidden_field :owner_type
1
+ = tabs do
2
+ = tab(stamp) do
3
+ = render 'admin/stamps/form_stamp', stamp: stamp
5
4
 
6
- - else
7
- - ajax_url = (@select2_ajax_path || effective_resources.users_admin_select2_ajax_index_path) unless Rails.env.test?
8
- - f.object.owner_type ||= current_user.class.name
5
+ - if stamp.persisted?
6
+ = tab 'Logs' do
7
+ = render_inline_datatable(stamp.logs_datatable)
9
8
 
10
- = f.select :owner_id, current_user.class.all, label: 'User', ajax_url: ajax_url,
11
- 'data-load-ajax-url': effective_products.new_admin_stamp_path,
12
- 'data-load-ajax-div': '#effective-stamps-ajax'
13
-
14
- #effective-stamps-ajax
15
- = render 'effective/stamps/fields', f: f, stamp: f.object
16
-
17
- = f.submit do
18
- = f.save 'Save'
19
-
20
- - if f.object.new_record?
21
- = f.save 'Save and Mark Paid'
@@ -0,0 +1,23 @@
1
+ = effective_form_with(model: [:admin, stamp], engine: true) do |f|
2
+ - if inline_datatable?
3
+ = f.hidden_field :owner_id
4
+ = f.hidden_field :owner_type
5
+
6
+ - else
7
+ - ajax_url = (@select2_ajax_path || effective_resources.users_admin_select2_ajax_index_path) unless Rails.env.test?
8
+ - f.object.owner_type ||= current_user.class.name
9
+
10
+ = f.hidden_field :owner_type
11
+
12
+ = f.select :owner_id, current_user.class.all, label: 'User', ajax_url: ajax_url,
13
+ 'data-load-ajax-url': effective_products.new_admin_stamp_path,
14
+ 'data-load-ajax-div': '#effective-stamps-ajax'
15
+
16
+ #effective-stamps-ajax
17
+ = render 'effective/stamps/fields', f: f, stamp: f.object
18
+
19
+ = f.submit do
20
+ - if f.object.new_record?
21
+ = f.save 'Save and Mark Paid'
22
+ - else
23
+ = f.save 'Save'
@@ -1,9 +1,4 @@
1
1
  EffectiveProducts.setup do |config|
2
- config.rings_table_name = :rings
3
- config.ring_wizards_table_name = :ring_wizards
4
- config.stamps_table_name = :stamps
5
- config.stamp_wizards_table_name = :stamp_wizards
6
-
7
2
  # Layout Settings
8
3
  # Configure the Layout per controller, or all at once
9
4
  # config.layout = { application: 'application', admin: 'admin' }
@@ -1,4 +1,4 @@
1
- class CreateEffectiveProducts < ActiveRecord::Migration[6.1]
1
+ class CreateEffectiveProducts < ActiveRecord::Migration[6.0]
2
2
  def change
3
3
  create_table :rings do |t|
4
4
  t.integer :owner_id
@@ -1,3 +1,3 @@
1
1
  module EffectiveProducts
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.3.1'.freeze
3
3
  end
@@ -20,9 +20,7 @@ module EffectiveMemberships
20
20
  end
21
21
 
22
22
  def create_migration_file
23
- @products_table_name = ':' + EffectiveProducts.products_table_name.to_s
24
-
25
- migration_template ('../' * 3) + 'db/migrate/01_create_effective_products.rb.erb', 'db/migrate/create_effective_products.rb'
23
+ migration_template ('../' * 3) + 'db/migrate/101_create_effective_products.rb', 'db/migrate/create_effective_products.rb'
26
24
  end
27
25
 
28
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_products
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
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-08-16 00:00:00.000000000 Z
11
+ date: 2023-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -238,6 +238,7 @@ files:
238
238
  - app/models/effective/stamp_wizard.rb
239
239
  - app/views/admin/rings/_ring.html.haml
240
240
  - app/views/admin/stamps/_form.html.haml
241
+ - app/views/admin/stamps/_form_stamp.html.haml
241
242
  - app/views/admin/stamps/_stamp.html.haml
242
243
  - app/views/effective/ring_wizards/_content.html.haml
243
244
  - app/views/effective/ring_wizards/_dashboard.html.haml
@@ -271,7 +272,7 @@ files:
271
272
  - config/effective_products.rb
272
273
  - config/locales/effective_products.en.yml
273
274
  - config/routes.rb
274
- - db/migrate/01_create_effective_products.rb.erb
275
+ - db/migrate/101_create_effective_products.rb
275
276
  - db/seeds.rb
276
277
  - lib/effective_products.rb
277
278
  - lib/effective_products/engine.rb