Class: OrderOptimizer

Inherits:
Object
  • Object
show all
Defined in:
lib/order_optimizer.rb,
lib/order_optimizer/sku.rb,
lib/order_optimizer/order.rb,
lib/order_optimizer/catalog.rb,
lib/order_optimizer/version.rb

Defined Under Namespace

Classes: Catalog, Order, Sku

Constant Summary collapse

VERSION =
"0.5.1".freeze

Instance Method Summary collapse

Constructor Details

#initialize(skus) ⇒ OrderOptimizer

Returns a new instance of OrderOptimizer.



8
9
10
# File 'lib/order_optimizer.rb', line 8

def initialize(skus)
  @catalog = OrderOptimizer::Catalog.new(skus)
end

Instance Method Details

#cheapest_exact_order(required_qty:) ⇒ Object



17
18
19
20
# File 'lib/order_optimizer.rb', line 17

def cheapest_exact_order(required_qty:)
  find_possible_orders(skus: @catalog.skus, required_qty: required_qty).select(&:exact?).min_by(&:total) ||
    OrderOptimizer::Order.new(required_qty: required_qty)
end

#cheapest_order(required_qty:) ⇒ Object



12
13
14
15
# File 'lib/order_optimizer.rb', line 12

def cheapest_order(required_qty:)
  find_possible_orders(skus: @catalog.skus, required_qty: required_qty).min_by(&:total) ||
    OrderOptimizer::Order.new(required_qty: required_qty)
end

#possible_orders(required_qty:) ⇒ Object



22
23
24
# File 'lib/order_optimizer.rb', line 22

def possible_orders(required_qty:)
  find_possible_orders(skus: @catalog.skus, required_qty: required_qty).sort_by(&:total)
end