2020-09-15 04:47发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我设置了单个代码优惠券和促销规则,条件优惠券代码和购物车总额超过$ 1000,并且仅作为触发消息进行操作。 现在,当我尝试将优惠券应用于店面优惠券时,即使购物车总额少于$ 1000,我也可以在hmc的cppliedcoupons中看到它。 根据我的假设,如果不满足规则,则优惠券代码也不应附加在购物车上。
如果我做错了任何事情,请帮助我。
默认行为是,优惠券只要有效就将应用于演员表。 您需要使用优惠券进行有效促销才能触发操作。
您可以向客户创建潜在的促销信息,以通知是否满足所有条件
实际上促销没有得到应用,但已应用的优惠券代码仍保留在购物车中。 可能是什么问题?
需要在 createProductList(最终模型模型)方法中修改 AbstractCartPageController 。 肮脏代码的例子。
受保护的void createProductList(最终模型模型)引发CMSItemNotFoundException { 最后的CartData cartData = cartFacade.getSessionCartWithEntryOrdering(true); boolean hasPickUpCartEntries = false; if(cartData.getEntries()!= null &&!cartData.getEntries()。isEmpty()) { 用于(最终OrderEntryData条目:cartData.getEntries()) { 如果(!hasPickUpCartEntries && entry.getDeliveryPointOfService()!= null) { hasPickUpCartEntries = true; } 最后的UpdateQuantityForm uqf = new UpdateQuantityForm(); uqf.setQuantity(entry.getQuantity()); model.addAttribute(" updateQuantityForm" + entry.getEntryNumber(),uqf); } } //修复凭证 updatevouchersFromCartData(cartData); model.addAttribute(" cartData",cartData); model.addAttribute(" hasPickUpCartEntries",Boolean.valueOf(hasPickUpCartEntries)); storeCmsPageInModel(model,getContentPageForLabelOrId(CART_CMS_PAGE_LABEL)); setUpMetaDataForContentPage(model,getContentPageForLabelOrId(CART_CMS_PAGE_LABEL)); } //修复优惠券。 脏代码的示例: 受保护的void updatevouchersFromCartData(CartData cartData){ List AppliedVouchers = cartData.getAppliedVouchers(); Iterator 迭代器= AppliedVouchers.iterator(); 而(iterator.hasNext()){ 字符串voucherCode = iterator.next(); 尝试{ voucherFacade.releaseVoucher(voucherCode); voucherFacade.applyVoucher(voucherCode); } catch(忽略VoucherOperationException){ LOG.warn("无法兑换凭单:" + voucherCode); iterator.remove(); } } cartData.setAppliedVouchers(appliedVouchers); }
嗨,
是的,使用凭证然后再发行是一项非常昂贵的操作,这是正确的。
对于我来说,当某些商品从购物车中取出时,如果不满足促销条件,则应自动释放优惠券。 这没有发生,因为没有为这种情况编写OOTB代码。
这就是为什么我明确发行凭证的原因。
谢谢。 :)
您好,您对此有任何可行的解决方案吗? 我遇到了同样的问题。
您好,在PromotionsManager中调试 findOrderAndProductPromotionsSortByPriority 函数,然后查看您的促销是否出现在此函数返回的促销列表中。 如果是,则遍历所有促销并调用每个促销的promotion.evaluate函数。 例如,您的促销是 OrderThresholdDiscountPromotion ,然后转到此类并调试评估方法。
findOrderAndProductPromotionsSortByPriority
OrderThresholdDiscountPromotion
如有必要,重写此jalo类并编写自己的自定义逻辑以防止应用优惠券。 要覆盖jalo类,请参见下文
让我知道你的情况。
最多设置5个标签!
默认行为是,优惠券只要有效就将应用于演员表。 您需要使用优惠券进行有效促销才能触发操作。
您可以向客户创建潜在的促销信息,以通知是否满足所有条件
实际上促销没有得到应用,但已应用的优惠券代码仍保留在购物车中。 可能是什么问题?
需要在 createProductList(最终模型模型)方法中修改 AbstractCartPageController 。 肮脏代码的例子。
嗨,
是的,使用凭证然后再发行是一项非常昂贵的操作,这是正确的。
对于我来说,当某些商品从购物车中取出时,如果不满足促销条件,则应自动释放优惠券。 这没有发生,因为没有为这种情况编写OOTB代码。
这就是为什么我明确发行凭证的原因。
谢谢。 :)
您好,您对此有任何可行的解决方案吗? 我遇到了同样的问题。
您好,在PromotionsManager中调试
findOrderAndProductPromotionsSortByPriority
函数,然后查看您的促销是否出现在此函数返回的促销列表中。 如果是,则遍历所有促销并调用每个促销的promotion.evaluate函数。 例如,您的促销是OrderThresholdDiscountPromotion
,然后转到此类并调试评估方法。如有必要,重写此jalo类并编写自己的自定义逻辑以防止应用优惠券。 要覆盖jalo类,请参见下文
让我知道你的情况。
一周热门 更多>