- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
- Класс: BitrixCatalogProductCatalogProvider
- Вызов: CatalogProvider::setCatalogDataToProducts
static function setCatalogDataToProducts(array $products, array $catalogDataList, array $options = array()): array
{
$catalogDataEnabled = self::isCatalogDataEnabled($options);
$specialFields = [];
foreach (CatalogProductSystemField::getProviderSelectFields() as $index => $value)
{
$specialFields[] = is_string($index) ? $index : $value;
}
$result = [];
foreach ($products as $productId => $productData)
{
if (!isset($catalogDataList[$productId]))
{
continue;
}
$row = $catalogDataList[$productId];
$result[$productId] = [
'CAN_BUY' => (
$productData['PRODUCT_DATA']['ACTIVE'] === 'Y'
&& $row['AVAILABLE'] === 'Y'
? 'Y'
: 'N'
),
'CAN_BUY_ZERO' => $row['CAN_BUY_ZERO'],
'QUANTITY_TRACE' => $row['QUANTITY_TRACE'],
'CHECK_QUANTITY' => $row['CHECK_QUANTITY'],
'QUANTITY_RESERVED' => (float)$row['QUANTITY_RESERVED'],
'CATALOG_XML_ID' => $productData['PRODUCT_DATA']['CATALOG_XML_ID'],
'PRODUCT_XML_ID' => $productData['PRODUCT_DATA']['~XML_ID'],
'PRODUCT' => $row,
];
if (!$catalogDataEnabled)
{
$basketRow = [
'NAME' => $productData['PRODUCT_DATA']['~NAME'],
'DETAIL_PAGE_URL' => $productData['PRODUCT_DATA']['~DETAIL_PAGE_URL'],
'MEASURE_ID' => $row['MEASURE'],
'MEASURE_NAME' => $row['MEASURE_NAME'],
'MEASURE_CODE' => $row['MEASURE_CODE'],
'BARCODE_MULTI' => $row['BARCODE_MULTI'],
'WEIGHT' => (float)$row['WEIGHT'],
'DIMENSIONS' => serialize(
[
'WIDTH' => $row['WIDTH'],
'HEIGHT' => $row['HEIGHT'],
'LENGTH' => $row['LENGTH'],
]
),
];
switch ($row['TYPE'])
{
case CatalogProductTable::TYPE_SET:
$basketRow['TYPE'] = SaleBasketItem::TYPE_SET;
break;
case CatalogProductTable::TYPE_SERVICE:
$basketRow['TYPE'] = SaleBasketItem::TYPE_SERVICE;
break;
default:
$basketRow['TYPE'] = null;
break;
}
foreach ($specialFields as $index)
{
$basketRow[$index] = $row[$index];
}
$result[$productId] = array_merge(
$result[$productId],
$basketRow
);
}
$result[$productId]["VAT_INCLUDED"] = "Y";
}
return $result;
}