Как я могу отображать сумму скидки для каждого купона в корзине?

Как вывести отдельно скидку для каждого правила в компоненте sale.order.ajax, если в this.result['TOTAL'] содержится только общая скидка DISCOUNT_PRICE, учитывающая все примененные правила, но на сайте есть правило - скидка 1000 руб. для заказов свыше 40000 и купон на скидку 20%?
  • 21 сентября 2023 г. 12:38
Ответы на вопрос 2
Для того чтобы отображать сумму скидки для каждого купона в корзине, вам необходимо следить за каждым примененным купоном и сохранять его сумму скидки в отдельной переменной или структуре данных.

В данном случае, если в компоненте sale.order.ajax у вас доступна только общая скидка DISCOUNT_PRICE, вы можете создать дополнительные переменные или структуры данных для хранения суммы каждой отдельной скидки.

Например, вы можете создать переменную или структуру типа массива, в которой каждый элемент будет содержать информацию о примененном правиле или купоне, включая сумму скидки:

```php
$discounts = array(
    array(
        'name' => 'Скидка 1000 руб. для заказов свыше 40000',
        'value' => 1000, // сумма скидки
        'type' => 'rule', // тип скидки
    ),
    array(
        'name' => 'Купон на скидку 20%',
        'value' => $this->result['DISCOUNT_PRICE'], // сумма скидки
        'type' => 'coupon', // тип скидки
    ),
);
```

Затем, вам нужно отобразить данные в вашем компоненте sale.order.ajax в соответствующем месте, например, в шаблоне. Вы можете использовать цикл для вывода каждой скидки отдельно:

```php
foreach ($discounts as $discount) {
    echo $discount['name'].': '.$discount['value'].' руб.<br>';
}
```

Таким образом, вы сможете отобразить сумму скидки для каждого купона в вашей корзине.
$orderObj = Sale\Order::load($ar_orders['ID']);
$discounts = $orderObj->getDiscount();         
$res = $discounts->getApplyResult(true);

Один из способов расширения данных, передаваемых на фронтенд, - это использование события OnSaleComponentOrderJsData. В этом событии вы можете получить скидки, связанные с заказом, и добавить их в массив данных, который будет передан на фронтенд. Затем вы можете использовать эти данные на фронтенде для вывода новой информации. Это общий подход, который стоит рассмотреть.
Похожие вопросы