- Модуль: 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;
}