16.03.2009 12:13
Pyatak
 
вариант загрузки в СМ:
- создать в СМ для каждого процента скидки тип дисконтных карт (например, "скидка 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, соответственно, нужно "пометить" таким образом карты, участвующие в данной программе.