• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketbase.php
  • Класс: BitrixSaleBasketBase
  • Вызов: BasketBase::refresh
public function refresh(RefreshStrategy $strategy = null)
{
	$isStartField = $this->isStartField();

	/** @var OrderBase $order */
	$order = $this->getOrder();
	if ($order)
	{
		$r = $order->onBeforeBasketRefresh();
		if (!$r->isSuccess())
		{
			return $r;
		}
	}

	if ($strategy === null)
	{
		$strategy = RefreshFactory::create();
	}

	$result = $strategy->refresh($this);

	if ($order)
	{
		$r = $order->onAfterBasketRefresh();
		if (!$r->isSuccess())
		{
			return $r;
		}
	}

	$changedBasketItems = $result->get('CHANGED_BASKET_ITEMS');
	if (!empty($changedBasketItems))
	{
		/** @var OrderBase $order */
		$order = $this->getOrder();
		if ($order)
		{
			$r = $order->refreshData(array('PRICE', 'PRICE_DELIVERY'));
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}
		}
	}

	if ($isStartField)
	{
		$hasMeaningfulFields = $this->hasMeaningfulField();

		/** @var Result $r */
		$r = $this->doFinalAction($hasMeaningfulFields);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
		}
	}

	return $result;
}