ProductLineItem FreeGift 在我们不期望的地方发生了变化
ProductLineItem FreeGift changes where we don't expect it to
我们在免费礼物方面遇到了一些奇怪的问题。
调用ProcessBasket-RemoveLineItem
后,留在ProductLineItem
中的标记FreeGift
由true变为false。
看起来问题出在 InvalidateBasketCalculation
管道(来自 bc_basket),在 ProcessBasketInvalidation-SetBasketInvalidationStatus
中调用。
购物篮计算结果ComputedItems
中存储了商品是否为赠品的信息。通过调用管道 ProcessBasket-RemoveLineItem
,篮子计算结果被标记为无效(正如您正确地发现这是由管道 InvalidateBasketCalculation
完成的)。因此,现有的 ComputedItems
将被删除,因为它们可能不再正确(请注意,这是 ICM 7.10.5.5 引入的最新更改;如果您使用的是旧版本,则可能此问题的其他原因)。所以这个时候产品是否是赠品的信息就丢失了。
要解决此问题,只需调用管道 ProcessBasket-Calculate
.
再次触发篮子计算
我们在免费礼物方面遇到了一些奇怪的问题。
调用ProcessBasket-RemoveLineItem
后,留在ProductLineItem
中的标记FreeGift
由true变为false。
看起来问题出在 InvalidateBasketCalculation
管道(来自 bc_basket),在 ProcessBasketInvalidation-SetBasketInvalidationStatus
中调用。
购物篮计算结果ComputedItems
中存储了商品是否为赠品的信息。通过调用管道 ProcessBasket-RemoveLineItem
,篮子计算结果被标记为无效(正如您正确地发现这是由管道 InvalidateBasketCalculation
完成的)。因此,现有的 ComputedItems
将被删除,因为它们可能不再正确(请注意,这是 ICM 7.10.5.5 引入的最新更改;如果您使用的是旧版本,则可能此问题的其他原因)。所以这个时候产品是否是赠品的信息就丢失了。
要解决此问题,只需调用管道 ProcessBasket-Calculate
.