13.08.2007 11:26
Pyatak
 
Попробуй расчет сумм накоплений сразу для всех карт, а не для каждой в отдельности таким вот запросом:
Код:
        SELECT code, sum(sumsale) as sumsale
          FROM supermag.smactivityclient
         WHERE TO_DATE(eventtime) between '06.07.07' and '06.08.07' 
         GROUP BY code
13.08.2007 16:35
shurik_catfish
 
Спасибо за помощь. уже сделал. тормоза но удалось пока 2000 карт за 18 минут проверить. И заменить в обоих базах. Завели пять типов карт (не накопитеьлных) и просто при достижения опреденной суммы меняеться тип карты (как у Mtirt). Соединение планируеться начать через месяц.
13.08.2007 17:23
Pyatak
 
Не забудь тока на кассы изменения выгрузить, лучше всего раз в сутки (например, после проверок всех карт) полную выгрузку делать.
А чего так долго-то? Из чего сервер сделан? У меня 8 тысяч карт секунд за 15 проверяется.
14.08.2007 07:31
shurik_catfish
 
Тормоза из-за того что я по одной (не так как у вас - сразу для всех не пойдет мне надо отбирать из двух баз и суммировать уже во внешней проге). Кассы то и так каждый день по полной грузяться. сейчас в очередь нпочтовика нужно эти карточки затолкать.
14.08.2007 10:02
Pyatak
 
Если у тебя одни и те же карточки в обеих базах, так ты выполни этот запрос и в той и в другой, только добавь в конец ORDER BY code для сортировки по коду карточки и затем обрабатывай результаты по одной строчке, всё будет гораздо быстрей, чем для каждой карточки по запросу слать.
15.08.2007 08:09
shurik_catfish
 
Код:
select sum(totalsum),code from smdocdisccard where code in 
          (select code from smdiscpers where cardtype in
                       ('30','36','34','37','38')) group by code
Сделал так, в двух базах 4-5 сек *171 (таймер на форму кинул специально) в базах разные cardtype у карточек. Это по одной базе. Pytatak огромное спасибо *40 . Что-то сам не сразу доехал. Хотя все на много проще чем кажеться.
15.08.2007 13:53
shurik_catfish
 
Еще один вопрос про накопительные скидки. Ситуация такая не успели раздать карты как появились клиенты потерявшие свои карты. Им выдают новые но их покупке по страой карте потерян. Как быть??? Как можно учитывать средствами СМ еще и суммы по потерянным картам???
15.08.2007 14:29
Pyatak
 
Цитата:
shurik_catfish Им выдают новые но их покупке по страой карте потерян.
С трудом улавливаю смысл....

Ты когда деньги теряешь, тебе кто-нибудь новые взамен дает?

Ну если уж очень надо, то возможно прокатит вариант с заменой в таблице SMActivityClient номера утеренной карты на новый примерно таким запросом:
Код:
UPDATE supermag.smactivityclient
SET code='NEW_CODE'
WHERE code='OLD_CODE'
15.08.2007 15:23
kadr
 
когда выдаётся карта, то привязывается к клиенту, при просмотре покупок по клиенту выбираем все карты и видим все суммы покупок
16.08.2007 06:48
Mtirt
 
В стандартном функционале в 25-ой версии было сделано дополнение для этого:
Цитата:
Замещение накопительных дисконтных карт.



В разделе «Скидки» на странице «Дисконтные карты» создана процедура замещения одной накопительной дисконтной карты другой.
Процедура замещения накопительной дисконтной карты позволяет учитывать предыдущую активность покупателя в случае выдачи ему новой дисконтной карты взамен утерянной или испорченной.


Процедура «Заместить дисконтные карты» вызывается кнопкой «Обработать», относящейся к списку дисконтных карт накопительного типа. Процедура позволяет заместить одну или более выбранных карт другой дисконтной картой. При замещении тех дисконтных карт, которые сами замещают какие-либо дисконтные карты, ссылка замещения для ранее замещенных карт меняется на новую карту.


Замещенная дисконтная карта блокируется, и ее разблокирование не разрешается.


Замещать дисконтную карту нужно только дисконтной картой того же типа.


Процедура замещения позволяет указать процедуре расчета накопительной скидки на то, что при расчете суммарной активности покупателя необходимо учитывать не только активность по данной дисконтной карте, но и активность по всем тем дисконтным картам, которые были замещены данной картой. Сами замещенные карты в расчете новых значений скидок не участвуют.
Что касается скрипта, то kadr прав. Новая дисконтная карта "привязывается" к тому же клиенту, что и старая. И наколения считаются для клиента. Есть один момент: у нас есть карты, к которым привязаны клиенты, и есть - к которым не привязаны. Поэтому мы сначала считаем накопления просто по картам, а потом - корректируем еще раз по клиентам.
Часовой пояс GMT +3, время: 06:56.

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