• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/basketproperties.php
  • Класс: BitrixSaleControllerBasketProperties
  • Вызов: BasketProperties::addAction
public function addAction(array $fields)
{
	$result = new Result();

	$basketId = $fields['BASKET_ID'];

	unset($fields['BASKET_ID']);

	$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);

	/** @var SaleBasket $basketClass */
	$basketClass = $registry->getBasketClassName();

	$r = $basketClass::getList([
		'select'=>['ORDER_ID'],
		'filter'=>['ID'=>$basketId]
	]);

	if($row = $r->fetch())
	{
		/** @var SaleOrder $orderClass */
		$orderClass = $registry->getOrderClassName();

		$order = $orderClass::load($row['ORDER_ID']);
		$basketItem = $order->getBasket()->getItemByBasketCode($basketId);
		if($basketItem instanceof BitrixSaleBasketItem)
		{
			/** @var BasketPropertiesCollection $propertyCollection */
			$propertyCollection = $basketItem->getPropertyCollection();
			/** @var BasketPropertyItem $basketProperty */
			$basketProperty = $propertyCollection->createItem();
			$result = $basketProperty->setFields($fields);

			if($result->isSuccess() && $result->hasWarnings() == false)
			{
				$r = $this->save($basketProperty);
				if(!$r->isSuccess())
				{
					$result->addErrors($r->getErrors());
				}
			}
		}
		else
		{
			$result->addError(new Error('basket item not exists', 200240400001));
		}
	}
	else
	{
		$result->addError(new Error('basket item not exists', 200240400002));
	}

	if(!$result->isSuccess())
	{
		$this->addErrors($result->getErrors());
		return null;
	}
	elseif($result->hasWarnings())
	{
		$this->addErrors($result->getWarnings());
		return null;
	}
	else
	{
		return ['BASKET_PROPERTY'=>$this->get($basketProperty)];
	}
}