По ссылке - в документации нашёл пример как применить скидку к товарам в корзине если они ещё не привязаны к заказу
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
use Bitrix\Main\Context,
Bitrix\Currency\CurrencyManager,
Bitrix\Sale\Order,
Bitrix\Sale\Basket,
Bitrix\Sale\Delivery,
Bitrix\Sale\PaySystem,
YandexCheckout\Client;
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(CSaleBasket::GetBasketUserID()), \Bitrix\Main\Context::getCurrent()->getSite());
// Поскольку корзина не привязана к заказу делаем так
$context = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId());
$discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $context);
$r = $discounts->calculate();// Проверял, в $r есть нужные мне скидки
if (!$r->isSuccess())
{
var_dump($r->getErrorMessages());
}
$result = $discounts->getApplyResult();// var_dump($result); показывает что ключа ['BASKET_ITEMS'] в нём нет
if (isset($result['BASKET_ITEMS'])) {// из комментария выше следует что следующий код выполнен не будет
$r = $basket->applyDiscount($result['BASKET_ITEMS']);
if (!$r->isSuccess())
{
var_dump($r->getErrorMessages());
}
}
Вопрос в том, почему $result['BASKET_ITEMS'] не существует и как применить скидки чтобы цена с скидкой была доступна по $basketItem->getPrice() а так же величина скидки по $basketItem->getField("DISCOUNT_PRICE")
$basketItem получаю так foreach ($basket->getBasketItems() as $basketItem) {...}
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
use Bitrix\Main\Context,
Bitrix\Currency\CurrencyManager,
Bitrix\Sale\Order,
Bitrix\Sale\Basket,
Bitrix\Sale\Delivery,
Bitrix\Sale\PaySystem,
YandexCheckout\Client;
$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(CSaleBasket::GetBasketUserID()), \Bitrix\Main\Context::getCurrent()->getSite());
// Поскольку корзина не привязана к заказу делаем так
$context = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId());
$discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $context);
$r = $discounts->calculate();// Проверял, в $r есть нужные мне скидки
if (!$r->isSuccess())
{
var_dump($r->getErrorMessages());
}
$result = $discounts->getApplyResult();// var_dump($result); показывает что ключа ['BASKET_ITEMS'] в нём нет
if (isset($result['BASKET_ITEMS'])) {// из комментария выше следует что следующий код выполнен не будет
$r = $basket->applyDiscount($result['BASKET_ITEMS']);
if (!$r->isSuccess())
{
var_dump($r->getErrorMessages());
}
}
Вопрос в том, почему $result['BASKET_ITEMS'] не существует и как применить скидки чтобы цена с скидкой была доступна по $basketItem->getPrice() а так же величина скидки по $basketItem->getField("DISCOUNT_PRICE")
$basketItem получаю так foreach ($basket->getBasketItems() as $basketItem) {...}
Моё резюме и мои контакты на SuperJob ->
Верефицированный WMID 274708912937 ->
Верефицированный WMID 274708912937 ->