ProductLineItem FreeGift меняется там, где мы этого не ожидаем - PullRequest
2 голосов
/ 06 июня 2019

У нас возникли странные проблемы с бесплатными подарками.

После звонка ProcessBasket-RemoveLineItem флаг FreeGift в ProductLineItem, оставшийся в корзине, меняется с истинного на ложный.

Похоже, проблема в InvalidateBasketCalculation конвейере (из bc_basket), который вызывается в ProcessBasketInvalidation-SetBasketInvalidationStatus.

enter image description here

1 Ответ

2 голосов
/ 06 июня 2019

Информация о том, является ли продукт бесплатным подарком, сохраняется в ComputedItems результатов расчета корзины.При вызове конвейера ProcessBasket-RemoveLineItem результаты расчета корзины помечаются как недействительные (как вы правильно поняли, это выполняется конвейером InvalidateBasketCalculation).В результате существующие ComputedItems будут удалены, так как они могут больше не соответствовать действительности (обратите внимание, что это недавнее изменение, которое было введено в ICM 7.10.5.5; если вы используете более старую версию, могут быть другие причиныдля этой проблемы).Таким образом, информация о том, является ли продукт бесплатным подарком, теряется в этот момент времени.

Чтобы это исправить, просто снова запустите расчет корзины, вызвав конвейер ProcessBasket-Calculate.

...