• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/order.php
  • Класс: BitrixSaleOrder
  • Вызов: Order::onBasketModify
public function onBasketModify($action, BasketItemBase $basketItem, $name = null, $oldValue = null, $value = null)
{
	$result = new Result();

	if ($action === EventActions::DELETE)
	{
		$r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
			return $result;
		}

		return $result;
	}
	elseif ($action === EventActions::ADD)
	{
		if ($basketItem->getField('ORDER_ID'))
		{
			return $result;
		}

		return $this->getShipmentCollection()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
	}
	elseif ($action !== EventActions::UPDATE)
	{
		return $result;
	}

	if ($name === "QUANTITY")
	{
		$r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
			return $result;
		}

		$r = $this->getShipmentCollection()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
			return $result;
		}
		elseif ($r->hasWarnings())
		{
			$result->addWarnings($r->getWarnings());
		}

		return $result;
	}
	elseif ($name === "PRICE")
	{
		$r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
			return $result;
		}

		if ($this->getId() === 0 && !$this->isMathActionOnly())
		{
			return $this->getShipmentCollection()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
		}
	}
	elseif ($name === 'WEIGHT')
	{
		return $this->getShipmentCollection()->onBasketModify($action, $basketItem, $name, $oldValue, $value);
	}
	else
	{
		$r = parent::onBasketModify($action, $basketItem, $name, $oldValue, $value);
		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
			return $result;
		}
	}

	return $result;
}