SABSUS

ЦЕНЫ И ПРАВИЛА АКЦИЙ

Как сочетать скидки: база, порядок и итог каждой строки

Два одинаковых купона могут дать разный итог на сайте и кассе, если базы или порядок расчёта отличаются. Разберите одну корзину по шагам, проверьте исключения и сохраните распределение для последующих корректировок.

Редакция SABSUS · · Источники проверены 9 октября

Начните с правила, которое можно воспроизвести

«Скидки суммируются» недостаточно для кассира, сайта и поддержки. Нужны ответы: на какие строки действует каждое предложение, что считается базой, в каком порядке происходят операции, какие комбинации разрешены и как округляется результат. Одно название купона не содержит всех этих условий.

Разделите три уровня: отдельный товар, подходящая часть корзины и доставка. В документации Shopify эти классы различаются; товарные скидки применяются до скидок заказа, а доставка обрабатывается отдельно. Поддержка комбинаций зависит от условий магазина и типа скидок. Источник: Shopify.

Дальше используется собственная учебная модель расчёта. Она нужна для согласования требований и не обещает одинакового поведения всех систем. Выбор между общей акцией и адресным предложением разобран отдельно.

Совместимость и способ расчёта — разные настройки

Сначала определите, можно ли применять предложения вместе. Затем установите, как считается разрешённая комбинация. Последовательное применение 20% и 10% к одному товару оставляет 0,8 × 0,9 = 0,72 исходной цены, то есть уменьшает её на 28%.

Если оба процента считаются от одной исходной базы, уменьшение будет 30%. Ни одно толкование нельзя назначить по слову «суммируются». Microsoft Commerce документирует отдельную настройку последовательного расчёта и расчёта от первоначальной цены. Источник: Microsoft.

У Shopify есть важное частное правило: несколько процентных скидок уровня заказа рассчитываются от одной базы после товарных скидок. Это не то же самое, что произвольная последовательная цепочка. Источник: сочетание скидок Shopify. При переносе акции между каналами сравнивайте фактическую формулу, а не только одинаковые названия полей.

Учебная корзина с исключённым товаром

Все суммы условные, в одной денежной единице. Налоги для этого арифметического примера не рассматриваются: их порядок нужно проверять отдельно для реального места продажи. В корзине две единицы A по 1 000, одна B за 500 и одна C за 300. Товарный итог до скидок — 2 800. Доставка стоит ещё 200.

Заданы правила:

  • A получает товарную скидку 20%.
  • Купон даёт 10% на A и B после товарной скидки.
  • C исключён из обеих акций.
  • Доставка не входит в процентную базу.
  • Эти две акции разрешено сочетать.

После первого шага строка A стоит 2 000 × 0,8 = 1 600. База купона — 1 600 + 500 = 2 100. Скидка купона составляет 210: на A приходится 160, на B — 50. Итоговые товарные строки равны 1 440, 450 и 300.

Всего за товары: 1 440 + 450 + 300 = 2 190. С доставкой: 2 390. Товарная скидка суммарно равна 610, или примерно 21,79% исходных 2 800. На A действительно действует уменьшение на 28%, на B — на 10%, на C — на 0%. Общего процента 30% у всей корзины нет.

Порог акции требует собственной базы

Предположим, у купона дополнительно установлен минимум 2 200. Если он проверяется по подходящим товарам после товарных скидок, база 2 100 не проходит условие. Если согласованная база — те же подходящие товары до скидок, сумма 2 500 проходит. Это разные условия, хотя текст «от 2 200» одинаковый.

Не включайте исключённый C в порог автоматически. Возможна политика, при которой товар участвует в достижении минимума, но не получает скидку; тогда оба решения должны быть записаны раздельно. Условия бесплатной доставки также могут использовать другую сумму.

После добавления, удаления или изменения количества строк пересчитайте право на акцию и её результат. Если купон перестал подходить, объяснение должно называть нарушенное условие, а не показывать неопределённую ошибку. Принятые условия уже оформленного заказа меняются только по предусмотренному процессу.

Сравнивайте полные разрешённые варианты

Для той же исходной корзины рассмотрим альтернативу: один купон на 500 для A и B, который по учебным условиям нельзя сочетать с остальными скидками. Тогда товары стоят 2 800 − 500 = 2 300, а с доставкой — 2 500.

