• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/order/builder/basketbuilder.php
  • Класс: BitrixSaleHelpersOrderBuilderBasketBuilder
  • Вызов: BasketBuilder::removeDeletedItems
public function removeDeletedItems()
{
	$deleteBasketItemsIfNotExists = $this->builder->getSettingsContainer()->getItemValue('deleteBasketItemsIfNotExists');
	$itemsBasketCodes = [];

	foreach($this->formData["PRODUCT"] as $basketCode => $productData)
	{
		if (!isset($productData["PROPS"]))
		{
			$productData["PROPS"] = array();
		}

		$item = null;
		if ($basketCode != BitrixSaleHelpersAdminOrderEdit::BASKET_CODE_NEW)
		{
			$item = $this->getBasket()->getItemByBasketCode($basketCode);
		}

		if ($item == null && $deleteBasketItemsIfNotExists)
		{
			DiscountCouponsManager::useSavedCouponsForApply(false);
		}

		if($item && $item->isBundleChild())
		{
			continue;
		}

		if(!$item)
		{
			continue;
		}

		$itemsBasketCodes[] = $item->getBasketCode();
	}

	/** @var  BitrixSaleBasketItem  $item */
	$basketItems = $this->getBasket()->getBasketItems();

	foreach($basketItems as $item)
	{
		if(!in_array($item->getBasketCode(), $itemsBasketCodes))
		{
			if ($deleteBasketItemsIfNotExists)
			{
				$itemDeleteResult = $item->delete();

				if (!$itemDeleteResult->isSuccess())
				{
					$this->builder->getErrorsContainer()->addErrors($itemDeleteResult->getErrors());
					throw new BuildingException();
				}
			}
			elseif ($this->getSettingsContainer()->getItemValue('clearReservesIfEmpty') === true)
			{
				$this->clearReservesForItem($item);
			}
		}
	}

	return $this;
}