Есть проблема с расчетом скидок в заказе.
1. Задаю скидки в разделе [B]«Правила работы с корзиной»[/B]
2. Оформляю заказ на сайте
3. Перехожу в корзину - информация о ссылках выводится, сумма рассчитывается с учетом скидок правильно.
4. При переходе на страницу оформления заказа информация о скидках не выводится и в расчете суммы заказа скидки не учитываются,
если в корзине больше одного наименования товара.
За вывод данных в корзине отвечает компонент [COLOR=#0000ff]sale.basket.basket[/COLOR]. Он отрабатывает полностью корректно - данные о скидках заносятся в результирующий массив: [COLOR=#0000ff]$arResult["ITEMS"]["AnDelCanBuy"][/COLOR].
Проблема связана с компонентом [COLOR=#0000ff]sale.order.ajax[/COLOR].
Добавляю вывод значения переменной [COLOR=#0000ff]arBasketItems[DISCOUNT_PRICE] [/COLOR]в данном блоке в коде компонента
[COLOR=#0000ff]echo "arBasketItems[DISCOUNT_PRICE]: ".$arBasketItems["DISCOUNT_PRICE"]."<br>";[/COLOR] :
[CODE]$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>";
...[/CODE]
Значение переменной [COLOR=#0000ff]arBasketItems[DISCOUNT_PRICE][/COLOR] равно 0,
при этом в компоненте [COLOR=#0000ff]sale.basket.basket[/COLOR] эта переменная заполнялась правильно.
Далее в коде компонента имеется следующее:
[CODE] $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())
{
...[/CODE]
Добавлением следующего кода после while
[CODE] <pre>
<?print_r($arDiscount);?>
</pre>
[/CODE]
выявил, что этот цикл while вообще не выполняется.
При этом я просматривал таблицу [COLOR=#0000ff]b_sale_discount[/COLOR] через MySQL и данные в ней соответствуют тому,
что я задал в разделе [B]«Правила работы с корзиной»[/B].
[B]Почему не работает корректно функция $dbDiscount = CSaleDiscount::GetList в этом компоненте?[/B]
[B]
Как решить проблему с корректным расчетом скидок?[/B]
1. Задаю скидки в разделе [B]«Правила работы с корзиной»[/B]
2. Оформляю заказ на сайте
3. Перехожу в корзину - информация о ссылках выводится, сумма рассчитывается с учетом скидок правильно.
4. При переходе на страницу оформления заказа информация о скидках не выводится и в расчете суммы заказа скидки не учитываются,
если в корзине больше одного наименования товара.
За вывод данных в корзине отвечает компонент [COLOR=#0000ff]sale.basket.basket[/COLOR]. Он отрабатывает полностью корректно - данные о скидках заносятся в результирующий массив: [COLOR=#0000ff]$arResult["ITEMS"]["AnDelCanBuy"][/COLOR].
Проблема связана с компонентом [COLOR=#0000ff]sale.order.ajax[/COLOR].
Добавляю вывод значения переменной [COLOR=#0000ff]arBasketItems[DISCOUNT_PRICE] [/COLOR]в данном блоке в коде компонента
[COLOR=#0000ff]echo "arBasketItems[DISCOUNT_PRICE]: ".$arBasketItems["DISCOUNT_PRICE"]."<br>";[/COLOR] :
[CODE]$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>";
...[/CODE]
Значение переменной [COLOR=#0000ff]arBasketItems[DISCOUNT_PRICE][/COLOR] равно 0,
при этом в компоненте [COLOR=#0000ff]sale.basket.basket[/COLOR] эта переменная заполнялась правильно.
Далее в коде компонента имеется следующее:
[CODE] $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())
{
...[/CODE]
Добавлением следующего кода после while
[CODE] <pre>
<?print_r($arDiscount);?>
</pre>
[/CODE]
выявил, что этот цикл while вообще не выполняется.
При этом я просматривал таблицу [COLOR=#0000ff]b_sale_discount[/COLOR] через MySQL и данные в ней соответствуют тому,
что я задал в разделе [B]«Правила работы с корзиной»[/B].
[B]Почему не работает корректно функция $dbDiscount = CSaleDiscount::GetList в этом компоненте?[/B]
[B]
Как решить проблему с корректным расчетом скидок?[/B]