• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/helpers/order/builder/orderbuilder.php
  • Класс: BitrixSaleHelpersOrderBuilderOrderBuilder
  • Вызов: OrderBuilder::setBarcodeShipmentItem
protected function setBarcodeShipmentItem(ShipmentItem $shipmentItem, array $params)
{
	$result = new Result();
	$basketItem = $shipmentItem->getBasketItem();

	$useStoreControl = Configuration::useStoreControl();

	if (
		!empty($params['BARCODE'])
		&& ($useStoreControl || $params['IS_SUPPORTED_MARKING_CODE'] === 'Y' )
		&& $basketItem->isReservableItem()
	)
	{
		$barcode = $params['BARCODE'];

		/** @var BitrixSaleShipmentItemStoreCollection $shipmentItemStoreCollection */
		$shipmentItemStoreCollection = $shipmentItem->getShipmentItemStoreCollection();
		if ($shipmentItemStoreCollection)
		{
			if (!$basketItem->isBarcodeMulti() && !$basketItem->isSupportedMarkingCode())
			{
				/** @var Result $r */
				$r = $shipmentItemStoreCollection->setBarcodeQuantityFromArray($params);
				if (!$r->isSuccess())
				{
					$result->addErrors($r->getErrors());
				}
			}

			if (isset($barcode['ID']) && intval($barcode['ID']) > 0)
			{
				/** @var BitrixSaleShipmentItemStore $shipmentItemStore */
				if ($shipmentItemStore = $shipmentItemStoreCollection->getItemById($barcode['ID']))
				{
					unset($barcode['ID']);
					$setFieldResult = $shipmentItemStore->setFields($barcode);

					if (!$setFieldResult->isSuccess())
					{
						$result->addErrors($setFieldResult->getErrors());
					}
				}
			}
			else
			{
				$shipmentItemStore = $shipmentItemStoreCollection->createItem($basketItem);
				$setFieldResult = $shipmentItemStore->setFields($barcode);
				if (!$setFieldResult->isSuccess())
				{
					$result->addErrors($setFieldResult->getErrors());
				}
			}
		}
	}

	return $result;
}