• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/basket.php
  • Класс: BitrixSaleControllerBasket
  • Вызов: Basket::addAction
public function addAction(array $fields)
{
	if(isset($fields['BASKET_ITEMS']['ID']))
		unset($fields['BASKET_ITEMS']['ID']);

	$data = $fields;
	unset($data['BASKET_ITEMS']);
	$data['BASKET_ITEMS'] = [$fields['BASKET_ITEMS']];

	$builder = $this->getBuilder(
		new SettingsContainer([
			'deleteBaketItemsIfNotExists' => false
		])
	);
	$builder->buildEntityBasket($data);

	if($builder->getErrorsContainer()->getErrorCollection()->count()>0)
	{
		$this->addErrors($builder->getErrorsContainer()->getErrors());
		return null;
	}

	$order = $builder->getOrder();

	$idx=0;
	$collection = $order->getBasket();
	/** @var BasketItem $basketItem */
	foreach($collection as $basketItem)
	{
		if($basketItem->getId() <= 0)
		{
			$idx = $basketItem->getInternalIndex();
			break;
		}
	}

	$r = $order->save();
	if(!$r->isSuccess())
	{
		$this->addErrors($r->getErrors());
		return null;
	}

	//TODO: return $basketItem->toArray();
	return new Page('ITEM', $this->get($order->getBasket()->getItemByIndex($idx)), 1);
}