Функция CSaleBasket:: DeleteAll очищает текущую корзину пользователя. И все мы ей радостно уже давно пользуемся. Функция эта старая, появилась когда даже отложенных товаров, наверное, не было.
Потом появилась возможность отложить товар, а потом еще и подписаться на товар. Ну так вот, фишка в том, что сабж удаляет прекрасно вообще все у пользователя - и отложенные, и аккуратно собранные подписки. Разработчику же легко запамятовать сей факт.
Вот корректный код удаления именно текущей корзины:
$res = CSaleBasket::GetList(array(), array(
'FUSER_ID' => CSaleBasket::GetBasketUserID(),
'LID' => SITE_ID,
'ORDER_ID' => 'null',
'DELAY' => 'N',
'CAN_BUY' => 'Y'));
while ($row = $res->fetch()) {
CSaleBasket::Delete($row['ID']);
} |
.