class Returnly::Discounts::Order

Attributes

adjustment[R]
order[R]

Public Class Methods

new(order, adjustment) click to toggle source
# File lib/returnly/discounts/order.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/order.rb, line 11
def discount_amount(line_item, units = 0)
  return 0.0 if units <= 0

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

Private Instance Methods

order_items_price() click to toggle source
# File lib/returnly/discounts/order.rb, line 24
def order_items_price
  order.line_items.sum(&:price)
end
price_percent(line_item) click to toggle source
# File lib/returnly/discounts/order.rb, line 20
def price_percent(line_item)
  (line_item.price * 100 / order_items_price).round(2, :down)
end
weight_of(line_item, units) click to toggle source
# File lib/returnly/discounts/order.rb, line 28
def weight_of(line_item, units)
  (units / line_item.quantity).round(2, :down)
end