Class: Spree::Admin::ProductCommissionsController
- Inherits:
-
ResourceController
- Object
- ResourceController
- Spree::Admin::ProductCommissionsController
- Defined in:
- app/controllers/spree/admin/product_commissions_controller.rb
Instance Method Summary collapse
-
#collection ⇒ Object
override.
-
#collection_actions ⇒ Object
override.
- #collection_url(options = {}) ⇒ Object
- #commission_for(product) ⇒ Object
-
#model_class ⇒ Object
override.
- #update_commissions ⇒ Object
- #update_default_commission ⇒ Object
Instance Method Details
#collection ⇒ Object
override
54 55 56 |
# File 'app/controllers/spree/admin/product_commissions_controller.rb', line 54 def collection @collection ||= parent.products.order(:id) end |
#collection_actions ⇒ Object
override
49 50 51 |
# File 'app/controllers/spree/admin/product_commissions_controller.rb', line 49 def collection_actions %i[index update_commissions update_default_commission] end |
#collection_url(options = {}) ⇒ Object
39 40 41 |
# File 'app/controllers/spree/admin/product_commissions_controller.rb', line 39 def collection_url( = {}) admin_vendor_product_commissions_url() end |
#commission_for(product) ⇒ Object
43 44 45 46 |
# File 'app/controllers/spree/admin/product_commissions_controller.rb', line 43 def commission_for(product) commission_rate = product.commission_rate || product.vendor&.commission_rate || 0 product.price * commission_rate / 100 end |
#model_class ⇒ Object
override
59 60 61 |
# File 'app/controllers/spree/admin/product_commissions_controller.rb', line 59 def model_class Spree::Product end |
#update_commissions ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/controllers/spree/admin/product_commissions_controller.rb', line 10 def update_commissions ActiveRecord::Base.transaction do params[:products]&.each do |id, attributes| product = collection.find(id) product.commission_rate = attributes[:commission_rate] product.save! end end flash[:success] = (@parent, :successfully_updated) redirect_to collection_url rescue ActiveRecord::RecordInvalid => e flash[:error] = e.record.errors..join(', ') redirect_back fallback_location: collection_url end |
#update_default_commission ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/controllers/spree/admin/product_commissions_controller.rb', line 27 def update_default_commission attributes = params.require(:vendor).permit(:commission_rate) if @parent.update(attributes) flash[:success] = (@parent, :successfully_updated) redirect_to collection_url else flash[:error] = @parent.errors..join(', ') redirect_back fallback_location: collection_url end end |