public static function PreparePopupItems($currencyID = '', $count = 50, $enableRawPrices = false) { $currencyID = strval($currencyID); if (!isset($currencyID[0])) { $currencyID = CCrmCurrency::GetBaseCurrencyID(); } $count = intval($count); if ($count <= 0) { $count = 50; } $arSelect = array('ID', 'NAME', 'PRICE', 'CURRENCY_ID'); $arPricesSelect = $arVatsSelect = array(); $arSelect = CCrmProduct::DistributeProductSelect($arSelect, $arPricesSelect, $arVatsSelect); $rs = CCrmProduct::GetList(array('ID' => 'DESC'), array('ACTIVE' => 'Y', 'CATALOG_ID' => CCrmCatalog::EnsureDefaultExists()), $arSelect, $count); $arProducts = array(); $arProductId = array(); while ($product = $rs->Fetch()) { foreach ($arPricesSelect as $fieldName) { $product[$fieldName] = null; } foreach ($arVatsSelect as $fieldName) { $product[$fieldName] = null; } $arProductId[] = $product['ID']; $arProducts[$product['ID']] = $product; } CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect, $enableRawPrices); $measureInfos = \Bitrix\Crm\Measure::getProductMeasures($arProductId); $productVatInfos = CCrmProduct::PrepareCatalogProductFields($arProductId); unset($arProductId, $arPricesSelect, $arVatsSelect); $defaultMeasureInfo = \Bitrix\Crm\Measure::getDefaultMeasure(); $result = array(); foreach ($arProducts as $productID => &$product) { if ($currencyID != $product['CURRENCY_ID']) { $product['PRICE'] = CCrmCurrency::ConvertMoney($product['PRICE'], $product['CURRENCY_ID'], $currencyID); $product['CURRENCY_ID'] = $currencyID; } $customData = array('price' => $product['PRICE']); if (isset($measureInfos[$productID]) && !empty($measureInfos[$productID])) { $measureIfo = $measureInfos[$productID][0]; $customData['measure'] = array('code' => $measureIfo['CODE'], 'name' => $measureIfo['SYMBOL']); } elseif ($defaultMeasureInfo !== null) { $customData['measure'] = array('code' => $defaultMeasureInfo['CODE'], 'name' => $defaultMeasureInfo['SYMBOL']); } if (isset($productVatInfos[$productID])) { $productVatInfo = $productVatInfos[$productID]; $customData['tax'] = array('id' => $productVatInfo['TAX_ID'], 'included' => $enableRawPrices && $productVatInfo['TAX_INCLUDED']); } $result[] = array('title' => $product['NAME'], 'desc' => CCrmProduct::FormatPrice($product), 'id' => $product['ID'], 'url' => '', 'type' => 'product', 'selected' => false, 'customData' => &$customData); unset($customData); } unset($product, $arProducts); return $result; }
$arRes[$fieldName] = null; } $nameUpper = ToUpper($arRes['NAME']); $pos = strpos($nameUpper, $searchUpper); $arRes['RANK1'] = $pos === false ? 0 : $pos + 1; $arProductId[] = $arRes['ID']; $arProducts[$arRes['ID']] = $arRes; $arSort['RANK1'][] = $arRes['RANK1']; $arSort['NAME'][] = $nameUpper; $arSort['ID'][] = $arRes['ID']; } array_multisort($arSort['RANK1'], SORT_NUMERIC, SORT_ASC, $arSort['NAME'], SORT_STRING, SORT_ASC, $arSort['ID'], SORT_NUMERIC, SORT_ASC); unset($arSort['RANK1'], $arSort['NAME']); CCrmProduct::ObtainPricesVats($arProducts, $arProductId, $arPricesSelect, $arVatsSelect, $enableRawPrices); $measureInfos = \Bitrix\Crm\Measure::getProductMeasures($arProductId); $productVatInfos = CCrmProduct::PrepareCatalogProductFields($arProductId); unset($arProductId); $defaultMeasureInfo = \Bitrix\Crm\Measure::getDefaultMeasure(); $i = 0; foreach ($arSort['ID'] as $id) { $arRes = $arProducts[$id]; $srcCurrencyID = isset($arRes['CURRENCY_ID']) ? $arRes['CURRENCY_ID'] : 0; if (strlen($dstCurrencyID) > 0 && strlen($srcCurrencyID) > 0 && $dstCurrencyID != $srcCurrencyID) { $arRes['PRICE'] = CCrmCurrency::ConvertMoney($arRes['PRICE'], $srcCurrencyID, $dstCurrencyID); $arRes['CURRENCY_ID'] = $dstCurrencyID; } $productID = $arRes['ID']; $customData = array('price' => $arRes['PRICE']); if (isset($measureInfos[$productID]) && !empty($measureInfos[$productID])) { $measureIfo = $measureInfos[$productID][0]; $customData['measure'] = array('code' => $measureIfo['CODE'], 'name' => $measureIfo['SYMBOL']);