Class: Spree::Cart::RemoveOutOfStockItems

Inherits:
Object
  • Object
show all
Includes:
ServiceModule::Base
Defined in:
app/services/spree/cart/remove_out_of_stock_items.rb

Instance Method Summary collapse

Methods included from ServiceModule::Base

prepended

Instance Method Details

#call(order:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/services/spree/cart/remove_out_of_stock_items.rb', line 6

def call(order:)
  @messages = []
  ActiveRecord::Base.transaction do
    line_items(order).each do |line_item|
      cart_remove_line_item_service.call(order: order, line_item: line_item) if !valid_status?(line_item) || !stock_available?(line_item)
    end
  end

  if @messages.any? # If any line item was removed, reload the order
    success([order.reload, @messages])
  else
    success([order, @messages])
  end
end