вариант загрузки в СМ:
- создать в СМ для каждого процента скидки тип дисконтных карт (например, "скидка 1%", "скидка 2%", ..., "скидка 10%", ... и так до максимальной скидки)
- раз в сутки какая-нибудь софтина смотрит каков должен быть процент скидки по каждой дисконтной карте в БД 'Лояльности покупателей' и в СМ присваивает этой карте соответствующий скидке тип.
Вот запрос на изменение типа ДК:
Код:
UPDATE supermag.smdiscpers SET cardtype=:newtype WHERE code=:cardcode
Запрос на помещение карты в очередь на рассылку (если необходимо):
Код:
insert into supermag.smpostqueue
(enqtime, enqseq, target, objtype, objid, paramint, paramstr, transflags, virtpack, commentary)
select sysdate, :postindex, null, 'DC', code, null, null, 0, null, 'discprog1'
from supermag.smdiscpers where code=:cardcode
Вариант выгрузки из СМ:
Код:
SELECT dc.code, dc.cardtype, ss.sumsale, ss.lasteventtime, pp.propval
FROM supermag.smdiscpers dc,
(
SELECT code, sum(sumsale) as sumsale, max(eventtime) as lasteventtime
FROM supermag.smactivityclient
WHERE TO_DATE(eventtime) between :startdate and :enddate
GROUP BY code
) ss,
(
SELECT discperscode,propval
FROM supermag.SMDiscPersProperties
WHERE propid='DiscProgram'
) pp
WHERE dc.code=ss.code(+)
AND dc.code=pp.discperscode
AND pp.propval = :discprogram
данный запрос отбирает дисконтные карты у которых значение дополнительной характеристики 'DiscProgram' равно
:discprogram, соответственно, нужно "пометить" таким образом карты, участвующие в данной программе.