Class: Spree::OrderInventory
- Inherits:
-
Object
- Object
- Spree::OrderInventory
- Defined in:
- app/models/spree/order_inventory.rb
Instance Attribute Summary collapse
-
#line_item ⇒ Object
Returns the value of attribute line_item.
-
#order ⇒ Object
Returns the value of attribute order.
-
#variant ⇒ Object
Returns the value of attribute variant.
Instance Method Summary collapse
-
#initialize(order, line_item) ⇒ OrderInventory
constructor
A new instance of OrderInventory.
- #inventory_units ⇒ Object
-
#verify(shipment = nil) ⇒ Object
Only verify inventory for completed orders (as orders in frontend checkout have inventory assigned via
order.create_proposed_shipment
) or when shipment is explicitly passed.
Constructor Details
#initialize(order, line_item) ⇒ OrderInventory
Returns a new instance of OrderInventory.
5 6 7 8 9 |
# File 'app/models/spree/order_inventory.rb', line 5 def initialize(order, line_item) @order = order @line_item = line_item @variant = line_item.variant end |
Instance Attribute Details
#line_item ⇒ Object
Returns the value of attribute line_item.
3 4 5 |
# File 'app/models/spree/order_inventory.rb', line 3 def line_item @line_item end |
#order ⇒ Object
Returns the value of attribute order.
3 4 5 |
# File 'app/models/spree/order_inventory.rb', line 3 def order @order end |
#variant ⇒ Object
Returns the value of attribute variant.
3 4 5 |
# File 'app/models/spree/order_inventory.rb', line 3 def variant @variant end |
Instance Method Details
#inventory_units ⇒ Object
32 33 34 |
# File 'app/models/spree/order_inventory.rb', line 32 def inventory_units line_item.inventory_units end |
#verify(shipment = nil) ⇒ Object
Only verify inventory for completed orders (as orders in frontend checkout have inventory assigned via order.create_proposed_shipment
) or when shipment is explicitly passed
In case shipment is passed the stock location should only unstock or restock items if the order is completed. That is so because stock items are always unstocked when the order is completed through shipment.finalize
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'app/models/spree/order_inventory.rb', line 18 def verify(shipment = nil) if order.completed? || shipment.present? if inventory_units.size < line_item.quantity quantity = line_item.quantity - inventory_units.size shipment = determine_target_shipment unless shipment add_to_shipment(shipment, quantity) elsif inventory_units.size > line_item.quantity remove(inventory_units, shipment) end end end |