Class: SolidusPromotions::Benefits::AdjustShipment

Inherits:
SolidusPromotions::Benefit show all
Defined in:
app/models/solidus_promotions/benefits/adjust_shipment.rb

Instance Attribute Summary

Attributes inherited from SolidusPromotions::Benefit

#adjustments, #conditions, #original_promotion_action, #promotion, #shipping_rate_discounts

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SolidusPromotions::Benefit

#adjustment_label, #applicable_line_items, #available_calculators, #available_conditions, #can_discount?, #compute_amount, #discount, #eligible_by_applicable_conditions?, inherited, of_type, #possible_conditions, #preload_relations, #to_partial_path

Class Method Details

.applicable_conditionsObject



6
7
8
# File 'app/models/solidus_promotions/benefits/adjust_shipment.rb', line 6

def self.applicable_conditions
  SolidusPromotions::Condition.applicable_to([Spree::Order, Spree::Shipment])
end

Instance Method Details

#discount_shipment(shipment) ⇒ Object



10
11
12
13
14
15
# File 'app/models/solidus_promotions/benefits/adjust_shipment.rb', line 10

def discount_shipment(shipment, ...)
  adjustment = find_adjustment(shipment) || build_adjustment(shipment)
  adjustment.amount = compute_amount(shipment, ...)
  adjustment.label = adjustment_label(shipment)
  adjustment
end

#discount_shipping_rate(shipping_rate) ⇒ Object



17
18
19
20
21
22
# File 'app/models/solidus_promotions/benefits/adjust_shipment.rb', line 17

def discount_shipping_rate(shipping_rate, ...)
  discount = find_discount(shipping_rate) || build_discount(shipping_rate)
  discount.amount = compute_amount(shipping_rate, ...)
  discount.label = adjustment_label(shipping_rate)
  discount
end

#levelObject



24
25
26
# File 'app/models/solidus_promotions/benefits/adjust_shipment.rb', line 24

def level
  :shipment
end