Class: Spree::OrderInventory
- Inherits:
-
Object
- Object
- Spree::OrderInventory
- Defined in:
- app/models/spree/order_inventory.rb
Instance Attribute Summary collapse
-
#order ⇒ Object
Returns the value of attribute order.
Instance Method Summary collapse
-
#initialize(order) ⇒ OrderInventory
constructor
A new instance of OrderInventory.
- #inventory_units_for(variant) ⇒ Object
-
#verify(line_item, shipment = nil) ⇒ Object
Only verify inventory for completed orders as carts have inventory assigned via create_proposed_shipment methh.
Constructor Details
#initialize(order) ⇒ OrderInventory
Returns a new instance of OrderInventory.
5 6 7 |
# File 'app/models/spree/order_inventory.rb', line 5 def initialize(order) @order = order end |
Instance Attribute Details
#order ⇒ Object
Returns the value of attribute order.
3 4 5 |
# File 'app/models/spree/order_inventory.rb', line 3 def order @order end |
Instance Method Details
#inventory_units_for(variant) ⇒ Object
31 32 33 34 |
# File 'app/models/spree/order_inventory.rb', line 31 def inventory_units_for(variant) units = order.shipments.collect{|s| s.inventory_units.all}.flatten units.group_by(&:variant_id)[variant.id] || [] end |
#verify(line_item, shipment = nil) ⇒ Object
Only verify inventory for completed orders as carts have inventory assigned via create_proposed_shipment methh
or when shipment is explicitly passed
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/models/spree/order_inventory.rb', line 13 def verify(line_item, shipment = nil) if order.completed? || shipment.present? variant_units = inventory_units_for(line_item.variant) if variant_units.size < line_item.quantity quantity = line_item.quantity - variant_units.size shipment = determine_target_shipment(line_item.variant) unless shipment add_to_shipment(shipment, line_item.variant, quantity) elsif variant_units.size > line_item.quantity remove(line_item, variant_units, shipment) end else true end end |