• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/shipmentitemcollection.php
  • Класс: BitrixSaleShipmentItemCollection
  • Вызов: ShipmentItemCollection::deleteByBasketItem
public function deleteByBasketItem(BasketItem $basketItem)
{
	$result = new Result();
	$systemShipmentItem = null;

	/** @var Shipment $shipment */
	if (!$shipment = $this->getShipment())
	{
		throw new MainObjectNotFoundException('Entity "Shipment" not found');
	}

	/** @var ShipmentItem $shipmentItem */
	foreach ($this->collection as $shipmentItem)
	{
		if ($shipmentItem->getBasketCode() == $basketItem->getBasketCode())
		{
			if ($shipment->isSystem())
			{
				$systemShipmentItem = $shipmentItem;
				continue;
			}

			$r = $shipmentItem->delete();
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}
		}
	}

	if ($systemShipmentItem !== null)
	{
		if ($systemShipmentItem->getReservedQuantity() > 0)
		{
			/** @var Result $r */
			$r = $systemShipmentItem->tryUnreserve();
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}
		}

		if ($result->isSuccess())
		{
			$systemShipmentItem->setFieldNoDemand('QUANTITY', 0);
			$r = $systemShipmentItem->delete();
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}
		}
	}

	return $result;
}