6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'app/services/spree/cart/remove_out_of_stock_items.rb', line 6
def call(order:)
@messages = []
return success([order, @messages]) if order.item_count.zero? || order.line_items.none?
line_items = order.line_items.includes(variant: [:product, :stock_items, :stock_locations, { stock_items: :stock_location }])
ActiveRecord::Base.transaction do
line_items.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?
success([order.reload, @messages])
else
success([order, @messages])
end
end
|