编辑: 虽然看起来产品优惠券应该允许你这样做,但它们的工作方式并不像你想象的那样。将 Product Coupon 应用于购物车时,COM_ShoppingCart 中该购物车记录的 ShoppingCartDiscountCouponID 字段将更新,以包含对 COM_DiscountCoupon 中折扣券 ID 的外键引用。因此,任何时候都绝对只能有一张产品优惠券应用于购物车。
因此,它们似乎更像是标志,如果特定产品在购物车中并且输入了正确的优惠券代码,则可以将折扣应用于整个购物车,而不是特定产品的折扣。
然而,这并不意味着我们不能做一些定制来实现这一点影响我们自己。我们的第一步是更改 CMSModules > Ecommerce > Controls > ShoppingCart 中的 ShoppingCartContent 控件,以允许输入多个优惠券代码。那是容易的部分。
第二部分是更改折扣和购物车的关联方式。这可能需要修改 Kentico 的系统表,因此您需要自担风险。您基本上希望将外键引用与 COM_ShoppignCart 表分离,并在购物车和折扣之间创建多对多关系。就个人而言,我会单独保留系统表和 API,只创建另一个将 CartIDs 映射到 DiscountIDs 的自定义表(您可能也必须对 Orders 执行相同的操作,因为在创建订单时将购物车数据应用于订单数据)。
最后一部分是改变折扣的实际计算方式。之前我建议创建一个自定义 DiscountCouponInfoProvider。事实证明,您真正想要做的是创建一个自定义 ShoppingCartInfoProvider 并覆盖以下方法之一:
如果这描述性不够,我深表歉意,但这将对 Kentico 处理产品优惠券的方式进行重大修改,因此我没有太多时间来详细说明。但是,我估计至少需要几周时间才能完成。
旧答案
嗯,您可以创建代表两个或多个折扣组合的折扣,并在用户选择正确组合时应用这些折扣。
或者,如果我有时间构建它,我希望创建一个自定义 DiscountCouponInfoProvider来更改应用折扣的方式。M