• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketitem.php
  • Класс: BitrixSaleBasketItem
  • Вызов: BasketItem::checkBeforeDelete
protected function checkBeforeDelete()
{
	$result = new Result();

	/** @var BasketItemCollection $collection */
	$collection = $this->getCollection();

	/** @var Order $order */
	$order = $collection->getBasket()->getOrder();

	if ($order)
	{
		/** @var Shipment $shipment */
		foreach ($order->getShipmentCollection() as $shipment)
		{
			if ($shipment->isSystem())
			{
				continue;
			}

			/** @var ShipmentItemCollection $shipmentItemCollection */
			if ($shipmentItemCollection = $shipment->getShipmentItemCollection())
			{
				if ($shipmentItemCollection->getItemByBasketCode($this->getBasketCode())
					&& $shipment->isShipped()
				)
				{
					$messageCode = 'SALE_BASKET_ITEM_REMOVE_IMPOSSIBLE_BECAUSE_SHIPPED';
					if ($this->isService())
					{
						$messageCode = 'SALE_BASKET_ITEM_REMOVE_IMPOSSIBLE_BECAUSE_SERVICE_SHIPPED';
					}

					$result->addError(
						new ResultError(
							Loc::getMessage(
								$messageCode,
								[
									'#PRODUCT_NAME#' => $this->getField('NAME'),
								]
							),
							'SALE_BASKET_ITEM_REMOVE_IMPOSSIBLE_BECAUSE_SHIPPED'
						)
					);

					return $result;
				}
			}
		}
	}

	return $result;
}