Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Изменение скидки в зависимости от активности карты : Супермаг Плюс (Супермаг 2000)

19.04.2024 8:41


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
Часовой пояс GMT +3, время: 08:41.

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