На странице каталога используется предфильтр ($preFilter), который в зависимости от локации устанавливает отбор товаров на том или ином складе, и в зависимости от группы пользователей устанавливает отбор по оптовой или розничной цене.
Проблема в том, что при выводе количества элементов фильтр, как будто не учитывает торговые предложение.
К примеру, если взять фильтр по бренду "Apple" показывает 5 товаров - это как раз, количество простых товаров. Хотя, по факту, на странице присутствуют еще и товарные предложения бренда "Apple"
global $preFilter;
$is_wholesale_buyer = false;
$wholesaleGroupIds = [1, 9];
if (CSite::InGroup($wholesaleGroupIds)) {
$is_wholesale_buyer = true;
}
$selectedWarehouseId = ($_COOKIE['BITRIX_SM_IDEVICE_GEO'] ?? '') === 'ru-pnz' ? 2 : 1;
$preFilter['>CATALOG_STORE_AMOUNT_' . $selectedWarehouseId] = 0;
if ($is_wholesale_buyer) {
$preFilter['>CATALOG_PRICE_2'] = 0;
} else {
$preFilter['>CATALOG_PRICE_1'] = 0;
}
$APPLICATION->IncludeComponent(
"bitrix:catalog.smart.filter",
"iDevice_smart_filter",
array(
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"SECTION_ID" => $arCurSection['ID'],
"FILTER_NAME" => $arParams["FILTER_NAME"],
"PREFILTER_NAME" => "preFilter",
"PRICE_CODE" => $is_wholesale_buyer ? array('WHOLESALE') : array('BASE'),
"CACHE_TYPE" => $arParams["CACHE_TYPE"],
"CACHE_TIME" => $arParams["CACHE_TIME"],
"CACHE_GROUPS" => $arParams["CACHE_GROUPS"],
"SAVE_IN_SESSION" => "N",
"FILTER_VIEW_MODE" => $arParams["FILTER_VIEW_MODE"],
"XML_EXPORT" => "N",
"SECTION_TITLE" => "NAME",
"SECTION_DESCRIPTION" => "DESCRIPTION",
"HIDE_NOT_AVAILABLE" => "N",
"TEMPLATE_THEME" => $arParams["TEMPLATE_THEME"],
'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'],
'CURRENCY_ID' => $arParams['CURRENCY_ID'],
"SEF_MODE" => $arParams["SEF_MODE"],
"SEF_RULE" => $arResult["FOLDER"] . $arResult["URL_TEMPLATES"]["smart_filter"],
"SMART_FILTER_PATH" => $arResult["VARIABLES"]["SMART_FILTER_PATH"],
"PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"],
"INSTANT_RELOAD" => $arParams["INSTANT_RELOAD"],
),
$component,
array('HIDE_ICONS' => 'Y')
);