Введение

Использование разнообразных скидок и наценок широко применяется в сфере услуг для выработки оптимальной политики обслуживания и привлечения клиентов. 
В r_keeper 7 реализована гибко настраиваемая система скидок и наценок. 

Виды скидок и наценок

Скидки и наценки бывают:

  • Суммовые — величина такой скидки или наценки определяется как фиксированная сумма. При применении суммовой скидки ее вычитают из общей суммы чека или стоимости конкретного товара, а при применении суммовой наценки — прибавляют к нужной сумме
  • Процентные — величина процентной скидки или наценки рассчитывается, как процент от суммы, на которую действует скидка или наценка. 

Источники скидок и наценок

При работе со скидками используются разные источники скидки:

  • Вручную
  • На оплату
  • Автоматически
  • Чаевые из сдачи
  • Интерфейс ПДС
  • По скидочной карте
  • Наценка для фискального оформления внесения денег — создается фиктивный чек
  • Скидка на комбо добавляется в заказ автоматически при добавлении комбо, у которого такая скидка настроена, сумма скидки — разница между ценой компонентов по прайс листу блюд и ценой комбо
  • Наценка для обеспечения минимальной суммы заказа
  • XML
  • Скидка для округления суммы в соответствии с правилом округления валюты
  • При оплате как скидка.

Скидки и наценки на оплату

Скидка или наценка на оплату применяется автоматически на заказ или на посадочное место в зависимости от того, что оплачивается.

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

ПДС скидки и наценки

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

  • Если был распечатан пречек, скидка не назначается, кроме нулевых скидок, которые используются для расчета бонуса.
  • При закрытии чека в ПДС передаются транзакции на скидки, оплаты, бонусы и траты. При этом траты и бонусы передаются только в том случае, если была добавлена ПДС скидка.

Скидки по картам

Скидки по карточкам могут предоставляться как по скидочным карточкам, так и по любым другим.

  • Если карта скидочная, то можно настроить проверку срока действия карты. Если был распечатан пречек, скидка не назначается.
  • Для одной карты может быть назначено несколько скидок. Кроме того, эта карточка может быть ПДС карточкой и/или карточкой персонала. В этом случае скидки будут назначаться в порядке MCR алгоритмов с проверкой композиций. Если следующая скидка не свободно комбинируемая и нет композиции, то скидка не будет назначена.
  • Если с картой связана скидка, например через ПДС, и эта скидка может быть применена на заказ, то она назначается на заказ. Если скидка может применяться только на место, то высвечивается диалог выбора места.
  • Если с картой связаны больше одной скидки, которые могут быть применены только на место, то, все кроме, первой игнорируются.

Нераспределяемые наценки

Наценка считается нераспределяемой, если для нее задано блюдо. Для версии r_keeper 7.6.0 и младше — задана налоговая группа. В соответствии с блюдом и его налоговой группой будут рассчитываться налоги, а на фискальном регистраторе распечатывается блюдо.

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

Особый вид нераспределяемых наценок — чаевые, образованные из сдачи.

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

Применение скидок

Применение скидок и наценок задается с помощью:

Область применения

Скидка или наценка имеет область применения. Это может быть:

  • Блюдо
  • Посадочное место заказа
  • Заказ
  • Посадочное место визита
  • Визит.

Автоматические скидки всегда имеют область применения — заказ, или визит при расчете визита.

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

Существует 3 предустановленных правила применения:

  • Разрешить — по умолчанию
  • Запретить
  • Автоматически.
  • Cвои правила применения, написанные с помощью скрипта.

Правила применения выбираются для пакета в зависимости от периода, торговой группы и других условий по приоритету.

Скриптовое правило, если оно было выбрано в соответствии с условиями и приоритетом, выполняет скрипт, который определяет одно из значений:

  • Разрешить — по умолчанию
  • Запретить
  • Автоматически в зависимости, например: от содержания заказа.

Скидка или наценка может быть применена на заказ или посадочное место, если она может быть применена хотя бы в одном пакете.

Для применения скидки или наценки необходимо, чтобы:

  • Скидка и тип скидки были активна
  • Скидка или наценка могла быть добавлена в пакет
  • Дата пакета находилась в интервале Start sale..Stop sale, если он задан
  • Скидка или тип скидки входили в торговую группу пакета
  • Автор пакета, его роль, имеет право Right level
  • Было разрешено применять скидку на заказ, место или блюдо
  • Существовал хотя бы один пакет, для которого подходят правила применения скидки и скидка входит в торговую группу этого пакета
  • Скидка композиционно возможна
  • Такая же скидка или наценка не была дана на вложенную или внешнюю область применения, кроме закрытых нераспределяемых скидок и наценок.

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

  • Автоматическая скидка добавляется в текущий пакет, при невозможности — в сессию, где может быть добавлена
  • У автоматической скидки игнорируется флаг Ручной ввод
  • Скидка должна быть разрешена на заказ
  • Если скидка добавлена автоматически, то она действует в тех пакетах, где правило использования Автоматически или Разрешить.

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

