Есть проблема с расчетом скидок в заказе.
1. Задаю скидки в разделе «Правила работы с корзиной»
2. Оформляю заказ на сайте
3. Перехожу в корзину - информация о ссылках выводится, сумма рассчитывается с учетом скидок правильно.
4. При переходе на страницу оформления заказа информация о скидках не выводится и в расчете суммы заказа скидки не учитываются,
если в корзине больше одного наименования товара.
За вывод данных в корзине отвечает компонент sale.basket.basket. Он отрабатывает полностью корректно - данные о скидках заносятся в результирующий массив: $arResult["ITEMS"]["AnDelCanBuy"].
Проблема связана с компонентом sale.order.ajax.
Добавляю вывод значения переменной arBasketItems[DISCOUNT_PRICE] в данном блоке в коде компонента
echo "arBasketItems[DISCOUNT_PRICE]: ".$arBasketItems["DISCOUNT_PRICE"]."<br>"; :
Значение переменной arBasketItems[DISCOUNT_PRICE] равно 0,
при этом в компоненте sale.basket.basket эта переменная заполнялась правильно.
Далее в коде компонента имеется следующее:
Добавлением следующего кода после while
выявил, что этот цикл while вообще не выполняется.
При этом я просматривал таблицу b_sale_discount через MySQL и данные в ней соответствуют тому,
что я задал в разделе «Правила работы с корзиной».
Почему не работает корректно функция $dbDiscount = CSaleDiscount::GetList в этом компоненте?
Как решить проблему с корректным расчетом скидок?
1. Задаю скидки в разделе «Правила работы с корзиной»
2. Оформляю заказ на сайте
3. Перехожу в корзину - информация о ссылках выводится, сумма рассчитывается с учетом скидок правильно.
4. При переходе на страницу оформления заказа информация о скидках не выводится и в расчете суммы заказа скидки не учитываются,
если в корзине больше одного наименования товара.
За вывод данных в корзине отвечает компонент sale.basket.basket. Он отрабатывает полностью корректно - данные о скидках заносятся в результирующий массив: $arResult["ITEMS"]["AnDelCanBuy"].
Проблема связана с компонентом sale.order.ajax.
Добавляю вывод значения переменной arBasketItems[DISCOUNT_PRICE] в данном блоке в коде компонента
echo "arBasketItems[DISCOUNT_PRICE]: ".$arBasketItems["DISCOUNT_PRICE"]."<br>"; :
Код |
---|
$dbBasketItems = CSaleBasket::GetList( array("NAME" => "ASC"), array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" ), false, false, $arSelFields ); while ($arBasketItems = $dbBasketItems->GetNext()) { echo "arBasketItems[DISCOUNT_PRICE]: ".$arBasketItems["DISCOUNT_PRICE"]."<br>"; ... |
Значение переменной arBasketItems[DISCOUNT_PRICE] равно 0,
при этом в компоненте sale.basket.basket эта переменная заполнялась правильно.
Далее в коде компонента имеется следующее:
Код |
---|
$dbDiscount = CSaleDiscount::GetList( array("SORT" => "ASC"), array( "LID" => SITE_ID, "ACTIVE" => "Y", "!>ACTIVE_FROM" => Date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL"))), "!<ACTIVE_TO" => Date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL"))), "<=PRICE_FROM" => $arResult["ORDER_PRICE"], ">=PRICE_TO" => $arResult["ORDER_PRICE"], "USER_GROUPS" => $USER->GetUserGroupArray(), ), false, false, array("*") ); while ($arDiscount = $dbDiscount->Fetch()) { ... |
Добавлением следующего кода после while
Код |
---|
<pre> <?print_r($arDiscount);?> </pre> |
выявил, что этот цикл while вообще не выполняется.
При этом я просматривал таблицу b_sale_discount через MySQL и данные в ней соответствуют тому,
что я задал в разделе «Правила работы с корзиной».
Почему не работает корректно функция $dbDiscount = CSaleDiscount::GetList в этом компоненте?
Как решить проблему с корректным расчетом скидок?