Приветствую! Столкнулся с такой проблемой:
Редактирую заказ через API D7: необходимо добавить товар в корзину заказа.
Ниже приведён фрагмент кода, который добавляет товар в корзину заказа:
<?php
// Данные для примера
$orderId = 100;
$catalogId = 457;
$quantity = 1;
$price = 100;
// Загружаем заказ и получаем его корзину
$orderBx = Sale\Order::loadByAccountNumber($orderId);
$basketBx = $orderBx->getBasket();
// Добавляем товар в корзину заказа
$ProductAdd = $basketBx->createItem('catalog', $catalogId);
// Так как товар добавляется "пустым" (практически без свойств), то подгрузим свойства из БД
$iblock = CIBlockElement::GetByID($catalogId)->GetNext();
$cprice = CPrice::GetList(array(),array("PRODUCT_ID" => $catalogId))->GetNext();
$ccatalog_res = CCatalogProduct::GetByID($catalogId);
$measure = CCatalogMeasure::getList(array(),array("ID" => $ccatalog_res['MEASURE']))->GetNext();
$dimensions = serialize(array(
"WIDTH" => $ccatalog_res["WIDTH"],
"HEIGHT" => $ccatalog_res["HEIGHT"],
"LENGTH" => $ccatalog_res["LENGTH"]
));
// Заполним поля товара
$ProductAdd->setFields(array(
'NAME' => $iblock['NAME'],
'DETAIL_PAGE_URL' => $iblock['DETAIL_PAGE_URL'],
'PRODUCT_ID' => $catalogId,
'PRODUCT_PRICE_ID' => $cprice['ID'],
'QUANTITY' => $quantity,
'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
'PRICE' => $price,
'BASE_PRICE' => $price,
'CUSTOM_PRICE' => 'Y',
'WEIGHT' => $ccatalog_res['WEIGHT'],
'DIMENSIONS' => $dimensions,
'NOTES' => $cprice['CATALOG_GROUP_NAME'],
'MEASURE_CODE' => $measure['CODE'],
'MEASURE_NAME' => $measure['SYMBOL'],
'CATALOG_XML_ID' => 'aspro_mshop_catalog_s1',
'PRODUCT_XML_ID' => $catalogId,
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider',
'DELAY' => 'N',
'CAN_BUY' => 'Y',
'IGNORE_CALLBACK_FUNC' => 'Y'
));
// Сохраним товар
$ProductAdd->save();
// Сохраним корзину
$basketBx->save();
?>
После выполнения кода товар действительно попадает в корзину со всеми назначенными свойствами и сохраняется в заказе. Но при просмотре заказа через админ.панель товары иногда (скорее всего, когда в корзине уже присутствовала данная позиция — см. скриншот) помечаются зачёркнутыми и при наведении на название возникает надпись "Товар не активен".
Подскажите, в чём может быть проблема и как её можно решить?