• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketbase.php
  • Класс: BitrixSaleBasketBase
  • Вызов: BasketBase::deleteInternal
protected function deleteInternal(array $itemValues);

/**
 * Save basket
 *
 * @return Result
 * @throws MainArgumentException
 * @throws MainArgumentNullException
 * @throws MainNotImplementedException
 * @throws MainObjectNotFoundException
 */
public function save()
{
	$this->checkCallingContext();

	$result = new Result();

	$this->isSaveExecuting = true;

	/** @var OrderBase $order */
	$order = $this->getOrder();
	if (!$order)
	{
		$r = $this->verify();
		if (!$r->isSuccess())
		{
			return $result->addErrors($r->getErrors());
		}

		$r = $this->callEventOnSaleBasketBeforeSaved();
		if (!$r->isSuccess())
		{
			$this->isSaveExecuting = false;

			return $result->addErrors($r->getErrors());
		}
	}

	$originalItemsValues = $this->getOriginalItemsValues();

	/** @var BasketItemBase $basketItem */
	foreach ($this->collection as $basketItem)
	{
		$r = $basketItem->save();
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
		}

		if (isset($originalItemsValues[$basketItem->getId()]))
		{
			unset($originalItemsValues[$basketItem->getId()]);
		}
	}

	if ($originalItemsValues)
	{
		foreach ($originalItemsValues as $itemValues)
		{
			$this->callEventOnBeforeSaleBasketItemDeleted($itemValues);

			$this->deleteInternal($itemValues);

			$this->callEventOnSaleBasketItemDeleted($itemValues);
		}
	}

	if (!$order)
	{
		$r = $this->callEventOnSaleBasketSaved();
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
		}
	}

	$this->clearChanged();

	$this->isSaveExecuting = false;

	return $result;
}