• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/tradingplatform/ymarket/order.php
  • Класс: BitrixSaleTradingPlatformYMarketOrder
  • Вызов: Order::createShipment
static function createShipment(BitrixSaleOrder &$order, $deliveryId = 0, $deliveryPrice = false)
{
	$shipments = $order->getShipmentCollection();

	/** @var BitrixSaleShipment $shipment */
	if($shipments->count() > 0)
		foreach ($shipments as $shipment)
			if(!$shipment->isSystem())
				$shipment->delete();

	$shipment = $shipments->createItem();

	if(intval($deliveryId) > 0)
	{
		/** @var BitrixSaleDeliveryServicesBase $dlvSrv */
		if($dlvSrv = BitrixSaleDeliveryServicesManager::getObjectById($deliveryId))
			$dlvName = $dlvSrv->getNameWithParent();
		else
			$dlvName = 'Not found ('.$deliveryId.')';

		$shipment->setField('DELIVERY_ID', $deliveryId);
		$shipment->setField('DELIVERY_NAME', $dlvName);
	}

	if($deliveryPrice !== false)
	{
		$shipment->setBasePriceDelivery(floatval($deliveryPrice), true);
	}

	$basket = $order->getBasket();

	if($basket)
	{
		$shipmentItemCollection = $shipment->getShipmentItemCollection();
		$basketItems = $basket->getBasketItems();

		/** @var BasketItem $basketItem */
		foreach ($basketItems as $basketItem)
		{
			/** @var BitrixSaleShipmentItem  $shipmentItem */
			$shipmentItem = $shipmentItemCollection->createItem($basketItem);
			$shipmentItem->setQuantity($basketItem->getField('QUANTITY'));
		}
	}

	return $shipment;
}