Class: Spree::Orders::Complete
- Inherits:
-
Object
- Object
- Spree::Orders::Complete
- Includes:
- ServiceModule::Base
- Defined in:
- app/services/spree/orders/complete.rb
Overview
Admin-side order completion.
Distinct from Spree::Carts::Complete (storefront checkout). Callers must wrap invocation in Spree::Api::V3::OrderLock#with_order_lock — this service does not lock the row itself.
Instance Method Summary collapse
Methods included from ServiceModule::Base
Instance Method Details
#call(order:, payment_pending: false, notify_customer: false) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/services/spree/orders/complete.rb', line 20 def call(order:, payment_pending: false, notify_customer: false) order.notify_customer = notify_customer return success(order) if order.completed? return failure(order, 'Order is canceled') if order.canceled? process_payments!(order) if order.payment_required? && !payment_pending return failure(order, order.errors..to_sentence) if order.errors.any? advance_to_complete!(order) if order.reload.complete? success(order) else failure(order, order.errors..to_sentence.presence || 'Could not complete order') end end |