Sha256: c70a05bb506a3dbef0812c44956010f68af7eed19832d01c50e9179838608231

Contents?: true

Size: 1.09 KB

Versions: 80

Compression:

Stored size: 1.09 KB

Contents

module Spree
  module Stock
    class Prioritizer
      attr_reader :packages, :inventory_units

      def initialize(inventory_units, packages, adjuster_class=Adjuster)
        @inventory_units = inventory_units
        @packages = packages
        @adjuster_class = adjuster_class
      end

      def prioritized_packages
        sort_packages
        adjust_packages
        prune_packages
        packages
      end

      private
      def adjust_packages
        inventory_units.each do |inventory_unit|
          adjuster = @adjuster_class.new(inventory_unit, :on_hand)

          visit_packages(adjuster)

          adjuster.status = :backordered
          visit_packages(adjuster)
        end
      end

      def visit_packages(adjuster)
        packages.each do |package|
          item = package.find_item adjuster.inventory_unit, adjuster.status
          adjuster.adjust(package) if item
        end
      end

      def sort_packages
        # order packages by preferred stock_locations
      end

      def prune_packages
        packages.reject! { |pkg| pkg.empty? }
      end
    end
  end
end

Version data entries

80 entries across 80 versions & 3 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0.1 app/models/spree/stock/prioritizer.rb
goca-spree-core-3.1.14.rails.5.0 app/models/spree/stock/prioritizer.rb
goca-spree-core-3.1.15.rails.5.0 app/models/spree/stock/prioritizer.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 app/models/spree/stock/prioritizer.rb
spree_core-3.1.14 app/models/spree/stock/prioritizer.rb
spree_core-3.1.13 app/models/spree/stock/prioritizer.rb
spree_core-3.1.12 app/models/spree/stock/prioritizer.rb
solidus_core-1.2.3 app/models/spree/stock/prioritizer.rb
solidus_core-1.1.4 app/models/spree/stock/prioritizer.rb
solidus_core-1.0.7 app/models/spree/stock/prioritizer.rb
spree_core-3.1.11 app/models/spree/stock/prioritizer.rb
spree_core-3.1.10 app/models/spree/stock/prioritizer.rb
spree_core-3.1.9 app/models/spree/stock/prioritizer.rb
spree_core-3.1.8 app/models/spree/stock/prioritizer.rb
spree_core-3.1.7 app/models/spree/stock/prioritizer.rb
spree_core-3.1.6 app/models/spree/stock/prioritizer.rb
spree_core-3.1.5 app/models/spree/stock/prioritizer.rb
spree_core-3.1.4 app/models/spree/stock/prioritizer.rb
spree_core-3.1.3 app/models/spree/stock/prioritizer.rb
spree_core-3.1.2 app/models/spree/stock/prioritizer.rb