• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/discountbase.php
  • Класс: BitrixSaleDiscountBase
  • Вызов: DiscountBase::saveBasketStoredData
protected function saveBasketStoredData(array $basketCodeList)
{
	$result = new Result();
	if (empty($basketCodeList))
		return $result;
	$useMode = $this->getUseMode();
	if ($useMode != self::USE_MODE_FULL && $useMode != self::USE_MODE_MIXED)
		return $result;

	$itemsData = [];
	foreach ($basketCodeList as $basketCode)
	{
		if (!isset($this->basketItemsData[$basketCode]))
			continue;
		$data = $this->prepareBasketItemStoredData($basketCode);
		if ($data === null)
			continue;
		$basketId = $this->forwardBasketTable[$basketCode];
		$itemsData[$basketId] = [
			'ENTITY_ID' => $basketId,
			'ENTITY_VALUE' => $basketId,
			'ENTITY_DATA' => $data
		];
	}
	unset($data, $basketCode);
	if (!empty($itemsData))
	{
		$orderId = $this->getOrder()->getId();
		/** @var OrderDiscount $storageClassName */
		$storageClassName = $this->getOrderDiscountClassName();
		$dataResult = $storageClassName::saveStoredDataBlock(
			$orderId,
			$storageClassName::STORAGE_TYPE_BASKET_ITEM,
			$itemsData,
			['ALLOW_UPDATE' => 'Y', 'DELETE_MISSING' => 'Y']
		);
		if (!$dataResult->isSuccess())
		{
			$result->addError(new MainEntityEntityError(
				Loc::getMessage('BX_SALE_DISCOUNT_ERR_SAVE_APPLY_RULES'),
				self::ERROR_ID
			));
		}
		unset($dataResult, $storageClassName);
	}
	unset($itemsData);

	return $result;
}