Bitrix API. Создание (добавление) торгового предложения товара

Хороший пример создания (добавления) торгового предложения в Bitrix через API:

use \Bitrix\Main\Loader;
 
if (!Loader::includeModule('iblock') || !Loader::includeModule('catalog'))
{
	die('Error loading module iblock or catalog');
}
 
$IBlockOffersCatalogId = 3; // ID инфоблока предложений (должен быть торговым каталогом)
$productName = "Товар"; // наименование товара
$offerName = "Торговое предложение"; // наименование торгового предложения
$offerPrice = 100.50; // Цена торгового предложения
 
 
$arCatalog = CCatalog::GetByID($IBlockOffersCatalogId);
 
$IBlockCatalogId = $arCatalog['PRODUCT_IBLOCK_ID']; // ID инфоблока товаров
$SKUPropertyId = $arCatalog['SKU_PROPERTY_ID']; // ID свойства в инфоблоке предложений типа "Привязка к товарам (SKU)"
 
$obElement = new CIBlockElement();
$arFields = array(
   'NAME' => $productName,
   'IBLOCK_ID' => $IBlockCatalogId,
   'ACTIVE' => 'Y'
);
$productId = $obElement->Add($arFields); // добавили товар, получили ID
 
if ($productId)
{
	$obElement = new CIBlockElement();
	// свойства торгвоого предложения
	$arOfferProps = array(
		$SKUPropertyId => $productId,
	);
	$arOfferFields = array(
		'NAME' => $offerName,
		'IBLOCK_ID' => $IBlockOffersCatalogId,
		'ACTIVE' => 'Y',
		'PROPERTY_VALUES' => $arOfferProps
	);
 
	$offerId = $obElement->Add($arOfferFields); // ID торгового предложения
 
	if ($offerId)
	{
		// добавляем как товар и указываем цену
		$catalogProductAddResult =	CCatalogProduct::Add(array(
				"ID" => $offersId,
				"VAT_INCLUDED" => "Y", //НДС входит в стоимость
			));
		if ($catalogProductAddResult && !CPrice::SetBasePrice($offerId, $offerPrice, "RUB"))
			throw new Exception("Ошибка установки цены торгового предложения \"{$offerId}\"");
		else
			throw new Exception("Ошибка добавления параметров торгового предложения \"{$offerId}\" в каталог товаров");
	}
	else
	{
		throw new Exception("Ошибка добавления торгового предложения: " . $obElement->LAST_ERROR);
	}
}
else
{
	throw new Exception("Ошибка добавления товара: " . $obElement->LAST_ERROR);
}

Написать ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *