Sha256: 576304f36b426bf1eb3c77e1b6c932b3651db7b1def6d4932abdfeaf001993e8

Contents?: true

Size: 890 Bytes

Versions: 47

Compression:

Stored size: 890 Bytes

Contents

module Spree
  module Stock
    module Splitter
      class Weight < Spree::Stock::Splitter::Base
        attr_reader :packer, :next_splitter

        cattr_accessor :threshold do
          150
        end

        def split(packages)
          packages.each do |package|
            removed_contents = reduce package
            packages << build_package(removed_contents) unless removed_contents.empty?
          end
          return_next packages
        end

        private
        def reduce(package)
          removed = []
          while package.weight > self.threshold
            contents = package.contents_by_weight
            break if contents.size == 1
            # Deleting the second heaviest item in the package should yield best results
            removed << package.contents.delete(contents[1])
          end
          removed
        end
      end
    end
  end
end

Version data entries

47 entries across 47 versions & 2 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0.1 app/models/spree/stock/splitter/weight.rb
goca-spree-core-3.1.14.rails.5.0 app/models/spree/stock/splitter/weight.rb
goca-spree-core-3.1.15.rails.5.0 app/models/spree/stock/splitter/weight.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.9 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.14 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.8 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.13 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.7 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.12 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.6 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.11 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.10 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.5 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.9 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.4 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.8 app/models/spree/stock/splitter/weight.rb
spree_core-3.1.7 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.3 app/models/spree/stock/splitter/weight.rb
spree_core-3.2.2 app/models/spree/stock/splitter/weight.rb