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