Sha256: 59b9ca50cace0c2da4dbf548f840e2ccf4bfea71b3f2f2ca356a49a22acaa8a9

Contents?: true

Size: 1.01 KB

Versions: 113

Compression:

Stored size: 1.01 KB

Contents

module Spree
  module Stock
    module Splitter
      class ShippingCategory < Spree::Stock::Splitter::Base
        def split(packages)
          split_packages = packages.flat_map(&method(:split_by_category))
          return_next(split_packages)
        end

        private

        def split_by_category(package)
          # group package items by shipping category
          grouped_packages = package.contents.group_by(&method(:shipping_category_for))
          hash_to_packages(grouped_packages)
        end

        def hash_to_packages(grouped_packages)
          # select values from packages grouped by shipping categories and build new packages
          grouped_packages.values.map(&method(:build_package))
        end

        # optimization: save variant -> shipping_category correspondence
        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

113 entries across 113 versions & 1 rubygems

Version Path
spree_core-4.10.1 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.10.0 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.9.0 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.8.3 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.8.2 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.7.3 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.6.6 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.5.5 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.0.9 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.1.15 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.2.7 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.3.3 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.4.1 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.5.4 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.6.5 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.7.2 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.7.1 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.6.4 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.7.0 app/models/spree/stock/splitter/shipping_category.rb
spree_core-4.6.3 app/models/spree/stock/splitter/shipping_category.rb