Class: Spree::StockLocation

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/spree/stock_location.rb

Instance Method Summary collapse

Instance Method Details

#backorderable?(variant) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/models/spree/stock_location.rb', line 26

def backorderable?(variant)
  stock_item(variant).try(:backorderable?)
end

#count_on_hand(variant) ⇒ Object



22
23
24
# File 'app/models/spree/stock_location.rb', line 22

def count_on_hand(variant)
  stock_item(variant).try(:count_on_hand)
end

#fill_status(variant, quantity) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/models/spree/stock_location.rb', line 42

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



38
39
40
# File 'app/models/spree/stock_location.rb', line 38

def move(variant, quantity, originator = nil)
  stock_item(variant).stock_movements.create!(quantity: quantity, originator: originator)
end

#restock(variant, quantity, originator = nil) ⇒ Object



30
31
32
# File 'app/models/spree/stock_location.rb', line 30

def restock(variant, quantity, originator = nil)
  move(variant, quantity, originator)
end

#stock_item(variant) ⇒ Object



18
19
20
# File 'app/models/spree/stock_location.rb', line 18

def stock_item(variant)
  stock_items.where(variant_id: variant).order(:id).first
end

#unstock(variant, quantity, originator = nil) ⇒ Object



34
35
36
# File 'app/models/spree/stock_location.rb', line 34

def unstock(variant, quantity, originator = nil)
  move(variant, -quantity, originator)
end