• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/action/entity/deletebasketitemaction.php
  • Класс: BitrixSaleControllerActionEntityDeleteBasketItemAction
  • Вызов: DeleteBasketItemAction::deleteBasketItem
public function deleteBasketItem(int $id): SaleResult
{
	$result = new SaleResult();

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

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

	$basketIterator = $basketClass::getList([
		'select' => ['ORDER_ID', 'FUSER_ID', 'LID'],
		'filter' => [
			'=ID' => $id,
		]
	]);
	if ($basketItemData = $basketIterator->fetch())
	{
		if (empty($basketItemData['ORDER_ID']))
		{
			$basket = $basketClass::loadItemsForFUser($basketItemData['FUSER_ID'], $basketItemData['LID']);
			if ($basket && !$basket->isEmpty())
			{
				$basket->getItemByBasketCode($id)->delete();

				$saveResult = $basket->save();
				if ($saveResult->isSuccess())
				{
					$result->setData(['basket' => $basket]);
				}
				else
				{
					/** @var MainError $error */
					foreach ($saveResult->getErrors() as $error)
					{
						// save basket error
						$result->addError(
							new MainError(
								$error->getMessage(),
								SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_SAVE_BASKET
							)
						);
					}
				}
			}
			else
			{
				$result->addError(
					new MainError(
						'basket load error',
						SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_BASKET_LOAD
					)
				);
			}
		}
		else
		{
			$result->addError(
				new MainError(
					'there is order with this basket item',
					SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_ORDER_EXIST
				)
			);
		}
	}
	else
	{
		$result->addError(
			new MainError(
				'basket item with id '.$id.' is not exists',
				SaleControllerErrorEnumeration::DELETE_BASKET_ITEM_ACTION_BASKET_ITEM_NOT_EXIST
			)
		);
	}

	return $result;
}