6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'app/services/spree/cart/remove_line_item.rb', line 6
def call(order:, line_item:, options: nil)
options ||= {}
ActiveRecord::Base.transaction do
order.line_items.destroy(line_item)
if order.in_checkout? && order.line_items.any?
result = Spree::StockReservations::Reserve.call(order: order)
raise Spree::StockReservations::InsufficientStockError.new(nil, result.error.to_s) if result.failure?
end
Spree.cart_recalculate_service.new.call(order: order,
line_item: line_item,
options: options)
end
success(line_item)
rescue Spree::StockReservations::InsufficientStockError => e
failure(line_item, e.message)
end
|