免费礼物给我们带来一些奇怪的问题。
调用ProcessBasket-RemoveLineItem
后,保留在购物篮中的FreeGift
中的标志ProductLineItem
从true更改为false。
问题似乎出在InvalidateBasketCalculation
中的ProcessBasketInvalidation-SetBasketInvalidationStatus
管道(来自bc_basket)中。
答案 0 :(得分:2)
产品是否为免费礼物的信息存储在购物篮计算结果的ComputedItems
中。通过调用管道ProcessBasket-RemoveLineItem
,篮子计算结果被标记为无效(如您正确地发现,这是由管道InvalidateBasketCalculation
完成的)。结果,现有的ComputedItems
将被删除,因为它们可能不再正确(请注意,这是ICM 7.10.5.5引入的最新更改;如果使用的是较旧的版本,则可能此问题的其他原因)。因此,此时产品是否为免费礼物的信息会丢失。
要解决此问题,只需调用管道ProcessBasket-Calculate
再次触发篮子计算。