• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::save
public function save()
{
	$process = true;
	$result = new Result;
	if (!$this->isOrderExists() || !$this->isBasketNotEmpty())
		return $result;
	$orderId = (int)$this->getOrder()->getId();

	if ($this->getUseMode() === null)
		return $result;

	if ($process)
	{
		switch ($this->getUseMode())
		{
			case self::USE_MODE_FULL:
				$saveResult = $this->saveFull();
				break;
			case self::USE_MODE_APPLY:
				$saveResult = $this->saveApply();
				break;
			case self::USE_MODE_MIXED:
				$saveResult = $this->saveMixed();
				break;
			default:
				$saveResult = new Result;
				$saveResult->addError(new MainEntityEntityError(
					Loc::getMessage('BX_SALE_DISCOUNT_ERR_BAD_USE_MODE'),
					self::ERROR_ID
				));
		}
		if (!$saveResult->isSuccess())
		{
			$result->addErrors($saveResult->getErrors());
		}
		else
		{
			if ($orderId > 0)
			{
				$registry = Registry::getInstance(static::getRegistryType());

				/** @var OrderHistory $orderHistory */
				$orderHistory = $registry->getOrderHistoryClassName();
				$orderHistory::addLog(
					'DISCOUNT',
					$orderId,
					'DISCOUNT_SAVED',
					null,
					null,
					array(),
					$orderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1
				);
			}

		}
		unset($saveResult);
	}

	if ($orderId > 0)
	{
		$registry = Registry::getInstance(static::getRegistryType());

		/** @var OrderHistory $orderHistory */
		$orderHistory = $registry->getOrderHistoryClassName();
		$orderHistory::collectEntityFields('DISCOUNT', $orderId);
	}

	return $result;
}