Class: Spree::StockLocation
- Inherits:
-
Base
- Object
- ActiveRecord::Base
- Base
- Spree::StockLocation
show all
- Defined in:
- app/models/spree/stock_location.rb
Instance Method Summary
collapse
Methods inherited from Base
page
#clear_preferences, #default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference
Instance Method Details
#backorderable?(variant) ⇒ Boolean
46
47
48
|
# File 'app/models/spree/stock_location.rb', line 46
def backorderable?(variant)
stock_item(variant).try(:backorderable?)
end
|
#count_on_hand(variant) ⇒ Object
42
43
44
|
# File 'app/models/spree/stock_location.rb', line 42
def count_on_hand(variant)
stock_item(variant).try(:count_on_hand)
end
|
#fill_status(variant, quantity) ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'app/models/spree/stock_location.rb', line 71
def fill_status(variant, quantity)
if item = stock_item(variant)
if item.count_on_hand >= quantity
on_hand = quantity
backordered = 0
else
on_hand = item.count_on_hand
on_hand = 0 if on_hand < 0
backordered = item.backorderable? ? (quantity - on_hand) : 0
end
[on_hand, backordered]
else
[0, 0]
end
end
|
#move(variant, quantity, originator = nil) ⇒ Object
66
67
68
69
|
# File 'app/models/spree/stock_location.rb', line 66
def move(variant, quantity, originator = nil)
stock_item_or_create(variant).stock_movements.create!(quantity: quantity,
originator: originator)
end
|
#propagate_variant(variant) ⇒ Object
Wrapper for creating a new stock item respecting the backorderable config
23
24
25
|
# File 'app/models/spree/stock_location.rb', line 23
def propagate_variant(variant)
self.stock_items.create!(variant: variant, backorderable: self.backorderable_default)
end
|
#restock(variant, quantity, originator = nil) ⇒ Object
50
51
52
|
# File 'app/models/spree/stock_location.rb', line 50
def restock(variant, quantity, originator = nil)
move(variant, quantity, originator)
end
|
#restock_backordered(variant, quantity, originator = nil) ⇒ Object
54
55
56
57
58
59
60
|
# File 'app/models/spree/stock_location.rb', line 54
def restock_backordered(variant, quantity, originator = nil)
item = stock_item_or_create(variant)
item.update_columns(
count_on_hand: item.count_on_hand + quantity,
updated_at: Time.now
)
end
|
#set_up_stock_item(variant) ⇒ Object
Return either an existing stock item or create a new one. Useful in scenarios where the user might not know whether there is already a stock item for a given variant
30
31
32
|
# File 'app/models/spree/stock_location.rb', line 30
def set_up_stock_item(variant)
self.stock_item(variant) || propagate_variant(variant)
end
|
#state_text ⇒ Object
18
19
20
|
# File 'app/models/spree/stock_location.rb', line 18
def state_text
state.try(:abbr) || state.try(:name) || state_name
end
|
#stock_item(variant) ⇒ Object
34
35
36
|
# File 'app/models/spree/stock_location.rb', line 34
def stock_item(variant)
stock_items.where(variant_id: variant).order(:id).first
end
|
#stock_item_or_create(variant) ⇒ Object
38
39
40
|
# File 'app/models/spree/stock_location.rb', line 38
def stock_item_or_create(variant)
stock_item(variant) || stock_items.create(variant: variant)
end
|
#unstock(variant, quantity, originator = nil) ⇒ Object
62
63
64
|
# File 'app/models/spree/stock_location.rb', line 62
def unstock(variant, quantity, originator = nil)
move(variant, -quantity, originator)
end
|