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.

再次触发篮子计算