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
|