• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basket/baserefreshstrategy.php
  • Класс: BitrixSaleBasketBaseRefreshStrategy
  • Вызов: BaseRefreshStrategy::updateBasket
protected function updateBasket(BasketBase $basket, array $productDataList)
{
	$result = new Result();
	$changedBasketItems = array();

	$basketIndexList = $this->getBasketIndexList($basket);

	foreach ($productDataList as $providerName => $productValueList)
	{
		foreach ($productValueList as $productId => $productData)
		{
			if (empty($basketIndexList[$providerName][$productId]))
			{
				$basketIndexList[$providerName][$productId][] = $basket->createItem($productData['MODULE_ID'], $productData['PRODUCT_ID']);
			}

			/** @var BasketItemBase $item */
			foreach ($basketIndexList[$providerName][$productId] as $item)
			{
				if ($item && isset($productData['DELETE']) && $productData['DELETE'])
				{
					$item->delete();
					continue;
				}

				$r = $this->updateBasketItem($item, $productData);
				if (!$r->isSuccess())
				{
					$result->addErrors($r->getErrors());
				}

				if ($this->isBasketItemChanged($item))
				{
					$changedBasketItems[] = $item->getBasketCode();
				}
			}
		}
	}

	$result->addData(array(
		'CHANGED_BASKET_ITEMS' => $changedBasketItems
	));

	return $result;
}