Sha256: 69081545bce33861f6efbc6e2e0bf7341c2021966ae522be146906dc4d255bb2

Contents?: true

Size: 879 Bytes

Versions: 123

Compression:

Stored size: 879 Bytes

Contents

# frozen_string_literal: true

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[item.variant.shipping_category_id] << 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
      end
    end
  end
end

Version data entries

123 entries across 123 versions & 2 rubygems

Version Path
solidus_core-4.1.4 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.2.3 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.1.3 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.0.4 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.4.6 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.0.3 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.1.2 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.2.2 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.4.5 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.2.1 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.2.0 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.1.1 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.0.2 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.4.4 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.3.4 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.2.9 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.2.8 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.3.3 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-3.4.3 app/models/spree/stock/splitter/shipping_category.rb
solidus_core-4.0.1 app/models/spree/stock/splitter/shipping_category.rb