• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/internals/providerbuilder.php
  • Класс: BitrixSaleInternalsProviderBuilder
  • Вызов: ProviderBuilder::addProductData
public function addProductData(array $productData)
{
	if ($productData['QUANTITY'] == 0)
	{
		return;
	}

	/** @var SaleShipmentItem $shipmentItem */
	$shipmentItem = $productData['SHIPMENT_ITEM'] ?? null;
	$basketItem = $productData['BASKET_ITEM'];
	$productId = $productData['PRODUCT_ID'] ?? $basketItem->getProductId();

	$fields = [
		'ITEM_CODE' => $productId,
		'BASKET_CODE' => $basketItem->getBasketCode(),
		'PRODUCT_ID' => $productId,
		'QUANTITY' => $productData['QUANTITY'],
		'BUNDLE_PARENT' => $basketItem->isBundleParent(),
		'BUNDLE_CHILD' => $basketItem->isBundleChild(),
		'IS_BARCODE_MULTI' => $basketItem->isBarcodeMulti(),
		'RESERVED_QUANTITY' => $productData['RESERVED_QUANTITY'] ?? 0.0,
	];

	if ($shipmentItem)
	{
		$fields['SHIPMENT_ITEM'] = $shipmentItem;
		$fields['SHIPMENT_ITEM_DATA'] = [$shipmentItem->getInternalIndex() => $shipmentItem->getQuantity()];
		$fields['NEED_RESERVE'] = [$shipmentItem->getInternalIndex() => $productData["NEED_RESERVE"] ?? null];
	}

	if (SaleConfiguration::useStoreControl())
	{
		if ($shipmentItem)
		{
			$storeData = SaleInternalsCatalogProvider::createMapShipmentItemStoreData($shipmentItem);

			if (!empty($storeData))
			{
				$fields['STORE_DATA'] = [
					$shipmentItem->getInternalIndex() => $storeData
				];
			}
		}
	}

	if (isset($productData['NEED_RESERVE_BY_STORE']))
	{
		$fields['NEED_RESERVE_BY_STORE'] = $productData['NEED_RESERVE_BY_STORE'];
	}

	if (isset($productData['QUANTITY_BY_STORE']))
	{
		$fields['QUANTITY_BY_STORE'] = $productData['QUANTITY_BY_STORE'];
	}

	if (isset($productData['RESERVED_QUANTITY_BY_STORE']))
	{
		$fields['RESERVED_QUANTITY_BY_STORE'] = $productData['RESERVED_QUANTITY_BY_STORE'];
	}

	$this->addItem($productId, $fields);
}