Sha256: 4d59ba6d1de25ccb541a9da06a6cbd2e55b31003c33d1ab2799e8140676a1115

Contents?: true

Size: 807 Bytes

Versions: 6

Compression:

Stored size: 807 Bytes

Contents

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

        cattr_accessor :threshold do
          Spree::CorreiosShipping::Config[:max_shipping_weight]
        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.to_f
            break if package.contents.size == 1
            removed << package.contents.shift
          end
          removed
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
spree_correios_shipping-1.1.4 app/models/spree/stock/splitter/correios_weight.rb
spree_correios_shipping-1.1.3 app/models/spree/stock/splitter/correios_weight.rb
spree_correios_shipping-1.1.2 app/models/spree/stock/splitter/correios_weight.rb
spree_correios_shipping-1.1.1 app/models/spree/stock/splitter/correios_weight.rb
spree_correios_shipping-1.1.0 app/models/spree/stock/splitter/correios_weight.rb
spree_correios_shipping-1.0.0 app/models/spree/stock/splitter/correios_weight.rb