Class: Spree::Orders::Cancel

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

Instance Method Summary collapse

Methods included from ServiceModule::Base

prepended

Instance Method Details

#call(order:, canceler: nil, canceled_at: nil) ⇒ Object



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

def call(order:, canceler: nil, canceled_at: nil)
  canceled_at ||= Time.current

  order.transaction do
    changes = { canceled_at: canceled_at }
    changes[:canceler_id] = canceler.id if canceler.present?
    order.update_columns(changes)
    order.cancel!
  end

  order.publish_event('order.canceled')
  success(order.reload)
rescue ActiveRecord::Rollback, ActiveRecord::RecordInvalid, StateMachines::InvalidTransition
  failure(order)
end