Здравствуйте! Сталкивались с такой же проблемой. решение нашли. В init.php нужно добавить вот такой код в зависимости от айди своих типов цен:
Код |
---|
if (!CModule::IncludeModule("sale")) return;
AddEventHandler("catalog", "OnGetOptimalPrice", "MyGetOptimalPrice");
global $LocalPrice;
$LocalPrice = 0;
function MyGetOptimalPrice($productID, $quantity = 1, $arUserGroups = array(), $renewal = "N", $arPrices = array(), $siteID = false, $arDiscountCoupons = false)
{
global $LocalPrice;
if($LocalPrice <= 0)
{
// Выведем актуальную корзину для текущего пользователя
$dbBasketItems = CSaleBasket::GetList(false,
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"ORDER_ID" => "NULL"
),
false,
false,
array("ID", "MODULE", "PRODUCT_ID", "CALLBACK_FUNC", "QUANTITY", "DELAY", "CAN_BUY", "PRICE")
);
while ($arItem = $dbBasketItems->Fetch())
{
if($arItem['DELAY'] == 'N' && $arItem['CAN_BUY'] == 'Y')
{
$LocalPrice += $arItem['PRICE']*$arItem['QUANTITY'];
}
}
}
// получаем все типы цен, возможные для данного товара
$arOptPrices = CCatalogProduct::GetByIDEx($productID);
//print_r($arOptPrices['PROPERTIES']['MANUFACTURER']['VALUE']);
if (isset($arOptPrices['PRICES'][33]['PRICE'])) {
$price = $arOptPrices['PRICES'][33]['PRICE'];
}
elseif (isset($arOptPrices['PRICES'][30]['PRICE'])) {
$price = $arOptPrices['PRICES'][30]['PRICE'];
}
elseif(($arOptPrices['PROPERTIES']['MANUFACTURER']['VALUE'] == '86326') || ($arOptPrices['PROPERTIES']['MANUFACTURER']['VALUE'] == '86329') || ($arOptPrices['PROPERTIES']['MANUFACTURER']['VALUE'] == '86327') || ($arOptPrices['PROPERTIES']['MANUFACTURER']['VALUE'] == '86328') || ($arOptPrices['PROPERTIES']['MANUFACTURER']['VALUE'] == '86440')) {
$price = $arOptPrices['PRICES'][29]['PRICE'];
}
else {
$price = $arOptPrices['PRICES'][29]['PRICE'] - ($arOptPrices['PRICES'][29]['PRICE']*5/100);
$arrManufacturer['NAME'];
}
return array(
'PRICE' => array(
"ID" => $productID,
'PRICE' => $price,
'CURRENCY' => "RUB",
'ELEMENT_IBLOCK_ID' => $productID,
'VAT_INCLUDED' => "Y",
),
'DISCOUNT' => array(
'VALUE' => $discount,
'CURRENCY' => "RUB",
),
);
}
|