class Returnly::Discounts::LineItem

Attributes

adjustment[R]
order[R]

Public Class Methods

new(order, adjustment) click to toggle source
# File lib/returnly/discounts/line_item.rb, line 6
def initialize(order, adjustment)
  @adjustment = adjustment
  @order      = order
end

Public Instance Methods

discount_amount(line_item, units = 0) click to toggle source
# File lib/returnly/discounts/line_item.rb, line 11
def discount_amount(line_item, units = 0)
  return 0.0 if units <= 0
  return 0.0 if adjustment.adjustable != line_item

  units = line_item.quantity if units > line_item.quantity
  adjustment.amount * weight_of(line_item, units.to_d)
end

Private Instance Methods

weight_of(line_item, units) click to toggle source
# File lib/returnly/discounts/line_item.rb, line 21
def weight_of(line_item, units)
  (units / line_item.quantity).round(2, :down)
end