促销优惠券的应用范围超过了redemptionQuantityLimit和redemptionQuantityLimitPerUser

2020-09-11 03:40发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)根据凭证文档,凭证的兑换不得超过...

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

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


根据凭证文档,凭证的兑换不得超过redemptionQuantityLimit或redemptionQuantityLimitPerUser。 但它没有发生。 优惠券的应用次数超过了两个属性中分配的次数。

我已经调试了代码,发现凭证服务中有两种方法可以兑换凭证。

  1)公共布尔redeemVoucher(String voucherCode,CartModel cart)
          引发JaloPriceFactoryException
        {
          saveIfModified(购物车);
          布尔值已更改= VoucherManager.getInstance()。redeemVoucher(voucherCode,getCart(cart));
          如果(已更改)
          {
            刷新(购物车);
          }
          返回更改;
        }
     
     
    2)public VoucherInvalidationModel redeemVoucher(String voucherCode,OrderModel order)
     
        {
      saveIfModified(order);
     
     
      VoucherInvalidation voucherInvalidation = VoucherManager.getInstance()。redeemVoucher(voucherCode,getOrder(order));
     
          如果(voucherInvalidation == null)
          {
            返回null;
          }
     
          刷新(顺序);
          return(((VoucherInvalidationModel)getModelService()。get(voucherInvalidation)));返回
        }

  

在Wiki中,提到了在应用凭证时,应在VoucherInvalidation表中创建带有促销代码,订购代码和用户的条目。 仅在调用第二个方法时才创建。 但是以某种方式没有调用此方法。 总是调用第一种方法,因此无法检查用户是否使用了给定次数的凭证。

请帮助我。 为什么要这样实现 尽管我们具有将凭证限制为给定次数的属性,但为何凭证无法按预期运行。

6条回答
Violet凡
2020-09-11 04:10

嗨Bhaskar,

如果您检查DefaultVoucherRedemptionPlaceOrderMethodHook的代码,则会在beforeSubmitOrder()之前看到 getVoucherService()。redeemVoucher(voucherCode,orderModel); 方法被调用。

有关更多信息,请参考此处

https://help.hybris.com/1808/hcd/8c7ff2918669101483ddd711fc3f5df5.html

  public boolean isReservable(String aVoucherCode,User user)
  {
      返回getInvalidations(aVoucherCode,用户).size() 

确定优惠券是否可预订,并在兑换促销优惠券(检查其串行优惠券)的redeemVoucher(字符串优惠券代码,CartModel购物车)时调用

  public boolean isReservable(最终字符串aVoucherCode,最终用户){
                返回this.getInvalidations(aVoucherCode).isEmpty();
              }
  

即。 对于serialVoucher,该优惠券只能为每个用户应用一次,但对于促销优惠券,优惠券的兑换时间是可配置的。

希望这对您有所帮助。

谢谢

一周热门 更多>