Class: Spree::InventoryUnit
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Spree::InventoryUnit
- Defined in:
- app/models/spree/inventory_unit.rb
Class Method Summary collapse
-
.assign_opening_inventory(order) ⇒ Object
Assigns inventory to a newly completed order.
- .backorder ⇒ Object
- .decrease(order, variant, quantity) ⇒ Object
-
.increase(order, variant, quantity) ⇒ Object
manages both variant.count_on_hand and inventory unit creation.
- .track_levels?(variant) ⇒ Boolean
Class Method Details
.assign_opening_inventory(order) ⇒ Object
Assigns inventory to a newly completed order. Should only be called once during the life-cycle of an order, on transition to completed.
37 38 39 40 41 42 43 44 |
# File 'app/models/spree/inventory_unit.rb', line 37 def self.assign_opening_inventory(order) return [] unless order.completed? #increase inventory to meet initial requirements order.line_items.each do |line_item| increase(order, line_item.variant, line_item.quantity) end end |
.backorder ⇒ Object
11 12 13 14 |
# File 'app/models/spree/inventory_unit.rb', line 11 def self.backorder warn "[SPREE] Spree::InventoryUnit.backorder will be deprecated in Spree 1.3. Please use Spree::Product.backordered instead." backordered end |
.decrease(order, variant, quantity) ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'app/models/spree/inventory_unit.rb', line 63 def self.decrease(order, variant, quantity) if self.track_levels?(variant) variant.increment!(:count_on_hand, quantity) end if Spree::Config[:create_inventory_units] destroy_units(order, variant, quantity) end end |
.increase(order, variant, quantity) ⇒ Object
manages both variant.count_on_hand and inventory unit creation
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/models/spree/inventory_unit.rb', line 48 def self.increase(order, variant, quantity) back_order = determine_backorder(order, variant, quantity) sold = quantity - back_order #set on_hand if configured if self.track_levels?(variant) variant.decrement!(:count_on_hand, quantity) end #create units if configured if Spree::Config[:create_inventory_units] create_units(order, variant, sold, back_order) end end |
.track_levels?(variant) ⇒ Boolean
73 74 75 |
# File 'app/models/spree/inventory_unit.rb', line 73 def self.track_levels?(variant) Spree::Config[:track_inventory_levels] && !variant.on_demand end |