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


Опции темы



Часовой пояс GMT +3, время: 03:09.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.