【问题标题】:Magento - Setting carrier per productMagento - 为每个产品设置载体
【发布时间】:2011-06-28 15:14:34
【问题描述】:

我正在经营一家拥有两种产品的商店:易腐烂食品和普通商品。食品必须始终通过 FedEx 隔夜运送,其他商品必须始终通过 USPS 运送。如果有人从这两个类别中订购产品,则它们必须单独发货。

您是否知道允许这样做的现有模块或配置设置?

如果不是,听起来自定义模块将是另一种解决方案。在这种情况下,最好的方法是什么?我认为这会将订单拆分为多地址发货,两者使用相同的地址但使用不同的运输方式。不幸的是,我不确定如何以编程方式执行此操作,因此非常感谢任何教程/示例/资源。

【问题讨论】:

    标签: magento e-commerce shipping


    【解决方案1】:

    处理此问题的最正确方法可能是为每种产品类型创建两个订单,每个订单由不同的承运人运送到同一地址。从商店跟踪的角度来看,这在 IMO 上也更有意义,因为您可以彼此独立地处理。

    为了让你走上正轨(因为 Magento 在这部分本身特别神秘)你应该阅读Inchoo programmatically create order in Magento 和同一作者Programatically create customer and order in Magento with full blown one page checkout 的帖子。

    基本上我认为这是:

    1. 获取客户订单
    2. 遍历订单中的每个产品并将其拆分为每个产品类型的两个数组
    3. 为每种产品类型创建单独的订单,并为每种产品使用不同的运输方式。

    您可能必须扩展一些控制器或以非标准方式执行此操作并为此使用辅助功能,困难的部分是将支付/运输模块集成到您的订单流程中。这样一来,您将创建完整的结帐流程,因为 Magento 提供的单页结帐不会真正起作用,而且由于它使用 AJAX 的方式,开始工作太痛苦了。

    另外一种选择是连接到 Magento 的预创建订单事件,并使用已经定义的订单数据在其中创建订单,将其分成两个订单,但这是我目前从未听说过或看到实施的事情,所以你可以这么说,我必须“蒙住眼睛”。

    一种更简单的方法是使用自定义字段来定义您的产品的运输方式,这样您只需添加该字段而不关心自定义订单。您只需对此做出反应,但是 IMO 几乎不可能进行跟踪。

    【讨论】:

    • 感谢您的回答和资源链接!尽管您的想法确实有意义并且可以解决问题,但我不确定它是否适合这家商店,因为一页结账和一次购买是该网站的必要条件。也就是说,我想我可以尝试您的想法的变体,但不是在第 3 步中创建单独的订单,而是根据产品类型在结帐的“运输”部分将它们分成不同的货件。
    • 实际上,看起来多运输甚至不使用单页结帐,所以这个论点是无效的:P 我想得越多,我认为你的方法就越有意义。我唯一的问题是:我如何处理向客户收费?是否有一种安全/简单的方法可以为两个订单合并一次收费,或者是否会有两个单独的费用?
    • 因为您将负责整个结帐流程,您可以为这两个过程收取一次费用。这对您来说只是后端的事情,您已经必须重写结帐流程以对两个订单进行排序,最简单的做法是对整个产品的大订单收取一次费用,然后将它们分成两部分“子订单”为每个送货地址。有很多方法可以解决这个问题,但您需要找到一种商店觉得合适的方法,但这是我能看到的唯一一种方法,它可以为您提供所需的数据管理灵活性。
    【解决方案2】:

    覆盖免费送货模块。

    您可以设置适用于某些产品的销售规则并使它们“免运费”,而将其他产品留给您选择的主要运输提供商。

    您将需要了解它是如何工作的,但是,重点是 Magento 确实内置了将订单分成两个运输类别的功能,尽管只是免费送货的销售规则。但是你有源代码...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      相关资源
      最近更新 更多