• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketitem.php
  • Класс: BitrixSaleBasketItem
  • Вызов: BasketItem::setItemsAfterGetBundle
private function setItemsAfterGetBundle(array $items)
{
	/** @var BundleCollection $bundleCollection */
	$bundleCollection = $this->createBundleCollection();
	foreach ($items as $providerClassName => $products)
	{
		foreach ($products as $productId => $bundleBasketListDat)
		{
			foreach ($bundleBasketListDat["ITEMS"] as $bundleDat)
			{
				$bundleFields = $this->clearBundleItemFields($bundleDat);
				unset($bundleFields['ID']);

				$bundleFields['CURRENCY'] = $this->getCurrency();

				if ($this->getId() > 0)
				{
					$bundleFields['SET_PARENT_ID'] = $this->getId();
				}

				/** @var BasketItem $basketItem */
				$bundleBasketItem = static::create($bundleCollection, $bundleFields['MODULE'], $bundleFields['PRODUCT_ID']);

				if (!empty($bundleDat["PROPS"]) && is_array($bundleDat["PROPS"]))
				{
					/** @var BasketPropertiesCollection $property */
					$property = $bundleBasketItem->getPropertyCollection();
					$property->setProperty($bundleDat["PROPS"]);
				}

				$bundleQuantity = $bundleFields['QUANTITY'] * $this->getQuantity();
				unset($bundleFields['QUANTITY']);

				$bundleBasketItem->setFieldsNoDemand($bundleFields);
				$bundleBasketItem->setField('QUANTITY', $bundleQuantity);
				$bundleCollection->addItem($bundleBasketItem);
			}
		}
	}

	return $bundleCollection;
}