• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
  • Класс: BitrixCatalogProductCatalogProvider
  • Вызов: CatalogProvider::createStoreProductMap
protected function createStoreProductMap(array $products)
	{
		$productStoreDataList = array();
		$r = $this->getProductListStores($products);
		if ($r->isSuccess())
		{
			$data = $r->getData();
			if (!empty($data['PRODUCT_STORES_LIST']))
			{
				$productStoreDataList = $data['PRODUCT_STORES_LIST'];
			}
		}

		$canAutoShipList = array();
		$r = $this->canProductListAutoShip($products);
		if ($r->isSuccess())
		{
			$data = $r->getData();
			if (!empty($data['PRODUCT_CAN_AUTOSHIP_LIST']))
			{
				$canAutoShipList = $data['PRODUCT_CAN_AUTOSHIP_LIST'];
			}
		}

		$storeProductList = array();
		foreach ($products as $productId => $productData)
		{
			if (!empty($productData['STORE_DATA_LIST']) && static::isExistsBarcode($productData['STORE_DATA_LIST']))
			{
				$storeProductList[$productId] = $productData['STORE_DATA_LIST'];
			}
			elseif (!empty($canAutoShipList[$productId]) && !empty($productStoreDataList[$productId]))
			{
				$productQuantity = self::getTotalAmountFromQuantityList($productData);
				foreach ($productData['SHIPMENT_ITEM_DATA_LIST'] as $shipmentItemIndex => $shipmentItemQuantity)
				{
					foreach ($productStoreDataList[$productId] as $productStoreData)
					{
						$storeId = $productStoreData['STORE_ID'];
						$storeProductList[$productId][$shipmentItemIndex][$storeId] = array(
							'PRODUCT_ID' => $productId,
							'STORE_ID' => $storeId,
							'IS_BARCODE_MULTI' => false,
							'QUANTITY' => abs($productQuantity)
						);
					}
				}
			}
		}

		return $storeProductList;
	}