点击此处---> 群内免费提供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表中创建带有促销代码,订购代码和用户的条目。 仅在调用第二个方法时才创建。 但是以某种方式没有调用此方法。 总是调用第一种方法,因此无法检查用户是否使用了给定次数的凭证。
请帮助我。 为什么要这样实现 尽管我们具有将凭证限制为给定次数的属性,但为何凭证无法按预期运行。
嗨Bhaskar,
如果您检查DefaultVoucherRedemptionPlaceOrderMethodHook的代码,则会在beforeSubmitOrder()之前看到
getVoucherService()。redeemVoucher(voucherCode,orderModel);
方法被调用。有关更多信息,请参考此处
https://help.hybris.com/1808/hcd/8c7ff2918669101483ddd711fc3f5df5.html
确定优惠券是否可预订,并在兑换促销优惠券(检查其串行优惠券)的redeemVoucher(字符串优惠券代码,CartModel购物车)时调用
即。 对于serialVoucher,该优惠券只能为每个用户应用一次,但对于促销优惠券,优惠券的兑换时间是可配置的。
希望这对您有所帮助。
谢谢
关注此线程。
Himanshu,谢谢您的回复。 是的,你是对的。 对于促销代金券,可以配置代金券的兑换次数。 但是,尽管我同时配置了这两个属性,但仍无法正常工作。
redemptionQuantityLimit和redemptionQuantityLimitPerUser
首先要验证您上面提到的上述条件。 每当正确兑换凭证时,都应创建并保存VoucherInvalidation对象。 创建该实例的代码无处可寻。
请让我知道这对您的工作情况。
Bhaskar,您好,
您需要签入voucher.class,此代码段创建了失效对象。
因此,无效对象仅在创建订单时创建。 下订单后,将创建无效对象,并且如果无法保留优惠券,则限制用户将优惠券添加到购物车中。
希望这会有所帮助。
谢谢
嗨,Himanshu,这是我在最初的问题中提到的内容。 该方法可用。 但是在扩展程序代码的任何地方都不会调用它们。 那么您如何限制凭证兑换呢?
我的问题是我创建了每个用户限制为3的凭证。 但兑换限制无效。
您好Bhaskar,您是否已解决此问题/解决此问题,同样的问题,将限制设置为1但可以使用1个以上。
一周热门 更多>