Class: SpreeCmCommissioner::LineItems::ApplyPricingModels

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

Instance Method Summary collapse

Instance Method Details

#call(order:, line_item:) ⇒ Object



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

def call(order:, line_item:)
  return success(nil) if line_item.blank?

  return success(line_item) unless order&.persisted?
  return success(line_item) if line_item.variant.blank?

  active_pricing_models = line_item.variant.pricing_models.active
  return success(line_item) unless active_pricing_models.exists?

  line_item.adjustments.pricing_action.delete_all

  active_pricing_models.each do |pricing_model|
    SpreeCmCommissioner::PricingModels::Apply.new(
      line_item: line_item,
      pricing_model: pricing_model
    ).call
  end
  success(line_item)
end