class OrderOptimizer::Order

Attributes

quantity[R]
skus[R]
total[R]

Public Class Methods

new(required_qty:) click to toggle source
# File lib/order_optimizer/order.rb, line 5
def initialize(required_qty:)
  @quantity     = 0
  @required_qty = required_qty
  @total        = 0
  @skus         = {}
end

Public Instance Methods

add(sku, count: 1) click to toggle source
# File lib/order_optimizer/order.rb, line 12
def add(sku, count: 1)
  @quantity += count * sku.quantity
  @total    += count * sku.price_per_sku
  @skus = skus.merge(sku.id => count) { |_identifier, current, plus| current + plus }
  self
end
complete?() click to toggle source
# File lib/order_optimizer/order.rb, line 23
def complete?
  missing_qty.zero?
end
exact?() click to toggle source
# File lib/order_optimizer/order.rb, line 27
def exact?
  @required_qty == quantity
end
missing_qty() click to toggle source
# File lib/order_optimizer/order.rb, line 19
def missing_qty
  [@required_qty - quantity, 0].max
end