• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/archive/recovery/version1.php
  • Класс: BitrixSaleArchiveRecoveryVersion1
  • Вызов: Version1::riseShipment
protected function riseShipment($archivedOrder, $basketItemsMap)
{
	/** @var SaleShipmentCollection $shipmentCollection */
	$shipmentCollection = $this->order->getShipmentCollection();
	$shipmentCollectionArchived = $archivedOrder['SHIPMENT'];

	if (empty($shipmentCollectionArchived))
		return;

	foreach ($shipmentCollectionArchived as $oldShipment)
	{
		$oldShipmentCollections = $oldShipment['SHIPMENT_ITEM'];
		unset($oldShipment['SHIPMENT_ITEM']);
		/** @var SaleShipment $newShipmentItem */
		$newShipmentItem = $shipmentCollection->createItem();
		$newShipmentItemCollection = $newShipmentItem->getShipmentItemCollection();
		if (is_array($oldShipmentCollections))
		{
			foreach ($oldShipmentCollections as $oldItemStore)
			{
				$basketItemId = $oldItemStore['BASKET_ID'];

				if (empty($basketItemsMap[$basketItemId]))
					continue;

				/** @var SaleShipmentItem $shipmentItem */
				$shipmentItem = $newShipmentItemCollection->createItem($basketItemsMap[$basketItemId]);
				$shipmentItem->setFieldsNoDemand($oldItemStore);
				$shipmentItemStoreCollection = $shipmentItem->getShipmentItemStoreCollection();
				if ($shipmentItemStoreCollection)
				{
					/** @var SaleShipmentItemStore $itemStore */
					$itemStore = $shipmentItemStoreCollection->createItem($basketItemsMap[$basketItemId]);
					$oldBasketBarcodeData = $archivedOrder['BASKET_ITEMS'][$basketItemId]['SHIPMENT_BARCODE_ITEMS'][$oldItemStore['ID']];
					if (count($oldBasketBarcodeData))
					{
						$itemStore->setFieldsNoDemand($oldBasketBarcodeData);
					}
				}
			}
		}

		$newShipmentItem->setFieldsNoDemand($oldShipment);
	}
}