• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketitembase.php
  • Класс: BitrixSaleBasketItemBase
  • Вызов: BasketItemBase::delete
public function delete()
{
	$result = new Result();

	$checkResult = $this->checkBeforeDelete();
	if (!$checkResult->isSuccess())
	{
		$result->addErrors($checkResult->getErrors());
		return $result;
	}

	/** @var array $oldEntityValues */
	$oldEntityValues = $this->fields->getOriginalValues();

	/** @var MainEvent $event */
	$event = new MainEvent('sale', "OnBeforeSaleBasketItemEntityDeleted", [
			'ENTITY' => $this,
			'VALUES' => $oldEntityValues,
	]);
	$event->send();

	if ($event->getResults())
	{
		/** @var MainEventResult $eventResult */
		foreach($event->getResults() as $eventResult)
		{
			if($eventResult->getType() == MainEventResult::ERROR)
			{
				$eventResultData = $eventResult->getParameters();
				if ($eventResultData instanceof ResultError)
				{
					$error = $eventResultData;
				}
				else
				{
					$error = new ResultError(
						LocalizationLoc::getMessage('SALE_EVENT_ON_BEFORE_SALEBASKETITEM_ENTITY_DELETED_ERROR'),
						'SALE_EVENT_ON_BEFORE_SALEBASKETITEM_ENTITY_DELETED_ERROR'
					);
				}

				$result->addError($error);
			}
		}

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

	$this->setFieldNoDemand("QUANTITY", 0);

	/** @var Result $r */
	$r = parent::delete();
	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
		return $result;
	}

	/** @var array $oldEntityValues */
	$oldEntityValues = $this->fields->getOriginalValues();

	/** @var MainEvent $event */
	$event = new MainEvent('sale', "OnSaleBasketItemEntityDeleted", [
			'ENTITY' => $this,
			'VALUES' => $oldEntityValues,
	]);
	$event->send();

	if ($event->getResults())
	{
		/** @var MainEventResult $eventResult */
		foreach($event->getResults() as $eventResult)
		{
			if($eventResult->getType() == MainEventResult::ERROR)
			{
				$eventResultData = $eventResult->getParameters();
				if ($eventResultData instanceof ResultError)
				{
					$error = $eventResultData;
				}
				else
				{
					$error = new ResultError(
						LocalizationLoc::getMessage('SALE_EVENT_ON_SALEBASKETITEM_ENTITY_DELETED_ERROR'),
						'SALE_EVENT_ON_SALEBASKETITEM_ENTITY_DELETED_ERROR'
					);
				}

				$result->addError($error);
			}
		}
	}

	return $result;
}