class Stockman::Logic::Summary
Attributes
data[R]
Public Class Methods
from_hash(hash)
click to toggle source
# File lib/stockman/logic/summary.rb, line 6 def self.from_hash(hash) data = transform_values(hash, &Utils.method(:deserialize_amount)) new(data) end
from_object(object)
click to toggle source
# File lib/stockman/logic/summary.rb, line 12 def self.from_object(object) data = { physical_amount: object.total_physical_amount, allocated_amount: object.total_allocated_amount, available_amount: object.total_available_amount, warehouses: object.stock_levels.inject({}) do |memo, stock_level| memo.merge( stock_level.warehouse_id => { physical_amount: stock_level.physical_amount, allocated_amount: stock_level.allocated_amount, available_amount: stock_level.available_amount } ) end } new(data) end
new(data)
click to toggle source
# File lib/stockman/logic/summary.rb, line 32 def initialize(data) @data = data end
Private Class Methods
transform_values(hash) { |data| ... }
click to toggle source
# File lib/stockman/logic/summary.rb, line 62 def self.transform_values(hash, &block) method = lambda do |memo, data| memo.merge data[0] => yield(data[1]) end totals = hash.symbolize_keys.slice(:physical_amount, :allocated_amount, :available_amount) .inject({}, &method) warehouses = hash.symbolize_keys[:warehouses].inject({}) do |memo, data| memo.merge data[0].to_i => data[1].inject({}, &method).symbolize_keys end totals.merge(warehouses: warehouses) end
Public Instance Methods
to_hash()
click to toggle source
# File lib/stockman/logic/summary.rb, line 52 def to_hash self.class.transform_values(data, &Utils.method(:serialize_amount)) end
to_json(_ = nil)
click to toggle source
# File lib/stockman/logic/summary.rb, line 56 def to_json(_ = nil) JSON.generate(to_hash) end
total_allocated_amount()
click to toggle source
# File lib/stockman/logic/summary.rb, line 40 def total_allocated_amount data[:allocated_amount] end
total_available_amount()
click to toggle source
# File lib/stockman/logic/summary.rb, line 44 def total_available_amount data[:available_amount] end
total_physical_amount()
click to toggle source
# File lib/stockman/logic/summary.rb, line 36 def total_physical_amount data[:physical_amount] end
warehouses()
click to toggle source
# File lib/stockman/logic/summary.rb, line 48 def warehouses data[:warehouses] end