Class: Spree::Stock::Coordinator

Inherits:
Object
  • Object
show all
Defined in:
app/models/spree/stock/coordinator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(order, inventory_units = nil) ⇒ Coordinator


7
8
9
10
# File 'app/models/spree/stock/coordinator.rb', line 7

def initialize(order, inventory_units = nil)
  @order = order
  @inventory_units = inventory_units || InventoryUnitBuilder.new(order).units
end

Instance Attribute Details

#inventory_unitsObject (readonly)

Returns the value of attribute inventory_units


4
5
6
# File 'app/models/spree/stock/coordinator.rb', line 4

def inventory_units
  @inventory_units
end

#orderObject (readonly)

Returns the value of attribute order


4
5
6
# File 'app/models/spree/stock/coordinator.rb', line 4

def order
  @order
end

#unallocated_inventory_unitsObject

Returns the value of attribute unallocated_inventory_units


5
6
7
# File 'app/models/spree/stock/coordinator.rb', line 5

def unallocated_inventory_units
  @unallocated_inventory_units
end

Instance Method Details

#build_packages(packages = []) ⇒ Object


24
25
26
27
28
29
30
31
# File 'app/models/spree/stock/coordinator.rb', line 24

def build_packages(packages = [])
  stock_locations_with_requested_variants.each do |stock_location|
    packer = build_packer(stock_location, inventory_units)
    packages += packer.packages
  end

  packages
end

#packagesObject


18
19
20
21
22
# File 'app/models/spree/stock/coordinator.rb', line 18

def packages
  packages = build_packages
  packages = prioritize_packages(packages)
  packages = estimate_packages(packages)
end

#shipmentsObject


12
13
14
15
16
# File 'app/models/spree/stock/coordinator.rb', line 12

def shipments
  packages.map do |package|
    package.to_shipment.tap { |s| s.address = order.ship_address }
  end
end