6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'app/services/spree/carts/update.rb', line 6
def call(cart:, params:)
@cart = cart
@params = params.to_h.deep_symbolize_keys
was_in_cart = cart.cart?
ApplicationRecord.transaction do
assign_cart_attributes
clear_shipping_address_if_outside_market
assign_address(:shipping_address)
assign_address(:billing_address)
cart.save!
process_items
try_advance
sync_stock_reservations(was_in_cart: was_in_cart)
end
success(cart)
rescue ActiveRecord::RecordNotFound
raise
rescue ActiveRecord::RecordInvalid => e
failure(cart, e.record.errors.full_messages.to_sentence)
rescue StandardError => e
failure(cart, e.message)
end
|