Sha256: 0f97183b07862ba020166849162e4f86f924a77c8266953f105295afd51d809d
Contents?: true
Size: 1.02 KB
Versions: 9
Compression:
Stored size: 1.02 KB
Contents
module Spree module Stock module Splitter class ShippingCategory < Spree::Stock::Splitter::Base def split(packages) split_packages = [] packages.each do |package| split_packages += split_by_category(package) end return_next split_packages end private def split_by_category(package) categories = Hash.new { |hash, key| hash[key] = [] } package.contents.each do |item| categories[shipping_category_for(item)] << item end hash_to_packages(categories) end def hash_to_packages(categories) packages = [] categories.each do |_id, contents| packages << build_package(contents) end packages end def shipping_category_for(item) @item_shipping_category ||= {} @item_shipping_category[item.inventory_unit.variant_id] ||= item.variant.shipping_category_id end end end end end
Version data entries
9 entries across 9 versions & 1 rubygems