Первая разрешённая комбинация даёт 2 390, альтернатива — 2 500. Разница 110 в пользу первой. Сравнение отдельных чисел «500 больше 210» неверно: у первой ветки есть ещё товарная скидка 400.

Если появляется предложение бесплатной доставки, включите его только в те варианты, где оно разрешено. Не собирайте итог из лучших частей несовместимых наборов. Сохраните выбранную комбинацию и причины отклонения остальных; это поможет объяснить результат клиенту и найти различие между кассой и сайтом.

Порядок фиксированной и процентной скидки

На цене 1 000 сначала уменьшение на 20%, затем на 100 даёт 700. Обратный порядок даёт (1 000 − 100) × 0,8 = 720. Разница 20 появляется без изменения названий акций.

Поэтому у смешанных правил нужны явный порядок и определение, является ли фиксированное уменьшение суммой на единицу, строку или заказ. Купон «100 на строку» для трёх единиц не равен купону «100 на каждую единицу».

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

Распределение по строкам и округление

В новом независимом варианте после товарной скидки база A и B равна 2 100. Вместо процентного купона применяется фиксированная скидка 300. Для внутренней сверки выбрано пропорциональное распределение по стоимости подходящих строк после товарных скидок.

На A приходится 300 × 1 600 / 2 100 ≈ 228,5714, на B — 300 × 500 / 2 100 ≈ 71,4286. При согласованном округлении до двух знаков это 228,57 и 71,43. Их сумма остаётся ровно 300. C получает ноль.

После распределения A стоит 1 371,43, B — 428,57, C — 300. Товарный итог — 2 100. Алгоритм должен восстанавливать именно общий результат, включая остаток округления. Если строк несколько, независимое округление каждой доли способно дать расхождение; задайте детерминированный порядок распределения остатка.

Две единицы внутри A также требуют правил детализации. Деление 1 371,43 пополам не даёт двух одинаковых сумм с двумя знаками. Для поштучной сверки возможны 685,72 и 685,71 с сохранённым основанием. Это техническое распределение, не универсальное правило возврата покупателю.

Сохраняйте расчёт оформленного заказа

В заказе нужны исходные цены, подходящие количества, исключения, версии правил, рассчитанные базы, суммы по шагам, распределение и округление. Одного итогового значения недостаточно, чтобы понять, почему клиент заплатил именно столько.

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

Отдельно храните резерв использования купона, подтверждённое использование и разрешённое восстановление лимита. Повтор обработки того же заказа не должен съедать дополнительное применение. Отмена платежа сама по себе не доказывает, что вся покупка отменена и лимит надо вернуть.

Приёмочный набор перед запуском

  1. Для основной корзины воспроизводится итог 2 390 с доставкой.
  2. Исключённый C не получает процентного уменьшения.
  3. Для порога 2 200 видна разница баз 2 100 и 2 500.
  4. Несовместимый купон на 500 даёт альтернативный итог 2 500.
  5. Порядок 20% и 100 воспроизводит 700 либо 720 по выбранному правилу.
  6. Фиксированные 300 распределяются как 228,57 и 71,43 без потери остатка.
  7. Изменение количества повторно проверяет порог и доступные комбинации.
  8. Поддержка видит расчёт оформленного заказа после завершения акции.
  9. Повторный обмен не удваивает использование купона.

Для SABSUS проверьте сценарии через заказы, лояльность и структуру каталога. Доступность нужных способов сочетания и распределения необходимо подтвердить в выбранной конфигурации. Отчёт о марже должен использовать итоговую выручку без повторного вычитания той же скидки.

Частые вопросы

Две скидки 20% и 10% всегда дают 28%?

Только при последовательном применении к одному и тому же остатку цены. При общей первоначальной базе получится 30%; возможны и ограничения совместимости.

Почему меньший купон оказался выгоднее?

Сравнивайте весь разрешённый набор. У купона может быть товарная скидка в сочетании, другая база или условие доставки.

Можно хранить только итоговую цену?

Для воспроизводимой проверки нужны ещё правила и шаги расчёта. Особенно важны исключения, распределение по строкам и остатки округления.

Источники

Источники проверены 9 октября 2026 года. Корзины, цены и варианты правил учебные.