Если вы столкнулись с такой же проблемой как и я, что при включенной опции BASKET_WITH_ORDER_INTEGRATION при вводе или удалении купона у товаров корзины не визуально добавляется скидка, то вам, возможно, подойдет мой способ:
В шаблоне компонента bitrix.sale.order.ajax в файле order_ajax.js в самом начале добавляем
var changeFromCoupon = false
В функцию refreshOrder перед return true; добавляем
document.changeFromCoupon = false;
if (this.changeCoupon) {
this.changeCoupon = false;
let first_basket_item_id = Object.values(this.result.GRID.ROWS)[0].id;
document.changeFromCoupon = true;
document.querySelector('#basket-item-quantity-' + first_basket_item_id).dispatchEvent(new Event('change'));
}
В функцию sendRequest в case enterCoupon и case removeCoupon в самом начале добавляем
this.changeCoupon = true;
Далее в шаблоне корзины, в папке js ищем файл component.js и в функции setQuantity комментируем условие if (parseFloat(itemData.QUANTITY) !== parseFloat(quantity))
чтобы осталось только
this.animatePriceByQuantity(itemData, quantity);
this.actionPool.changeQuantity(itemData.ID, quantity, currentQuantity);
Далее в файле action-pool.js в функции BX.Sale.BasketActionPool.prototype.checkItemPoolAfter
заменяем if следующей конструкцией
if (Object.keys(this.pool[itemId]).length === 0)
{
// CHANGED BY IVAN
if (document.changeFromCoupon) {
// document.changeFromCoupon = false;
} else {
delete this.pool[itemId];
}
}