Class: Stockman::Logic::Summary

Inherits:
Object
  • Object
show all
Defined in:
lib/stockman/logic/summary.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Summary

Returns a new instance of Summary.



32
33
34
# File 'lib/stockman/logic/summary.rb', line 32

def initialize(data)
  @data = data
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



4
5
6
# File 'lib/stockman/logic/summary.rb', line 4

def data
  @data
end

Class Method Details

.from_hash(hash) ⇒ Object



6
7
8
9
10
# 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) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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

Instance Method Details

#to_hashObject



52
53
54
# File 'lib/stockman/logic/summary.rb', line 52

def to_hash
  self.class.transform_values(data, &Utils.method(:serialize_amount))
end

#to_json(_ = nil) ⇒ Object



56
57
58
# File 'lib/stockman/logic/summary.rb', line 56

def to_json(_ = nil)
  JSON.generate(to_hash)
end

#total_allocated_amountObject



40
41
42
# File 'lib/stockman/logic/summary.rb', line 40

def total_allocated_amount
  data[:allocated_amount]
end

#total_available_amountObject



44
45
46
# File 'lib/stockman/logic/summary.rb', line 44

def total_available_amount
  data[:available_amount]
end

#total_physical_amountObject



36
37
38
# File 'lib/stockman/logic/summary.rb', line 36

def total_physical_amount
  data[:physical_amount]
end

#warehousesObject



48
49
50
# File 'lib/stockman/logic/summary.rb', line 48

def warehouses
  data[:warehouses]
end