Class: SpreeCmCommissioner::Trips::AddOns::UpdatePrice
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::Trips::AddOns::UpdatePrice
- 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.) rescue StandardError => e CmAppLogger.error( label: 'SpreeCmCommissioner::Trips::AddOns::UpdatePrice#call', data: { error_class: e.class.name, error_message: e. } ) failure(relation, e.) end |