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