- Модуль: 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;
}