Class: Spree::Orders::Approve
- Inherits:
-
Object
- Object
- Spree::Orders::Approve
- Includes:
- ServiceModule::Base
- Defined in:
- app/services/spree/orders/approve.rb
Instance Method Summary collapse
-
#call(order:, approver: nil, level: nil, note: nil) ⇒ Spree::ServiceModule::Result
Approves an order and records a Spree::OrderApproval history record.
Methods included from ServiceModule::Base
Instance Method Details
#call(order:, approver: nil, level: nil, note: nil) ⇒ Spree::ServiceModule::Result
Approves an order and records a Spree::OrderApproval history record.
The legacy keyword ‘approver:` remains valid; new keywords (`level:`, `note:`) are additive and stored on the approval record.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/services/spree/orders/approve.rb', line 16 def call(order:, approver: nil, level: nil, note: nil) decided_at = Time.current order.transaction do order.approvals.create!( status: 'approved', level: level, note: note, approver: approver, decided_at: decided_at, created_at: decided_at ) changes = { considered_risky: false, approved_at: decided_at } changes[:approver_id] = approver.id if approver.present? order.update_columns(changes) end order.publish_event('order.approved') success(order.reload) rescue ActiveRecord::RecordInvalid, StateMachines::InvalidTransition failure(order) end |