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

page

Methods included from Preferences::Preferable

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

Class Method Details

.descriptionObject


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

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

Instance Method Details

#compute(object = nil) ⇒ Object


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

def compute(object=nil)
  return 0 if object.nil?
  object.line_items.reduce(0) do |sum, line_item|
    sum += value_for_line_item(line_item)
  end
end