Class: Spree::Calculator::PercentPerItem

Inherits:
Spree::Calculator show all
Defined in:
app/models/spree/calculator/percent_per_item.rb

Overview

A calculator for promotions that calculates a percent-off discount for all matching products in an order. This should not be used as a shipping calculator since it would be the same thing as a flat percent off the entire order.

TODO Should be deprecated now that we have adjustments at the line item level in spree core

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Spree::Calculator

#available?, calculators, #description, register, #to_s

Methods inherited from Base

#initialize_preference_defaults, page, preference

Methods included from Preferences::Preferable

#default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference

Class Method Details

.descriptionObject



13
14
15
# File 'app/models/spree/calculator/percent_per_item.rb', line 13

def self.description
  Spree.t(:percent_per_item)
end

Instance Method Details

#compute(object = nil) ⇒ Object



17
18
19
20
21
22
# File 'app/models/spree/calculator/percent_per_item.rb', line 17

def compute(object = nil)
  return 0 if object.nil?
  object.line_items.map { |line_item|
    value_for_line_item(line_item)
  }.sum
end