即使购物车不满足规则条件,优惠券也会与促销规则一起应用于购物车

2020-09-15 04:47发布

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

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


大家好,

我设置了单个代码优惠券和促销规则,条件优惠券代码和购物车总额超过$ 1000,并且仅作为触发消息进行操作。 现在,当我尝试将优惠券应用于店面优惠券时,即使购物车总额少于$ 1000,我也可以在hmc的cppliedcoupons中看到它。 根据我的假设,如果不满足规则,则优惠券代码也不应附加在购物车上。

如果我做错了任何事情,请帮助我。

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

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


大家好,

我设置了单个代码优惠券和促销规则,条件优惠券代码和购物车总额超过$ 1000,并且仅作为触发消息进行操作。 现在,当我尝试将优惠券应用于店面优惠券时,即使购物车总额少于$ 1000,我也可以在hmc的cppliedcoupons中看到它。 根据我的假设,如果不满足规则,则优惠券代码也不应附加在购物车上。

如果我做错了任何事情,请帮助我。

付费偷看设置
发送
8条回答
compass1988
1楼-- · 2020-09-15 05:40

默认行为是,优惠券只要有效就将应用于演员表。 您需要使用优惠券进行有效促销才能触发操作。

您可以向客户创建潜在的促销信息,以通知是否满足所有条件

一只江湖小虾
2楼-- · 2020-09-15 05:25

实际上促销没有得到应用,但已应用的优惠券代码仍保留在购物车中。 可能是什么问题?

需要在 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);
      }


  
compass1988
4楼-- · 2020-09-15 05:40

嗨,

是的,使用凭证然后再发行是一项非常昂贵的操作,这是正确的。

对于我来说,当某些商品从购物车中取出时,如果不满足促销条件,则应自动释放优惠券。 这没有发生,因为没有为这种情况编写OOTB代码。

这就是为什么我明确发行凭证的原因。

谢谢。 :)

三十六小时_GS
5楼-- · 2020-09-15 05:15

您好,您对此有任何可行的解决方案吗? 我遇到了同样的问题。

spaceman01
6楼-- · 2020-09-15 05:33

您好,在PromotionsManager中调试 findOrderAndProductPromotionsSortByPriority 函数,然后查看您的促销是否出现在此函数返回的促销列表中。 如果是,则遍历所有促销并调用每个促销的promotion.evaluate函数。 例如,您的促销是 OrderThresholdDiscountPromotion ,然后转到此类并调试评估方法。

如有必要,重写此jalo类并编写自己的自定义逻辑以防止应用优惠券。 要覆盖jalo类,请参见下文

  

  

让我知道你的情况。

一周热门 更多>