[ОТВЕТИТЬ]
09.01.2017 10:59
winmasta
 
Всех с прошедшими. Возник вопрос: можно ли в СМ+ настроить изменение скидки в зависимости от активности ДК, а именно (один из вариантов работы схемы):

1) покупатель получает карту со стартовой скидкой
2) если в течение месяца не было покупок скидка уменьшается
3) если в течение следующего месяца не было покупок - опять уменьшается
4) как только зафиксирована покупка - скидка восстанавливается до стартовой

В СМ+ смог найти только изменение типа ДК по сумме. Есть ли такая возможность в СМ+ ? Если нет может возможно в БД скриптик прогонять ?
09.01.2017 11:52
ArchiHaki
 
Это уже не просто "скидка", а целая "программа лояльности" получается. В СМ вряд ли что-то получится, даже в УКМ4 она реализована скудно, а про Loya я пока промолчу.
09.01.2017 12:08
winmasta
 
А если такой вариант: раз в день прогоняем скрипт, который смотрит дату последней покупки по карте и если текущая дата на хотя бы на 30 дней больше, то меняем тип ДК ? Возможно ли такое вмешательство в БД без вреда для всего остального ?
09.01.2017 14:02
winmasta
 
поковыряю базу )
09.01.2017 14:30
baggio
 
только учти что измененная карточка после манипуляций должна упасть в кассу...
09.01.2017 15:37
bob
 
Цитата:
winmasta Всех с прошедшими. Возник вопрос: можно ли в СМ+ настроить изменение скидки в зависимости от активности ДК, а именно (один из вариантов работы схемы):

1) покупатель получает карту со стартовой скидкой
2) если в течение месяца не было покупок скидка уменьшается
3) если в течение следующего месяца не было покупок - опять уменьшается
4) как только зафиксирована покупка - скидка восстанавливается до стартовой

В СМ+ смог найти только изменение типа ДК по сумме. Есть ли такая возможность в СМ+ ? Если нет может возможно в БД скриптик прогонять ?
МОжет тебе проще накопительную использовать. в СМ+ это реализовано. и активность покупателя расчитывается. Только не спрашивай - как там да что. просто прочти документацию для начала, если не читал еще.
09.01.2017 16:31
winmasta
 
Цитата:
bob МОжет тебе проще накопительную использовать. в СМ+ это реализовано. и активность покупателя расчитывается. Только не спрашивай - как там да что. просто прочти документацию для начала, если не читал еще.
Видел эту галку, в доках не нашел, где настраивать эту активность и вообще что это такое, только абстрактные фразы. Как всегда не там ищу.
09.01.2017 18:45
~Guest~
 
В СМ+ такого нет, там вообще не предусматривалась сложная схема накоплений. Вообще такая схема должна быть в УКМ 4, активность же можно в цифры перевести. А в УКМ 5 уже такого скорее и не будет, всех туда загонят в итоге. Все в продукт ЛОЯ перекидывают.
10.01.2017 13:23
winmasta
 
Подскажите как табличка с картами называется, не смог найти.
11.01.2017 07:45
HellBoy
 
SMCredCards – Список обслуживаемых кредитных карт
SMCredPref – Префиксы платежных карт для автоматической идентификации
SMDiscType – Типы дисконтных карт
SMDiscPers – Список дисконтных карт (персональные скидки)
11.01.2017 08:55
winmasta
 
И еще табличку с кассовыми чеками, думаю должно получиться.
11.01.2017 15:28
HellBoy
 
SMCashZ – Таблица Z-отчетов
SMCashChecks – Таблица чеков
SMCashCheckItems – Позиции чеков
11.01.2017 15:41
winmasta
 
Наивно полагал, что в SMCashChecks будет поле с номером ДК, но не тут то было. В СМ+ в журнале "Кассовые чеки" есть столбец "Дисконтная карта". Как в этом журнале ДК ассоциируется с конкретным чеком ? Может есть где почитать про внутреннюю структуру БД СМ+, чтобы не спрашивать каждый шаг ?
11.01.2017 15:42
konst
 
структура БД подробно описана в документации
Том 9. Структура БД
11.01.2017 17:11
winmasta
 
Проверьте пожалуйста, может можно проще или эффективнее ?

