• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketitembase.php
  • Класс: BitrixSaleBasketItemBase
  • Вызов: BasketItemBase::save
public function save()
{
	$this->checkCallingContext();

	$result = new Result();

	$id = $this->getId();
	$isNew = $id === 0;

	$this->onBeforeSave();

	$r = $this->callEventSaleBasketItemBeforeSaved($isNew);
	if (!$r->isSuccess())
	{
		return $r;
	}

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

	if ($id > 0)
	{
		$r = $this->update();
	}
	else
	{
		$r = $this->add();
		if ($r->getId() > 0)
		{
			$id = $r->getId();
		}
	}

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

	if ($id > 0)
	{
		$result->setId($id);

		$controller = InternalsCustomFieldsController::getInstance();
		$controller->save($this);
	}

	$r = $this->callEventSaleBasketItemSaved($isNew);
	if (!$r->isSuccess())
	{
		return $r;
	}

	$propertyCollection = $this->getPropertyCollection();
	$r = $propertyCollection->save();
	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
	}

	$this->callEventOnBasketItemEntitySaved();

	return $result;
}