Sha256: 97c38de3aded15691b2e891eb4c1c1f58d14ab3c4e7f3facc416a924db103c76
Contents?: true
Size: 1.28 KB
Versions: 2
Compression:
Stored size: 1.28 KB
Contents
require_relative 'variant/stock_level' require_relative 'variant/stock_levels_collection' module Stockman module Logic class Variant attr_reader :id def initialize(id) @id = id.to_i end def total_physical_amount stock_levels.sum(&:physical_amount) end def total_allocated_amount stock_levels.sum(&:allocated_amount) end def total_available_amount total_physical_amount - total_allocated_amount end def stock_levels @stock_levels ||= StockLevelsCollection.new(id) end def warehouse_ids stock_levels.map(&:warehouse_id) end def physical_amount(warehouse_id) obtain_stock_level_amount(:physical, warehouse_id) end def allocated_amount(warehouse_id) obtain_stock_level_amount(:allocated, warehouse_id) end def available_amount(warehouse_id) obtain_stock_level_amount(:available, warehouse_id) end def summary @summary ||= Summary.from_object(self) end private 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 end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
stockman-logic-0.1.1 | lib/stockman/logic/variant.rb |
stockman-logic-0.1.0 | lib/stockman/logic/variant.rb |