是否可以自定义店面以将购物车拆分为不同的订单?

2020-09-14 09:29发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用Hybris 6.3,我们为B2B实施生成了一个模块,我需要根据购物车中的产品,账单地址,付款,交货等将购物车内容分为不同的订单 共享相同的参数。

根据我们从客户那里收集到的要求,我们得出结论,在这里我们不需要采用寄售策略,因为该策略可以处理一个订单并将其拆分为运输和交付目的,相反,我们客户的需求是不同的产品 在购物车中按一组共享属性进行分组,并为每组产品生成订单。

到目前为止,我已经确定了负责下订单的类 DefaultCheckoutFacade ,该类包含以下方法:

  @Override
  公共OrderData placeOrder()引发InvalidCartException
  {
      final CartModel cartModel = getCart();
      如果(cartModel!= null)
      {
          如果(cartModel.getUser()。equals(getCurrentUserForCheckout())|| getCheckoutCustomerStrategy()。isAnonymousCheckout())
          {
              beforePlaceOrder(cartModel);
              最后的OrderModel orderModel = placeOrder(cartModel);
              afterPlaceOrder(cartModel,orderModel);
              如果(orderModel!= null)
              {
                  返回getOrderConverter()。convert(orderModel);
              }
          }
      }
      返回null;
  }

  

据我了解,我应该重写此方法,以根据需求中设置的标准生成不同的 CartModel ,并为每个 CartModel 下订单。 我修改了 CartModel 类,它是超类 AbstractOrderModel ,我猜想在上述方法中的 getCart()调用之后,我只需要 修改 CartModel 中的条目,并为我需要下达的每个订单调用方法 placeOrder(),但允许处理 CartModel 这样的对象?

或者,如果我需要将购物车分成不同的订单,是否应该以其他方式处理? 是否需要多个推车,但将其显示为一个应该做的事情? 是否应在OOTB Commercefacades扩展上进行这种修改? 有没有办法将其扩展到我们模块中的某个地方?

编辑

我开始阅读有关多个购物车的信息, 我需要什么,但是我还没有找到如何将条目保存到保存的购物车中的方法。 在此链接中,我可以看到如何保存购物车,方法saveCart 返回CommerceSaveCartResultData对象,方法saveCnd的getCartForCodeAndCurrentUser方法都收到一个CommerceSaveCartParameter,其中必须包含CartModel,如何生成此对象的实例以在CommerceSaveCartParameter中设置?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用Hybris 6.3,我们为B2B实施生成了一个模块,我需要根据购物车中的产品,账单地址,付款,交货等将购物车内容分为不同的订单 共享相同的参数。

根据我们从客户那里收集到的要求,我们得出结论,在这里我们不需要采用寄售策略,因为该策略可以处理一个订单并将其拆分为运输和交付目的,相反,我们客户的需求是不同的产品 在购物车中按一组共享属性进行分组,并为每组产品生成订单。

到目前为止,我已经确定了负责下订单的类 DefaultCheckoutFacade ,该类包含以下方法:

  @Override
  公共OrderData placeOrder()引发InvalidCartException
  {
      final CartModel cartModel = getCart();
      如果(cartModel!= null)
      {
          如果(cartModel.getUser()。equals(getCurrentUserForCheckout())|| getCheckoutCustomerStrategy()。isAnonymousCheckout())
          {
              beforePlaceOrder(cartModel);
              最后的OrderModel orderModel = placeOrder(cartModel);
              afterPlaceOrder(cartModel,orderModel);
              如果(orderModel!= null)
              {
                  返回getOrderConverter()。convert(orderModel);
              }
          }
      }
      返回null;
  }

  

据我了解,我应该重写此方法,以根据需求中设置的标准生成不同的 CartModel ,并为每个 CartModel 下订单。 我修改了 CartModel 类,它是超类 AbstractOrderModel ,我猜想在上述方法中的 getCart()调用之后,我只需要 修改 CartModel 中的条目,并为我需要下达的每个订单调用方法 placeOrder(),但允许处理 CartModel 这样的对象?

或者,如果我需要将购物车分成不同的订单,是否应该以其他方式处理? 是否需要多个推车,但将其显示为一个应该做的事情? 是否应在OOTB Commercefacades扩展上进行这种修改? 有没有办法将其扩展到我们模块中的某个地方?

编辑

我开始阅读有关多个购物车的信息, 我需要什么,但是我还没有找到如何将条目保存到保存的购物车中的方法。 在此链接中,我可以看到如何保存购物车,方法saveCart 返回CommerceSaveCartResultData对象,方法saveCnd的getCartForCodeAndCurrentUser方法都收到一个CommerceSaveCartParameter,其中必须包含CartModel,如何生成此对象的实例以在CommerceSaveCartParameter中设置?

付费偷看设置
发送
8条回答
d56caomao
1楼-- · 2020-09-14 09:46

:您是否能够将购物车拆分为两个订单,还是不得不采用寄售方式妥协? 询问是因为我们有类似的要求,其中必须根据不同类型的产品拆分购物车,并且需要生成两个单独的订单,因为这两个订单都需要将具有该特定类型产品的详细信息发送到不同的第三方后端系统( s)。

骆驼绵羊
2楼-- · 2020-09-14 09:33

我同意他提出多批托运的建议。 为一个用户拥有多个购物车将在管理促销,穿孔付款管理,运输计算,多个购物车的税金计算方面遇到问题。 相反,最好创建托运货物。 即使OOB不在购物车中创建寄售货物,您仍然可以这样做并创建寄售货物以根据所需属性对条目进行分组。 我们已经根据特定的属性对产品进行了分组,并创建了寄售产品,并将其发送到后端OMS系统。

一周热门 更多>