Задать вопрос
ragnar_ok
@ragnar_ok

Битрикс: CSaleBasket::Update — почему модифицируется количество, а цена нет?

Создал файл-обработчик. Количество в корзине обновляется, а цена нет. Почему - непонятно.
<?
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
if(CModule::IncludeModule('sale')){
    $arBasketItems = array();
    $dbBasketItems = CSaleBasket::GetList(
        array(
            "NAME" => "ASC",
            "ID" => "ASC"
        ),
        array(
            "FUSER_ID" => CSaleBasket::GetBasketUserID(),
            "LID" => SITE_ID,
            "ORDER_ID" => "NULL",
            "PRODUCT_ID" => $_POST['id']
        ),
        false,
        false,
        array("ID", "PRODUCT_ID", "QUANTITY", "PRICE", "NAME")
    );
    while ($arItems = $dbBasketItems->Fetch()) {
        $arBasketItems[] = $arItems;
    }
}
$price = (int)$arBasketItems[0]['PRICE'];
$count = (int)$arBasketItems[0]['QUANTITY'];
if (CModule::IncludeModule("catalog"))
{
    if($_POST['type']=='min'){
        $arFields = array(
            "QUANTITY" => $count-1,
            "PRICE" => $price-1
        );
    }
    if($_POST['type']=='plus'){
        $arFields = array(
            "QUANTITY" => $count + 1,
            "PRICE" => $price+1
        );
    }
    $ID = CSaleBasket::Update($arBasketItems[0]['ID'], $arFields);
}
?>
  • Вопрос задан
  • 909 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
ragnar_ok
@ragnar_ok Автор вопроса
Вот и ответ:
$arFields = array(
            "CALLBACK_FUNC" => "",
            "PRODUCT_PROVIDER_CLASS" => "",
            "CUSTOM_PRICE"      => "Y",
            "IGNORE_CALLBACK_FUNC"  => "Y"
        );

Существует два параметра: "CUSTOM_PRICE", "IGNORE_CALLBACK_FUNC". Они позволяют отключать GetOptimalPrice и использовать кастомную цену.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы