【问题标题】:Create packages with active_shipping使用 active_shipping 创建包裹
【发布时间】:2014-11-10 10:21:41
【问题描述】:

我使用 active_shipping gem 来计算运费,但我遇到了一些问题。我的包裹可以有几个相同的对象。我对这些使用 PackageItem 类,但是当我使用 find_rates 方法时出现此错误。

NoMethodError: undefined method 'inches' for #<ActiveMerchant::Shipping::PackageItem:0x007fec95f24610>

这是我如何使用它的示例:

origin = Location.new(country: 'US', zip: '91801')
dest = Location.new(country: 'US', zip: '90001')
packages = PackageItem('test', 32, 18, 15, units: :imperial)
carrier = USPS.new(login: 'LOGIN')
carrier.find_rates(origin, dest, packages)

这是 PackageItem 的初始化程序:

def initialize(name, grams_or_ounces, value, quantity, options = {})
    @name = name

    imperial = (options[:units] == :imperial) ||
      (grams_or_ounces.respond_to?(:unit) && m.unit.to_sym == :imperial)

    @unit_system = imperial ? :imperial : :metric

    @weight = attribute_from_metric_or_imperial(grams_or_ounces, Mass, :grams, :ounces)

    @value = Package.cents_from(value)
    @quantity = quantity > 0 ? quantity : 1

    @sku = options[:sku]
    @hs_code = options[:hs_code]
    @options = options
  end

价值是物品成本,这就是我的理解。

如果使用 USPS 承运人,错误会出现在这个地方:

def self.size_code_for(package)
    if package.inches(:max) <= 12
      'REGULAR'
    else
      'LARGE'
    end
  end

谢谢!

【问题讨论】:

    标签: ruby-on-rails activemerchant


    【解决方案1】:

    我认为您需要使用 Package 模块而不是 PackageItem 模块(它似乎没有数量,因此您必须复制您的 Package 对象以获得更多数量)。

    另请参阅PackageItem 文档中的此注释:(http://www.rubydoc.info/github/Shopify/active_shipping/ActiveMerchant/Shipping/PackageItem)

    目前只有运输方式(标签创建)需要此功能。

    【讨论】:

    • 如果重复包裹的数量,运费计算返回值比实际值更贵。通常构建包数组是不好的做法。我在网上商店实现了计算石平成本的功能。我将站点中的响应与 Post 中的实际值进行比较。正确(最接近真实)的结果是他去 1 包时获得的。它的宽度和高度等于购物车中最大商品的宽度和高度,深度计算为购物车中所有商品的所有深度之和。
    猜你喜欢
    • 2022-07-06
    • 2014-05-03
    • 2017-12-20
    • 2014-07-30
    • 2021-11-04
    • 2014-02-12
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    相关资源
    最近更新 更多