Есть проблема с расчетом скидок в заказе.
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 в этом компоненте?
Как решить проблему с корректным расчетом скидок?