diff --git a/app/controllers/spree/admin/line_items_controller_decorator.rb b/app/controllers/spree/admin/line_items_controller_decorator.rb index 2eabe19e1c..2c224135ba 100644 --- a/app/controllers/spree/admin/line_items_controller_decorator.rb +++ b/app/controllers/spree/admin/line_items_controller_decorator.rb @@ -1,8 +1,11 @@ Spree::Admin::LineItemsController.class_eval do prepend_before_filter :load_order, except: :index + around_filter :apply_enterprise_fees_with_lock, only: :update respond_to :json + # TODO make updating line items faster by creating a bulk update method + def index respond_to do |format| format.json do @@ -16,8 +19,16 @@ Spree::Admin::LineItemsController.class_eval do private - def load_order - @order = Spree::Order.find_by_number!(params[:order_id]) - authorize! :update, @order + def load_order + @order = Spree::Order.find_by_number!(params[:order_id]) + authorize! :update, @order + end + + def apply_enterprise_fees_with_lock + authorize! :read, @order + @order.with_lock do + yield + @order.update_distribution_charge! end + end end