• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/compatible/basketcompatibility.php
  • Класс: BitrixSaleCompatibleBasketCompatibility
  • Вызов: BasketCompatibility::delete
static function delete($id)
{
	$result = new SaleResult();

	$item = null;
	$basket = null;
	$order = null;

	$registry = SaleRegistry::getInstance(static::getRegistryType());
	/** @var SaleBasket $basketClassName */
	$basketClassName = $registry->getBasketClassName();
	$res = $basketClassName::getList(
		array(
			'filter' => array(
				'ID' => $id
			),
			'select' => array(
				'ID', 'ORDER_ID', 'SET_PARENT_ID', 'TYPE', 'FUSER_ID', 'LID'
			),
		));
	if (!$itemDat = $res->fetch())
	{
		$result->addError(new SaleResultError(MainLocalizationLoc::getMessage('SALE_BASKET_COMPATIBLE_BASKET_ITEM_NOT_FOUND'), 'BASKET_ITEM_NOT_FOUND'));
		return $result;
	}

	if (intval($itemDat['ORDER_ID']) > 0)
	{
		/** @var SaleBasket $basketClassName */
		$orderClassName = $registry->getOrderClassName();
		/** @var SaleOrder $order */
		if ($order = $orderClassName::load(intval($itemDat['ORDER_ID'])))
		{
			if ($basket = $order->getBasket())
			{
				/** @var SaleBasketItem $item */
				$item = $basket->getItemById($id);
			}
		}
	}
	else
	{
		if (!array_key_exists('FUSER_ID', $itemDat) || intval($itemDat['FUSER_ID']) <= 0)
		{
			$itemDat['FUSER_ID'] = SaleFuser::getId();
		}

		/** @var SaleBasket $basketClassName */
		$basketClassName = $registry->getBasketClassName();
		if ($basket = $basketClassName::loadItemsForFUser($itemDat["FUSER_ID"], $itemDat['LID']))
		{
			/** @var SaleBasketItem $item */
			$item = $basket->getItemById($id);
		}
	}

	if ($basket === null)
	{
		$result->addError(new SaleResultError(MainLocalizationLoc::getMessage('SALE_BASKET_COMPATIBLE_BASKET_COLLECTION_NOT_FOUND'), 'BASKET_COLLECTION_NOT_FOUND'));
		return $result;
	}


	if ($item === null)
	{
		$result->addError(new SaleResultError(MainLocalizationLoc::getMessage('SALE_BASKET_COMPATIBLE_BASKET_ITEM_PROPS_NOT_FOUND'), 'BASKET_ITEM_PROPS_NOT_FOUND'));
		return $result;

	}

	/** @var SaleResult $r */
	$r = $item->delete();
	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
	}

	if ($order !== null)
	{
		if (!$result->isSuccess())
		{
			return $result;
		}

		/** @var SaleResult $r */
		$r = $order->save();
	}
	else
	{
		if (!$result->isSuccess())
		{
			return $result;
		}

		/** @var SaleResult $r */
		$r = $basket->save();

		if ($r->isSuccess())
		{
			SaleBasketComponentHelper::clearFUserBasketQuantity($itemDat['FUSER_ID'], $itemDat['LID']);
			SaleBasketComponentHelper::clearFUserBasketPrice($itemDat['FUSER_ID'], $itemDat['LID']);
		}
	}

	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
	}

	return $result;
}