• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
  • Класс: BitrixCatalogProductCatalogProvider
  • Вызов: CatalogProvider::createProductPriceList
static function createProductPriceList(array $products, array $productPriceList, array $discountList = array()): array
	{
		$priceResultList = array();

		foreach ($productPriceList as $basketCode => $priceData)
		{
			if (!$priceData)
				continue;
			$priceResultList[$basketCode]['PRODUCT_PRICE_ID'] = $priceData['RESULT_PRICE']['ID'];
			$priceResultList[$basketCode]['NOTES'] = $priceData['PRICE']['CATALOG_GROUP_NAME'];
			$priceResultList[$basketCode]['DISCOUNT_NAME'] = null;
			$priceResultList[$basketCode]['DISCOUNT_COUPON'] = null;
			$priceResultList[$basketCode]['DISCOUNT_VALUE'] = null;
			$priceResultList[$basketCode]['DISCOUNT_LIST'] = array();

			$discount = array();
			if (!empty($discountList[$priceData['PRODUCT_ID']][$basketCode]))
			{
				$discount = $discountList[$priceData['PRODUCT_ID']][$basketCode];
			}

			$priceResultList[$basketCode]['PRICE_TYPE_ID'] = $priceData['RESULT_PRICE']['PRICE_TYPE_ID'];
			$priceResultList[$basketCode]['BASE_PRICE'] = $priceData['RESULT_PRICE']['BASE_PRICE'];
			$priceResultList[$basketCode]['PRICE'] = $priceData['RESULT_PRICE']['DISCOUNT_PRICE'];
			$priceResultList[$basketCode]['CURRENCY'] = $priceData['RESULT_PRICE']['CURRENCY'];
			$priceResultList[$basketCode]['DISCOUNT_PRICE'] = $priceData['RESULT_PRICE']['DISCOUNT'];
			if (isset($priceData['RESULT_PRICE']['PERCENT']))
			{
				$priceResultList[$basketCode]['DISCOUNT_VALUE'] = ($priceData['RESULT_PRICE']['PERCENT'] > 0
					? $priceData['RESULT_PRICE']['PERCENT'] . '%' : null);
			}
			$priceResultList[$basketCode]['VAT_RATE'] = $priceData['RESULT_PRICE']['VAT_RATE'];
			$priceResultList[$basketCode]['VAT_INCLUDED'] = $priceData['RESULT_PRICE']['VAT_INCLUDED'];

			if (!empty($discount))
			{
				$priceResultList[$basketCode]['DISCOUNT_LIST'] = $discount;
			}

			if (!empty($priceData['DISCOUNT']))
			{
				$priceResultList[$basketCode]['DISCOUNT_NAME'] = '[' .
					$priceData['DISCOUNT']['ID'] .
					'] ' .
					$priceData['DISCOUNT']['NAME'];
				if (!empty($priceData['DISCOUNT']['COUPON']))
				{
					$priceResultList[$basketCode]['DISCOUNT_COUPON'] = $priceData['DISCOUNT']['COUPON'];
				}

				if (empty($priceResultList[$basketCode]['DISCOUNT_LIST']))
				{
					$priceResultList[$basketCode]['DISCOUNT_LIST'] = array($priceData['DISCOUNT']);
				}
			}
		}

		$resultList = array();
		if (!empty($priceResultList))
		{
			foreach ($products as $productId => $productData)
			{
				if (!empty($products[$productId]))
				{
					$productData = $products[$productId];

					$quantityList = array();

					if (array_key_exists('QUANTITY', $productData))
					{
						$quantityList = array(
							$productData['BASKET_CODE'] => $productData['QUANTITY']
						);
					}
					if (!empty($productData[Base::FLAT_QUANTITY_LIST]))
					{
						$quantityList = $productData[Base::FLAT_QUANTITY_LIST];
					}

					foreach($quantityList as $basketCode => $quantity)
					{
						$resultList[$basketCode] = $priceResultList[$basketCode];
					}
				}
			}
		}

		return $resultList;
	}