Многократное применение скидок

Одна и та же процентная скидка или наценка не может быть дана дважды на одно и то же блюдо или место.

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

Композиция скидок

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

  • Действует максимальная скидка, а другие не действуют
  • Сумма скидок
  • Максимальный суммарный процент скидок.

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

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

Для выбора нужной композиции используются все скидки, кроме свободно комбинирующихся, которые применены:

  • К этому блюду
  • К посадочному месту этого блюда
  • К заказу.

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

Расчет скидок

Область действия

Область действия скидки или наценки — набор блюд или частей, при частичной оплате из области применения, для которых:

  • Детализация скидки определена, и она ненулевая 
  • Детализация определена, и ручным вводом введена ненулевая сумма.

Для проверки действия скидки или наценки на блюдо проверяются:

  • Пакет блюда — у пакетов разные правила использования и разные торговые группы. Если для пакета настроено использование правила Запретить, то скидка в этом пакете не действует
  • Соответствия категории блюд, заданной в детализации
  • Оплаты, для которой назначена скидка или наценка. если скидка или наценка на оплату
  • Композиции с операцией Следующие не действуют
  • Правило выбора области действия, заданного в детализации вместе с FromQnt.
  • При выставленном FromAmount — нарастающая сумма по области применения, ограниченной категорией, если у скидки задана классификация
  • Скидка или наценка не распространяется на блюда, оплаченные закрытыми чеками.

Если заданы правила на превышение количеств — FromAmount, то сумма скидки зависит от последовательности ввода. Сумма скидки может измениться, в том числе, при упаковке.

  • Область действия скидки используется при проверке процентного ограничения скидки или наценки — если не задано, то 100%.
  • Суммовые скидки или наценки также распределяются по области действия. Процент скидки или наценки или сумма, заданные вручную, не изменяют ее области действия.

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

Если скидка или наценка дается автоматически, то она действует только в тех пакетах, где по правилу дается автоматически. Поэтому сумма скидки, примененной автоматически, может не совпадать с суммой той же скидки, примененной вручную.

Выбор детализации

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

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

Категория в детализациях задается из классификатора, заданного в заголовке скидки или наценки. Если в заголовке классификатор задан, а в детализации группа не задана, то эта детализация относится к блюдам, у которых не задана группа по классификатору скидки или наценки. Это относится как к процентным, так и к суммовым скидкам и наценкам.

  • Условие FromAmount в детализации применяется для суммы блюд относящихся к выбранной категории, либо для всей области применения, если классификация у скидки не задана.
  • Флаг FromAmountEffectsExcess может быть задан только для процентной скидки или наценки. В этом случае скидка или наценка будет нулевой для блюд, для которых текущая сумма по области применения меньше FromAmount.
  • Условие FromQnt в детализации может быть задано только для процентной скидки или наценки и только вместе с группой классификатора. Условие проверяется для суммарного количества блюд из этой группы классификатора во всей области применения. Если задано правило для каждого FromQnt или на превышение FromQnt, то блюда выбираются из области применения в порядке ввода.
    Например, дана скидка на заказ, задано правило на превышение FromQnt, где FromQnt=5. 5 блюд было заказано в первом периоде и еще 5 — во втором. Если в первом периоде скидка действует, а во втором — нет, то скидка будет нулевой, а если наоборот, то будет.

Детализация скидки может зависеть от категории заказа. В случае скидки на визит используется категория заказа, куда скидка была добавлена — категория суммарного заказа.

Детализация скидки считается нулевой, если в ней задан нулевой процент или сумма и нулевой процент бонуса.

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

Детализации с зависимостью от количества

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

Композиция скидок

Композиции скидок обрабатываются дважды, причем оба раза отдельно для каждого блюда. Сначала они обрабатываются для возможного ограничения области действия скидок — применяя операцию Следующие не действуют. После того, как суммы будут распределены по блюдам областей действия, композиции обрабатываются для учета ограничений — операции: Уменьшать следующие, Действует максимальная скидка, Максимальный процент. Операция Уменьшать следующие применяется поблюдно, поэтому, возможны ошибки округления.

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

Пример. Дана скидка 100 руб. на заказ в 500 руб. — на конкретное блюдо с суммой 50 руб. пришлось 10 руб. скидки. Но в композиции на данное блюдо задано ограничение, что скидка по блюду составит 5 руб. и суммовая скидка уменьшится на 5 руб., то есть станет 95 руб. вместо 100 руб.

Минимальная цена. Пересчет скидок при превышении

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

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

