Class: SpreeCmCommissioner::Trips::AddOns::UpdatePrice

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/trips/add_ons/update_price.rb

Overview

Updates the price / compare-at price of an add-on product’s master variant.

The add-on product (Trips::AddOns::Create) is master-only, so price lives on ‘relation.product.master.default_price`.

Instance Method Summary collapse

Instance Method Details

#call(relation:, price:, compare_at_price: nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/services/spree_cm_commissioner/trips/add_ons/update_price.rb', line 11

def call(relation:, price:, compare_at_price: nil)
  return failure(relation, 'relation must be present') if relation.blank?
  return failure(relation, 'price must be present') if price.blank?

  product = relation.product
  product.price = price
  product.compare_at_price = compare_at_price.presence
  product.save!

  success(relation: relation)
rescue ActiveRecord::RecordInvalid => e
  failure(relation, e.message)
rescue StandardError => e
  CmAppLogger.error(
    label: 'SpreeCmCommissioner::Trips::AddOns::UpdatePrice#call',
    data: {
      error_class: e.class.name,
      error_message: e.message
    }
  )
  failure(relation, e.message)
end