class Stockman::Logic::Variant

Attributes

id[R]

Public Class Methods

new(id) click to toggle source
# File lib/stockman/logic/variant.rb, line 9
def initialize(id)
  @id = id.to_i
end

Public Instance Methods

allocated_amount(warehouse_id) click to toggle source
# File lib/stockman/logic/variant.rb, line 37
def allocated_amount(warehouse_id)
  obtain_stock_level_amount(:allocated, warehouse_id)
end
available_amount(warehouse_id) click to toggle source
# File lib/stockman/logic/variant.rb, line 41
def available_amount(warehouse_id)
  obtain_stock_level_amount(:available, warehouse_id)
end
physical_amount(warehouse_id) click to toggle source
# File lib/stockman/logic/variant.rb, line 33
def physical_amount(warehouse_id)
  obtain_stock_level_amount(:physical, warehouse_id)
end
stock_levels() click to toggle source
# File lib/stockman/logic/variant.rb, line 25
def stock_levels
  @stock_levels ||= StockLevelsCollection.new(id)
end
summary() click to toggle source
# File lib/stockman/logic/variant.rb, line 45
def summary
  @summary ||= Summary.from_object(self)
end
total_allocated_amount() click to toggle source
# File lib/stockman/logic/variant.rb, line 17
def total_allocated_amount
  stock_levels.sum(&:allocated_amount)
end
total_available_amount() click to toggle source
# File lib/stockman/logic/variant.rb, line 21
def total_available_amount
  total_physical_amount - total_allocated_amount
end
total_physical_amount() click to toggle source
# File lib/stockman/logic/variant.rb, line 13
def total_physical_amount
  stock_levels.sum(&:physical_amount)
end
warehouse_ids() click to toggle source
# File lib/stockman/logic/variant.rb, line 29
def warehouse_ids
  stock_levels.map(&:warehouse_id)
end

Private Instance Methods

obtain_stock_level_amount(type, warehouse_id) click to toggle source
# File lib/stockman/logic/variant.rb, line 51
def obtain_stock_level_amount(type, warehouse_id)
  return 0 unless warehouse_ids.include?(warehouse_id.to_i)

  stock_levels.find_by_warehouse(warehouse_id).send(:"#{type}_amount")
end