Если скидка действует на меньшее количество, чем задано в строке, то минимальная цена будет проверяться для минимального из количеств.

Пример. Дана скидка 30% на заказ и скидка каждое пятое блюдо бесплатно. Рассмотрим строку с количеством 5 и суммой 100 руб. На пятое блюдо, сумма которого равна 20, будут действовать обе скидки так, что сумма скидок получается больше суммы блюда, 26 рублей: 20 руб. за бесплатное блюдо и 6 руб. — скидка 30%. Поэтому общая сумма скидок будет уменьшена на 6 и составит 44 руб. вместо 50. Первая скидка: –30*44/50=-26,4. Вторая: –20*44/50=-17,6.

Перераспределения скидок

Сумма скидок на блюдо ограничена минимальной ценой блюда, но в любом случае сумма скидок на конкретное блюдо не может превышать 100%.

Если не настроено перераспределение скидки, то при срабатывании ограничения по блюду сумма скидки уменьшается.

Если включено перераспределение излишка, то излишек скидки по одному блюду может быть перенесен на другое блюдо.
Пример. Есть два блюда A и B по 100 рублей каждое. У блюда A минимальная цена 10 рублей, у B — 70 рублей. Если дана скидка 50% и нет перераспределения, то по блюду A будет скидка 50 рублей, а по B — 30 рублей. В итоге сумма скидки будет 80 рублей, а не 100.
Если включить Перераспределение излишка, то излишек скидки в 20 рублей (70-50) будет перенесен на блюдо A и сумма скидки станет 100 рублей.
Перераспределение излишка возможно только для свободно комбинируемых скидок. Начиная с версии r_k 7.7.0.112 возможно и для скидок, входящих в композицию с операцией Суммировать.

Перераспределение суммы скидки осуществляется с целью оптимизации налогообложения в случае использования различных налоговых ставок. В этом случае максимально возможная сумма скидки, вплоть до минимальной суммы, применяется к блюдам с максимальной налоговой ставкой за счет блюд с минимальной налоговой ставкой.
Пример. Есть два блюда A и B по 100 рублей каждое. Минимальные цены у обоих блюд — 20 рублей, но у блюда A налоговая ставка выше. В этом случае общая сумма 50% скидки 100 рублей будет перераспределена так, что на блюдо A придется 80 рублей, вплоть до минимальной цены 20, а оставшиеся 20 рублей назначатся блюду B, итоговая цена которого составит 80 рублей. Сумма скидки останется 100 рублей, то есть 50% от заказа. Если включено перераспределение суммы, но выключено перераспределение излишка, то сумма скидки такая же, как и при отсутствии перераспределения суммы.

Перераспределение суммы и перераспределение излишка возможно только если не используются скидки на оплату. Существует параметр Перераспределять скидки, который включает возможность перераспределения скидок, но отключает при этом возможность скидок на оплату.

При операциях с заказом

Распределение при распределении блюд

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

Частично оплаченные заказы при закрытии смены

При закрытии общей смены неоплаченные заказы переносятся в новую смену.

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

  • Удаленная сумма учитывается при расчете, если наценка суммовая.
  • Удаленная сумма может быть выведена в отчете.
  • Кроме как при закрытии смены, удаленная сумма может появиться при удалении чека на место — не аннулировании, а именно удалении.

Права работников

Для работы со скидками на менеджерской станции работник должен обладать правами: 

  • Детализации скидок и наценок — право дает возможность создавать детализацию для новой скидки и наценки
  • Скидки и Наценки — доступ к справочнику Скидки и Наценки
  • Типы скидок и наценок — дает возможность создавать новый тип скидок
  • Композиции скидок — доступ к справочнику Композиции скидок 

Для работы со скидками на кассовой станции работник должен обладать правами:

  • Уменьшение суммы заказа — право на уменьшение суммы заказа
    Если у работника нет данного права, то для удаления блюда, добавления скидки, переноса блюд в другой заказ будет требоваться подтверждение.
  • Удаление автоматических скидок — право на удаление автоматических скидок из заказа
  • Скидка — право на добавление скидок в свои заказы
    Если права нет, то нет возможности удалить автоматическую скидку и добавить другие. Кнопки на кассовой станции нет.
  • Редактирование суммы скидки — право на редактирование суммы скидки
    В свойствах скидки должна быть активна настройка Изменяемое значение. Для изменения размера скидки воспользуйтесь кнопкой Цена и цифровой клавиатурой.
  • Менеджерское подтверждение для скидки — право на добавление скидки в заказ, в свойствах которой активна настройка Менеджерское подтверждение. Используется с правом Скидки
  • Добавление скидок в чужие заказы — право на добавление скидок в чужие заказы
    Если работник может добавлять скидки в чужие заказы, то ему ещё необходимо дать право Открывать любой заказ и право Скидки.