Скидки должны работать по понятным правилам: какие можно совмещать, какие исключают друг друга, что применяется первым. Если правила не заданы явно, корзина начинает считать слишком щедро или непредсказуемо.
Неверное суммирование скидок снижает маржу, ломает акции и вызывает споры, когда менеджер видит одну цену, а клиент другую.
Коротко: нужно описать приоритеты скидок, запретить несовместимые комбинации и сделать единый расчет корзины.Почему возникает проблема
Проблема возникает, когда промокоды, бонусы, персональные скидки и акции считают разные участки кода без общего правила приоритета.
Что проверяю в первую очередь
- какие типы скидок есть в проекте
- можно ли совмещать промокод и акцию
- от какой суммы считается процент
- учитывается ли доставка
- как округляется итоговая цена
Как исправляю
Я собираю правила скидок в единую функцию расчета, чтобы сайт, админка и оплата видели одну цену.
- задаю приоритеты скидок
- запрещаю несовместимые комбинации
- исправляю расчет процента и фиксированной скидки
- добавляю проверку минимальной цены
- показываю клиенту понятную расшифровку
Что подготовить перед обращением
- ссылка на сайт или кабинет
- скриншот проблемы
- пример пользователя, заказа или события
- время, когда ошибка повторялась
- доступы или выгрузка логов без лишних персональных данных
Какой результат нужен
Корзина считает скидки одинаково во всех местах, промокоды не конфликтуют, а итоговая сумма не становится ошибочной.
Чего лучше не делать
Не исправляйте только вывод цены в шаблоне. Если расчет оплаты останется старым, ошибка проявится на следующем шаге.
Вопросы и ответы
Можно ли разрешить несколько скидок?
Да, если это явно описано в правилах и покрыто проверками.
Почему цена в оплате отличается от корзины?
Скорее всего, расчет дублируется в разных местах.
Нужно ли хранить примененные скидки?
Да, чтобы заказ можно было проверить после оплаты.
Нужна похожая задача?
Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот, лог ошибки или пример заказа, и я подскажу, с чего безопасно начать исправление.
Итог
Скидки должны считаться централизованно: с приоритетами, запретами совмещения и понятной расшифровкой для клиента.