Class: Returnly::DiscountCalculator

Inherits:
Object
  • Object
show all
Defined in:
lib/returnly/discount_calculator.rb

Constant Summary collapse

DISCOUNTER_CLASSES =
{
  'Spree::Order' => Returnly::Discounts::Order,
  'Spree::LineItem' => Returnly::Discounts::LineItem
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(order) ⇒ DiscountCalculator

Returns a new instance of DiscountCalculator.



10
11
12
# File 'lib/returnly/discount_calculator.rb', line 10

def initialize(order)
  @order = order
end

Instance Attribute Details

#orderObject

Returns the value of attribute order.



3
4
5
# File 'lib/returnly/discount_calculator.rb', line 3

def order
  @order
end

Instance Method Details

#calculate(line_items = []) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/returnly/discount_calculator.rb', line 14

def calculate(line_items = [])
  line_items.inject(0) do |discount_amount, item|
    line_item = find_line_item(item[:order_line_item_id])
    next discount_amount if line_item.nil?

    discount_amount += discount_amount_for(line_item, item[:units].to_i)
    discount_amount
  end
end