• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::setOrder
static function setOrder(BasketBase $basket)
{
	$order = $basket->getOrder();
	if (!($order instanceof OrderBase))
	{
		throw new MainInvalidOperationException();
	}
	$instanceIndex = static::getInstanceIndexByBasket($basket);
	if (!static::instanceExists($instanceIndex))
		return static::buildFromOrder($order);

	$newInstanceIndex = static::getInstanceIndexByOrder($order);
	if (!static::instanceExists($newInstanceIndex))
	{
		/** @var Discount $discount */
		$discount = static::getInstance($instanceIndex);
		$discount->basket = null;
		$discount->order = $order;
		$discount->context = new ContextUser($order->getUserId());
		$discount->initInstanceFromOrder();
		unset($discount);
		static::migrateInstance($instanceIndex, $newInstanceIndex);
	}
	else
	{
		static::removeInstance($instanceIndex);
	}
	return static::getInstance($newInstanceIndex);
}