Kentico-添加多个折扣

Kentico-添加多个折扣,kentico,discounts,Kentico,Discounts,我使用的是Kentico 8.2版,并试图允许用户输入多张优惠券。在ECommerceContext.CurrentShoppingCart对象中,您可以设置一个ShoppingCartCouponCode。然后将此优惠券添加到该对象的折扣集合中 如果我将ShoppingCartCouponCode更改为其他代码,则折扣集合将再次使用新折扣的单个项目重新创建,并丢失旧折扣 如果我存储折扣集合的副本,然后应用输入的新优惠券,然后将复制的集合附加到新生成的折扣集合中,那么这仅适用于几个折扣。我担心这

我使用的是Kentico 8.2版,并试图允许用户输入多张优惠券。在ECommerceContext.CurrentShoppingCart对象中,您可以设置一个ShoppingCartCouponCode。然后将此优惠券添加到该对象的折扣集合中

如果我将ShoppingCartCouponCode更改为其他代码,则折扣集合将再次使用新折扣的单个项目重新创建,并丢失旧折扣

如果我存储折扣集合的副本,然后应用输入的新优惠券,然后将复制的集合附加到新生成的折扣集合中,那么这仅适用于几个折扣。我担心这样做会在其他地方引起问题


那么以前有人实现过这个功能吗?你是如何实现的?

编辑:尽管看起来产品优惠券应该允许你实现这个功能,但它们并不像你想象的那样工作。将产品优惠券应用于购物车时,将更新COM_ShoppingCart中该购物车记录的ShoppingCartDefficintCouponId字段,以包括对COM_DefficintCoups中折扣优惠券ID的外键引用。因此,在任何时候,购物车上肯定只能有一张产品优惠券

因此,如果购物车中有特定的产品,并且输入了正确的优惠券代码,它们似乎更像是允许您对整个购物车应用折扣的标志,而不是特定产品的折扣

然而,这并不意味着我们不能做一些定制来实现这种影响。我们的第一步是更改CMS模块>电子商务>控件>购物车中的购物车内容控件,以允许输入多个优惠券代码。这是最简单的部分

第二部分是改变折扣和购物车的关联方式。这可能需要修改Kentico的系统表,因此风险自负。您基本上希望将外键引用与COM_ShoppingCart表分离,并在购物车和折扣之间创建多对多关系。就个人而言,我将不使用系统表和API,只创建另一个将CartID映射到折扣的自定义表(您可能也必须对订单执行相同的操作,因为在创建订单时,cart数据将应用于订单数据)

最后一部分是改变折扣的实际计算方式。 前面我建议创建一个自定义折扣CouponInfo提供程序。事实证明,您实际上要做的是创建一个自定义ShoppingCartInfoProvider并重写以下方法之一:

  • 计算订单()
  • CalculateItemsDiscount()
如果描述不够详细,我很抱歉,但这将是对Kentico处理产品优惠券方式的重大修改,因此我没有太多时间讨论细节。然而,我估计至少需要几个星期才能完成


旧答案

嗯,您可以创建表示两个或多个折扣组合的折扣,并在用户选择正确组合时应用这些折扣


或者,如果我有时间构建它,我更喜欢的是创建一个可以改变折扣应用方式的模型。M

结合其他折扣的折扣对我们来说不是一个切实可行的选择。我希望Kentico已经支持多个折扣,因为他们将一个折扣应用到一个系列中。如果您只能申请一个,为什么要这样做?是目前唯一的选择来创建我们自己的自定义功能吗?查看v7中的API,ShoppingCartInfo属性ShoppingCartDefficintCouponId为折扣优惠券存储单个ID,这似乎表明只有单个优惠券可以应用于购物车。COM_Sku折扣优惠券表似乎也反映了这种模式。但这并不意味着在v8中是一样的。我正在安装8.2以便我们能够解决这个问题:)谢谢Jerreck。如果我确实需要构建一些自定义功能,我会尝试将其模块化,并与其他人共享。您所研究的内容是有意义的。遗憾的是,正如我之前所想,这不是一项微不足道的任务。谢谢