• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
  • Класс: BitrixCatalogProductCatalogProvider
  • Вызов: CatalogProvider::createProductResult
static function createProductResult(array $products, array $items, array $priceList, array $productQuantityList): array
	{
		$resultList = array();
		foreach ($products as $productId => $productData)
		{
			$itemCode = $productData['ITEM_CODE'];
			$basketCode = $productData['BASKET_CODE'];
			$resultList[$productId] = $items[$productId];

			if (isset($productData['PRODUCT_DATA']['ACTIVE']))
			{
				$resultList[$productId]['ACTIVE'] = $productData['PRODUCT_DATA']['ACTIVE'];
			}

			$resultList[$productId]['ITEM_CODE'] = $itemCode;

			QuantityControl::resetAllQuantity($productId);
			QuantityControl::setReservedQuantity($productId, $productQuantityList[$basketCode]['QUANTITY_RESERVED']);

			if (!isset($priceList[$basketCode]))
			{
				$priceList[$basketCode] = array();
			}

			if (!empty($productData[Base::FLAT_QUANTITY_LIST]))
			{
				foreach($productData[Base::FLAT_QUANTITY_LIST] as $basketCode => $quantity)
				{
					QuantityControl::addQuantity($productId, $productQuantityList[$basketCode]['QUANTITY']);
					QuantityControl::addAvailableQuantity($productId, $productQuantityList[$basketCode]['AVAILABLE_QUANTITY']);

					if (empty($priceList[$basketCode]))
					{
						continue;
					}

					$resultList[$productId]['PRICE_LIST'][$basketCode] = array_merge(
						array(
							'QUANTITY' => $productQuantityList[$basketCode]['QUANTITY'],
							'AVAILABLE_QUANTITY' => $productQuantityList[$basketCode]['AVAILABLE_QUANTITY'],
							"ITEM_CODE" => $itemCode,
							"BASKET_CODE" => $basketCode,
						),
						$priceList[$basketCode]
					);
				}
			}
			else
			{
				$resultList[$productId]['QUANTITY'] = $productQuantityList[$basketCode]['QUANTITY'];

				QuantityControl::addQuantity($productId, $productQuantityList[$basketCode]['QUANTITY']);
				QuantityControl::addAvailableQuantity($productId, $productQuantityList[$basketCode]['AVAILABLE_QUANTITY']);
				if (!empty($resultList[$productId]))
				{
					if (empty($priceList[$basketCode]))
					{
						continue;
					}

					$resultList[$productId] = $priceList[$basketCode] + $resultList[$productId];
				}
			}
		}

		return $resultList;
	}