Показать сообщение отдельно
  #1 (permalink)  
Старый 24.10.2021, 17:08
Аспирант
Отправить личное сообщение для TomWalbridge Посмотреть профиль Найти все сообщения от TomWalbridge
 
Регистрация: 24.10.2021
Сообщений: 31

Помогите собрать функцию скидки
Добрый день! такая задача
Напишите функцию, которая вычисляет и возвращает стоимость корзины товаров после применения всех скидок. В качестве аргументов функция принимает 3 параметра:

Общая сумма корзины
Количество товаров в корзине
Промокод (по умолчанию null)
Правила и порядок (порядок важен!) начисления скидок:

Если промокод равен 'ДАРИМ300', то из суммы вычитается 300 рублей. При этом если сумма меньше 300 рублей, то итоговая стоимость будет 0.
При количестве товаров в корзине ≥10 применяется скидка 5% ко всей сумме
При сумме, превышающей 50 000, применяется скидка 20% к сумме превышения (то есть к разнице суммы корзины и 50 000)
Если промокод равен 'СКИДКА15', то ко всей сумме применяется скидка 15%, но только если сумма ≥20 000
нужно реализовать этот пункт задачи
-------------Каждая следующая скидка должна проверяться и применяться к сумме после применения предыдущих скидок.>------------------------

function cart(basketAmount, countGoods, promo = null) {
let discountAmount = 0;
let discountPercent = 0;
let rules = [
() => { if (promo === "ДАРИМ300") discountAmount += 300; },
() => { if (countGoods >= 10) discountPercent += 5; },
() => { if (basketAmount > 50000) discountAmount += (basketAmount - 50000) * 0.2 },
() => { if (promo === "СКИДКА15" && basketAmount >= 20000) discountPercent += 15; }
];
for (let f of rules) f();
let result;
if (discountPercent >= 100) result = 0;
else result = basketAmount * (100 - discountPercent) / 100 - discountAmount;
if (result < 0) result = 0;
console.log(discountAmount, discountPercent);
return result;
}

console.log(cart(80000, 20, "СКИДКА15"));
export default cart


буду признателен за помощь в решении
Ответить с цитированием