Menro
web, seo, email, hack
- Регистрация
- 27 Янв 2008
- Сообщения
- 689
- Реакции
- 138
- Автор темы
- #1
Всем привет!
Заранее спасибо за любую помощь.
Есть вот такой код:
Если коротко, то есть переменная $LocalPrice, которая хранит в себе сумму заказа. Если сумма заказа больше чем например 10000, то присваивается тип цены с ID=2, если больше 20000 тип цены с ID=3 и т.д. Тип цены - это другая цена, например оптовая цена, крупно оптовая.
После того как $LocalPrice стал больше 10000 ему присваивается другой тип цены (оптовая цена ID=2) и $LocalPrice становится опять меньше 10000 и коль он меньше 10000 ему присваивается розничная цена и т.д. Короче замкнутый круг...
Подскажите пожалуйста, как мне проверять $LocalPrice исходя из розничной цены?
Заранее спасибо за любую помощь.
Есть вот такой код:
PHP:
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'];
$test += $arItem['PRICE']*$arItem['QUANTITY'];
echo '<pre>';
print_r($test);
echo '</pre>';
}
}
}
//Получаем настройки из инфоблока settings
CModule::IncludeModule("iblock");
$arOrder = array();
$arFilter = array("IBLOCK_ID" =>18);
$arSelectFields = array();
$res = CIBlockElement::GetByID(28925);
$test = $arProps['MIN_SUM']['VALUE'];
while($ob = $res->GetNextElement())
{
$arProps = $ob->GetProperties();
}
$MIN_SUM = $arProps['MIN_SUM']['VALUE'];
//ОПТ 1 при сумме заказа до 10 000 рублей
//ОПТ 2 при сумме заказа до 20 000 рублей
//ОПТ 3 при сумме заказа более 20 000 рублей
// получаем все типы цен, возможные для данного товара
$arOptPrices = CCatalogProduct::GetByIDEx($productID);
if($LocalPrice < $MIN_SUM){ //Если цена меньше 10 тысяч, то показываем тип цены с ID 3
$price = $arOptPrices['PRICES'][3]['PRICE'];
$catalog_group_id = 3;
}
elseif($LocalPrice >= $MIN_SUM){ //Если цена 10 или больше 10 тысяч то показываем цену с ID 4
$price = $arOptPrices['PRICES'][4]['PRICE'];
$catalog_group_id = 4;
}
return array(
'PRICE' => array(
"ID" => $productID,
'CATALOG_GROUP_ID' => $catalog_group_id,
'PRICE' => $price,
'CURRENCY' => "RUB",
'ELEMENT_IBLOCK_ID' => $productID,
'VAT_INCLUDED' => "Y",
),
'DISCOUNT' => array(
'VALUE' => $discount,
'CURRENCY' => "RUB",
),
);
}
Если коротко, то есть переменная $LocalPrice, которая хранит в себе сумму заказа. Если сумма заказа больше чем например 10000, то присваивается тип цены с ID=2, если больше 20000 тип цены с ID=3 и т.д. Тип цены - это другая цена, например оптовая цена, крупно оптовая.
После того как $LocalPrice стал больше 10000 ему присваивается другой тип цены (оптовая цена ID=2) и $LocalPrice становится опять меньше 10000 и коль он меньше 10000 ему присваивается розничная цена и т.д. Короче замкнутый круг...
PHP:
if($LocalPrice < 10000){
$price = $arOptPrices['PRICES'][3]['PRICE'];
$catalog_group_id = 3;
}
elseif($LocalPrice >= 10000 and $LocalPrice < 20000){
$price = $arOptPrices['PRICES'][4]['PRICE'];
$catalog_group_id = 4;
}
Подскажите пожалуйста, как мне проверять $LocalPrice исходя из розничной цены?
PHP:
$price = $arOptPrices['PRICES'][3]['PRICE'];
$catalog_group_id = 3;
Последнее редактирование: