Class: SpreeCmCommissioner::PricingModels::Activate

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/pricing_models/activate.rb

Instance Method Summary collapse

Instance Method Details

#call(order:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/services/spree_cm_commissioner/pricing_models/activate.rb', line 6

def call(order:)
  return failure(:order_is_not_persisted) unless order.persisted?
  return failure(:order_not_completed) unless order.completed?

  order_context = OrderContext.build_from_context(fallback_order: order)

  preview_result = Preview.call(order_context: order_context)
  return failure(nil, preview_result.error) if preview_result.failure?

  pricing_preview = preview_result.value[:pricing_preview]
  order.adjustments.pricing_action.delete_all
  order.line_items.each { |line_item| line_item.adjustments.pricing_action.delete_all }

  apply_pricing_adjustments(order, pricing_preview.pricing_adjustments)

  success(order: order)
end