Sha256: 9e5b634f55a7592f146b500f109873c7e9d85c1479138d2b7543f1025836c9fb

Contents?: true

Size: 1.09 KB

Versions: 54

Compression:

Stored size: 1.09 KB

Contents

module Spree
  module Cart
    class EstimateShippingRates
      prepend Spree::ServiceModule::Base

      def call(order:, country_iso: nil)
        country_id = country_id(country_iso)
        dummy_order = generate_dummy_order(order, country_id)

        packages = ::Spree::Stock::Coordinator.new(dummy_order).packages
        estimator = ::Spree::Stock::Estimator.new(dummy_order)
        shipping_rates = if order.line_items.any? && packages.any?
                           estimator.shipping_rates(packages.first)
                         else
                           []
                         end

        success(shipping_rates)
      end

      private

      def country_id(country_iso)
        if country_iso.present?
          ::Spree::Country.by_iso(country_iso)&.id
        else
          ::Spree::Country.default.id
        end
      end

      def generate_dummy_order(order, country_id)
        dummy_order = order.dup
        dummy_order.line_items = order.line_items
        dummy_order.ship_address = ::Spree::Address.new(country_id: country_id)
        dummy_order
      end
    end
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
spree_core-4.0.9 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.1.15 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.1.14 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.0.8 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-3.7.14.1 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.1.13.1 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.0.7.1 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.0.7 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-3.7.14 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.2.0.rc4 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.2.0.rc3 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.1.13 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.0.6 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.2.0.rc2 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-3.7.13 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.0.5 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.1.12 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-3.7.12 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.2.0.rc1 app/services/spree/cart/estimate_shipping_rates.rb
spree_core-4.0.4 app/services/spree/cart/estimate_shipping_rates.rb