SQL код:
CREATE VIEW znum30 AS SELECT DISTINCT FROM smcashchecks WHERE printtime > (SYSDATE 30ORDER BY znum;
CREATE VIEW code30 AS SELECT DISTINCT code FROM smcashdisccard WHERE znum IN (SELECT FROM znum30ORDER BY code;
UPDATE smdiscpers SET cardtype 5 WHERE code NOT IN (SELECT FROM code30);
DROP code30;
DROP znum30;
COMMIT
11.01.2017 18:38
vdm
 
Цель скрипта - "поменять тип всех карт, присутствующих в чеках за последний месяц"?
"Последний месяц" очень стремно фильтруется. Так можно делать только если в базе одна касса.
11.01.2017 19:03
winmasta
 
Цитата:
vdm Цель скрипта - "поменять тип всех карт, присутствующих в чеках за последний месяц"?
"Последний месяц" очень стремно фильтруется. Так можно делать только если в базе одна касса.
Цель именно такая да вот незадача, 2 МХ по 2 кассы в каждом, и номера Z-отчетов пересекаются. Поэтому схема моя работает криво.

Есть ли какой-то сакральный смысл в том, что в таблице чеков нет поля ДК ?

Если в журнале это можно визуализировать, значит и руками можно отобрать. Вот сижу думаю.
11.01.2017 21:41
Starter
 
Вот такой код генерит задача бизнес анализа. Это номера дк и суммы продаж
SQL код:
 SELECT (DCSUM.Code) as Field4,round((SUM((decode(Z.IsSale,'1',Z.TotalSum,0))-(decode(Z.IsSale,'1',0,Z.TotalSum)))),2) as Field3 FROM SVAnalyticsCheck Z,SVCashDiscCardSum DCSUM
 WHERE Z
.LocID=DCSUM.LocID(+) and Z.DeskNum=DCSUM.DeskNum(+) and Z.ZNum=DCSUM.ZNum(+) and Z.CheckNum=DCSUM.CheckNum(+) and Z.CheckDate between to_date('13.12.2016','DD.MM.YYYY') and to_date('11.01.2017','DD.MM.YYYY')
 
GROUP BY (DCSUM.CodeORDER BY 1 ASC
12.01.2017 08:02
winmasta
 
Цитата:
Starter Вот такой код генерит задача бизнес анализа. Это номера дк и суммы продаж
SQL код:
 SELECT (DCSUM.Code) as Field4,round((SUM((decode(Z.IsSale,'1',Z.TotalSum,0))-(decode(Z.IsSale,'1',0,Z.TotalSum)))),2) as Field3 FROM SVAnalyticsCheck Z,SVCashDiscCardSum DCSUM
 WHERE Z
.LocID=DCSUM.LocID(+) and Z.DeskNum=DCSUM.DeskNum(+) and Z.ZNum=DCSUM.ZNum(+) and Z.CheckNum=DCSUM.CheckNum(+) and Z.CheckDate between to_date('13.12.2016','DD.MM.YYYY') and to_date('11.01.2017','DD.MM.YYYY')
 
GROUP BY (DCSUM.CodeORDER BY 1 ASC
В общих чертах только понимаю как тут отбираются карты Подскажите как отсюда суммы выпилить и сделать зависимость от SYSDATE ?

Сам же и сделал

SQL код:
SELECT (Code) as Field3 FROM SVAnalyticsCheck Z,SVCashDiscCardSum DCSUM WHERE Z.LocID=DCSUM.LocID(+) and Z.DeskNum=DCSUM.DeskNum(+) and Z.ZNum=DCSUM.ZNum(+) and Z.CheckNum=DCSUM.CheckNum(+) and Z.CheckDate between sysdate-30 and sysdate GROUP BY (DCSUM.CodeORDER BY 1 ASC
12.01.2017 08:14
winmasta
 
Если этим скриптом пройтись, то он отбирает 282 карты. Если в оснастке Скидки открыть вкладку Статистика по ДК и там отобрать по тем-же датам, то получается 291 карта. Где-то все-таки не стыковка.

Разобрался:
1) скрипт не учитывает карты в оперчеках, а статистика ДК учитывает.
2) sysdate-30 в выборку не попадает, например sysdate - сегодня, тогда sysdate-30 - 13.12.16, но в выборку карты с чеками в этой дате не попадают.
3) в статистику ДК попадают карты если дата Z-отчета, в которых есть чек, который ссылается на эту карту попадает в рамки, которые мы устанавливаем в фильтре статистики

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


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

 

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