Class: Spree::Carts::Update

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

Instance Method Summary collapse

Methods included from ServiceModule::Base

prepended

Instance Method Details

#call(cart:, params:) ⇒ Object



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
# File 'app/services/spree/carts/update.rb', line 6

def call(cart:, params:)
  @cart = cart
  @params = params.to_h.deep_symbolize_keys

  ApplicationRecord.transaction do
    assign_cart_attributes
    clear_shipping_address_if_outside_market
    assign_address(:shipping_address)
    assign_address(:billing_address)

    cart.save!

    process_items
  end

  try_advance

  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