Sha256: a47ca64e4b57756706fd0bdd54d274e16144a3cda230cc78ac5373b03f15ce16

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

module Stockman
  module Logic
    class Kit
      class Content
        attr_reader :kit_id, :variant_id, :amount_in_kit

        def initialize(kit_id, variant_id, amount_in_kit)
          @kit_id        = kit_id.to_i
          @variant_id    = variant_id.to_i
          @amount_in_kit = amount_in_kit.to_i
        end

        def variant
          @variant ||= Variant.new(variant_id)
        end

        def warehouse_ids
          @warehouse_ids ||= variant.warehouse_ids
        end

        def stock_levels
          @stock_levels ||= variant.stock_levels
        end

        def physical_amount(warehouse_id)
          stock_level_amount(:physical, warehouse_id)
        end

        def available_amount(warehouse_id)
          stock_level_amount(:available, warehouse_id)
        end

        private

        def stock_level_amount(type, warehouse_id)
          stock_level = stock_levels.find_by_warehouse(warehouse_id)

          return 0 if amount_in_kit.zero? || stock_level.nil?

          stock_level.send(:"#{type}_amount") / amount_in_kit
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stockman-logic-0.1.1 lib/stockman/logic/kit/content.rb
stockman-logic-0.1.0 lib/stockman/logic/kit/content.rb