• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/shipmentitemcollection.php
  • Класс: BitrixSaleShipmentItemCollection
  • Вызов: ShipmentItemCollection::load
static function load(Shipment $shipment)
{
	/** @var ShipmentItemCollection $shipmentItemCollection */
	$shipmentItemCollection = static::createShipmentItemCollectionObject();
	$shipmentItemCollection->shipment = $shipment;

	if ($shipment->getId() > 0)
	{

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

		/** @var Order $order */
		if (!$order = $shipmentCollection->getOrder())
		{
			throw new MainObjectNotFoundException('Entity "Order" not found');
		}

		/** @var ShipmentItem $itemClassName */
		$itemClassName = static::getItemCollectionClassName();
		$shipmentItemList = $itemClassName::loadForShipment($shipment->getId());

		/** @var ShipmentItem $shipmentItem */
		foreach ($shipmentItemList as $shipmentItem)
		{
			$shipmentItem->setCollection($shipmentItemCollection);
			$shipmentItemCollection->addItem($shipmentItem);
			
			if (!$basketItem = $shipmentItem->getBasketItem())
			{
				$msg = Loc::getMessage("SALE_SHIPMENT_ITEM_COLLECTION_BASKET_ITEM_NOT_FOUND", array(
					'#BASKET_ITEM_ID#' => $shipmentItem->getBasketId(),
					'#SHIPMENT_ID#' => $shipment->getId(),
					'#SHIPMENT_ITEM_ID#' => $shipmentItem->getId(),
				));

				$r = new Result();
				$r->addError( new ResultError($msg, 'SALE_SHIPMENT_ITEM_COLLECTION_BASKET_ITEM_NOT_FOUND'));


				$registry = Registry::getInstance(static::getRegistryType());
				/** @var EntityMarker $entityMarker */
				$entityMarker = $registry->getEntityMarkerClassName();
				$entityMarker::addMarker($order, $shipment, $r);
				if (!$shipment->isSystem())
				{
					$shipment->setField('MARKED', 'Y');
				}
			}
		}
	}

	return $shipmentItemCollection;
}