Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Как сделать, чтобы скидка по штрихкоду срабатывала 2-3 раза в день : УКМ-4

21.11.2024 23:36


12.08.2015 12:56
Необходимо ограничить срабатывание скидочной карты сотрудника до 2-3 раз в день! Причина сотрудники (кассиры) пробивают скидку всем кому не лень! Может как-то возможно реализовать через скидку? У меня пока одно решение организовать через прием купонов, перенеся скидочные карты в купоны, но этим я ограничу пробитие до одного, а мне надо 2-3!
12.08.2015 13:07
Я бы сделал запуск sql запроса каждые 5-15 мин на блокировку карт у которых 2-3 срабатывания в опер чеках. А в 00:00 на разблокировку. Или сразу в СБ для проф-беседы.
12.08.2015 13:09
Если баловаться с sql, то лучше поставить триггер на сработку карты. И тогда лишних заданий запускать не придется.
12.08.2015 13:24
Завести накопительные счета от количества покупок.
При количестве больше 3 давать наценку 500% на сумму чека.
12.08.2015 18:20
Цитата:
konst Я бы сделал запуск sql запроса каждые 5-15 мин на блокировку карт у которых 2-3 срабатывания в опер чеках. А в 00:00 на разблокировку. Или сразу в СБ для проф-беседы.
Можно поподробнее! Как будет выглядеть этот sql запрос? Как его выполнять? Какой запрос на разблокировку?
12.08.2015 18:21
Цитата:
sh00r00p Если баловаться с sql, то лучше поставить триггер на сработку карты. И тогда лишних заданий запускать не придется.
Можно по-подробнее как это реализовать?
12.08.2015 18:22
Цитата:
Mtirt Завести накопительные счета от количества покупок.
При количестве больше 3 давать наценку 500% на сумму чека.
Классная идея! Но есть одно НО мне это нужно для того чтобы выявить явного лидера среди сотрудников. Поэтому необходимо поставить всех в одни рамки!
12.08.2015 20:49
Цитата:
Tiger Можно по-подробнее как это реализовать?
Я не знаком со структурой таблиц супермага, поэтому приведу статью с википедии.

Три́ггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.

Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанного с ним события; например, до добавления записи) или AFTER (после события). В случае, если триггер вызывается до события, он может внести изменения в модифицируемую событием запись (конечно, при условии, что событие — не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые могут быть использованы в триггере (например, может быть запрещено вносить изменения в таблицу, на которой «висит» триггер, и т. п.).

Кроме того, триггеры могут быть привязаны не к таблице, а к представлению (VIEW). В этом случае с их помощью реализуется механизм «обновляемого представления». В этом случае ключевые слова BEFORE и AFTER влияют лишь на последовательность вызова триггеров, так как собственно событие (удаление, вставка или обновление) не происходит.

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

Пример (Oracle):

Цитата:
/* Триггер на уровне таблицы */
CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger
AFTER UPDATE ON district
BEGIN
insert into info values ('table "district" has changed');
END;
В этом случае для отличия табличных триггеров от строчных вводится дополнительные ключевые слова при описании строчных триггеров. В Oracle это словосочетание FOR EACH ROW.

Пример:

Цитата:
/* Триггер на уровне строки */
CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger
AFTER UPDATE ON district FOR EACH ROW
BEGIN
insert into info values ('one string in table "district" has changed');
END;
13.08.2015 01:01
Цитата:
Tiger Классная идея! Но есть одно НО мне это нужно для того чтобы выявить явного лидера среди сотрудников. Поэтому необходимо поставить всех в одни рамки!
"Лидеров" скорее всего окажется несколько.
Если цель именно выявить, то может лучше сделать некий отчет, который будет показывать какие карты применяются часто.
Чтобы сделать запрос/отчет, который покажет требуемое, нужно знать какие именно карты используются(клиентские/дисконтные/загружаемые из бэка).
Правда будет нюанс - подобный отчет будет показывать "подозрительное".
Вдруг ребята с карточкой вечерком стоят у магазина и 5-10 раз заходят за пивком, их карта будет "честной", но в отчет попадет.
13.08.2015 06:43
Цитата:
Tiger Классная идея! Но есть одно НО мне это нужно для того чтобы выявить явного лидера среди сотрудников. Поэтому необходимо поставить всех в одни рамки!
Хорошо. Просто считать в накопления количество чеков. Потом посмотреть, у кого накопилось больше всех.
Часовой пояс GMT +3, время: 23:36.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.