[ОТВЕТИТЬ]
28.01.2015 12:56
Mtirt
 
Сейчас попробую.
28.01.2015 13:55
Mtirt
 
Не устраивает меня этот вариант :(
МА исполняется локально, в магазине.
Если в период действия акции кто-то разошлет из офиса карточку товара - прощай ценники.
Менять надо в офисе, а потом карточки рассылать.
28.01.2015 14:27
OlegON
 
правильно ли я понимаю, что условие простое - работающая МА = определенные ценники?
не проще составить джоб для магаза, чтобы это дело выравнивать? просто вышеприведенный триггер однозначно избыточный, ресурсоемкий. кроме того, не вижу, как он спасет ситуацию с прилетающей карточкой во время акции. если очень хочется - можно продолжить и эту идею, но тогда лучше вешать на smdocuments и, если МА и нужный статус, тогда менять ценники на карточки этого документа, ну или что там надо сделать.
28.01.2015 14:46
vdm
 
[хотя тема не оракловая]
А штатно, в документации эта ситуация описана вообще? Что приезд карточки из центра меняет тип ценника. Означает ли это, что для корректности ценников все акции нужно исполнять в центре?
Может проще отключить расылку справочника ценников?
28.01.2015 15:08
Mtirt
 
[В принципе, могу объединить с предыдущей темой про "Цены по карте", это её логическое продолжение.]
Штатно в документации, ценники, заданные в МА, меняют ценники и в офисе и в магазине.
(похоже, что в офисе меняет МА, а в магазине - Акт переоценки на основании МА, так как в документации таблица smauctionpricers есть по этим двум типам документов).
Просто у меня в МА не тот вид цены, который используется в магазине.
28.01.2015 15:09
Mtirt
 
Цитата:
OlegON правильно ли я понимаю, что условие простое - работающая МА = определенные ценники?
не проще составить джоб для магаза, чтобы это дело выравнивать? просто вышеприведенный триггер однозначно избыточный, ресурсоемкий. кроме того, не вижу, как он спасет ситуацию с прилетающей карточкой во время акции. если очень хочется - можно продолжить и эту идею, но тогда лучше вешать на smdocuments и, если МА и нужный статус, тогда менять ценники на карточки этого документа, ну или что там надо сделать.
Есть подозрение, что проще сделать задание в офисе (одно) и им же разослать карточки товара, или ценники по карточкам товара.
29.01.2015 09:36
kadr
 
Цитата:
Mtirt Не хочу писать три триггера :( Точнее, не хочу писать в Супермаге :(

Суть задачи: в маркетинговой акции по Маркетинговой цене заполнен вид ценника.
Нужно при старте/окончании МА копировать этот вид ценника на розничные виды цен магазинов, участвующих в акциях.
Есть идеи как это сделать?
А зачем ждать пока упадет запись в SMDocLog? Триггер сразу на изменение статуса МА в smdocuments не лучше будет?
и тогда по тексту триггера уже не обращаться к самой smdocuments а оперировать понятиями :old.doctype и :old.id и остальными.
29.01.2015 09:56
Mtirt
 
Спасибо!!! Работает!
Когда пиво завезти?
29.01.2015 13:08
OlegON
 
Хм, а что именно работает? Про МА и smdocuments я сообщением выше писал....
29.01.2015 13:15
Mtirt
 
Значит вчера я тебя не поняла. А может мне не хватило фразы про "и тогда по тексту триггера уже не обращаться к самой smdocuments а оперировать понятиями :old.doctype и :old.id и остальными."
Я в субботу напишу развернутую историю, про то, что я делала, где нашла грабли и как их решила...
У меня там был большой мешок граблей :)
Поэтому и темы объединила...
31.01.2015 10:16
Mtirt
 
Итак, как обещала, рассказываю о своем "пути, усеянном граблями".

Завожу в Супермаг+ вид цены Маркетинговая, привязываю один из работающих магазинов, рассылаю в него Вид Цены, делаю акт переоценки на тестовую карточку товара, жду её в УКМ4. Проверила всё что можно. Цены нет... Через какое-то время понимаю, что не разослала в магазин Склад, т.е. база магазина ничего не знает о новом виде цены. Разослала, товар в УКМ4 получил вторую цену.

Теперь мне надо завести в УКМ4 много-много клиентов и их дисконтных карт.
Создаю базу данных для конвертера Стандартный импорт 4.
У меня случается затык: я забываю, как в mysql писать скрипты, добавляющие много-много значений в цикле.
И не могу этого же и нагуглить.
В конце-концов, психую, пишу скрипт в oracle, выгружаю результат в текстовый файл, текстовый файл загружаю в mysql.
В базе импорта появляются значения.
Запускаю на СГО конвертер Стандартный импорт 4. Клиенты на СГО не появляются...
Всё работает - клиентов нет. В какой-то момент понимаю, что в signal надо правильно указать номер версии, после этого клиенты и их карты благополучно загружаются на СГО и спускаются на магазины.

Завожу и настраиваю на СГО в УКМ4 скидки, прошу ЦТО-шников запустить мне тестовую кассу, чтобы их проверить.
ЦТО-шники выясняют, что на тестовую базу данных у них закончилась лицензия, делают запрос в С+.
Получаем лицензию, проверяем скидку - всё проходит.
Меняю формат чека, всё замечательно.

Проставляю в Супермаге новый вид цены в остальные магазины, переводимые на новую систему.
Для запуска акции остается только перенастроить шаблоны ввода в УКМ4 с дисконтной карты на клиента...
Но оказалось, что не всё так просто.
31.01.2015 10:34
Mtirt
 
Акция начинается в понедельник.
В пятницу вечером звонит менеджер по ценам и говорит, что в том магазине, который я привязала первым, создаются акты переоценки на основании приходных накладных по виду цены Маркетинг.
Вздыхаю, понимаю, что не разослала вид цены после того как установила "Шаг цены". Рассылаю. Отбираю товары, которые успели "нацениться", делаю цену у них равной нулю.
Одновременно понимаю, что забыла разослать остальные магазины, после того, как их привязала. Делаю и это...
В воскресенье поздно вечером меняю шаблоны ввода на СГО по тем магазинам, которые мне нужны.
Засыпая, понимаю, что скидка может не сработать, так как в Супемаге надо убрать кучу "пределов скидок".

Понедельник, 8 утра. Еду на работу. Телефон начинает разрываться от звонков: не печатаются ценники.
Приезжая, понимаю, что маркетинговая акция устанавливает ценник на вид цены Маркетинг. А магазину надо распечатать тот же ценник на вид цены Розничная. Отбираю карточки товаров, поставляю в них правильные виды цен и ценники, рассылаю карточки магазинам. Ценники печатаются.
Магазин начинает жаловаться на то, что скидки не проходят. Вспоминаю про пределы скидок, убираю их по группам, рассылаю.
Скидка на проходит. Обнаруживаю в карточке товара персональный предел скидки, убираю его, рассылаю.
Убеждаюсь, что в карточке товара в УКМ4 везде минимальная цена 0.
Скидка не проходит.

Иду в настройку скидок в УКМ4 в базе магазина и вместо наименований групп товаров вижу непонятный набор цифр:
Миниатюры
Нажмите на изображение для увеличения
Название: Скидки.png
Просмотров: 317
Размер:	89.3 Кб
ID:	4330  
31.01.2015 10:53
Mtirt
 
Пытаюсь заново настроить скидку прямо в магазине, и, о чудо, скидка начинает проходить.
Понимаю, что теперь эту операцию надо повторить для каждого из 20 магазинов :(
От нервного срыва меня спасают ЦТО-шники, которые приезжают и помогают поменять настройки скидки.
(Мне очень хочется верить, что данная проблема не повторяется в новых версиях УКМ4. И классификатор товаров на СГО и в магазинах как-то объединяется. У нас сейчас 50 сп2. Но сюрприз оказался очень неприятный.)

Тут звонит магазин, который настраивали первым и говорит, что у них на товар касса дала скидку 100%.
Мы идем в УКМ4 и видим в карточке товара маркетинговую цену 0. Я сама поставила это значение в пятницу вечером.
И касса успешно дает скидку, продавая товар по этой цене. Удаляю нулевые значения из базы данных, прогружаю кассу.
Проблема снимается, хотя я тут же задумываюсь, а что мы будем делать при окончании маркетинговой акции.
Через 15 минут выясняется (ценообразование ошиблось и решило завершить одну из акций, запущенных утром), что после завершения маркетинговой акции цена остается той же, что и во время акции. Пишу здесь, ищу в документации, в конце-концов vdm подтверждает, что теперь маркетинговые акции работают именно так.

На следующее утро собираюсь с мыслями и делаю следующий job:
Код:
begin
  sys.dbms_scheduler.create_job(job_name            => 'SYS.SMPRICES_51',
                                job_type            => 'PLSQL_BLOCK',
                                job_action          => 'insert into supermag.SMCashQueue (enqseq,Locid,Article) select distinct rownum,p.locid,t.article from supermag.smprices t, supermag.smcashdesks p where t.pricetype=51 and t.savedprice is null and (p.locid, t.article) not in (select  c.locid, c.article from supermag.smcashqueue c);
commit;
delete from supermag.smprices t where t.pricetype=51 and t.savedprice is null;
commit;',
                                start_date          => to_date('27-01-2015 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
                                repeat_interval     => 'Freq=Minutely;Interval=15',
                                end_date            => to_date(null),
                                job_class           => 'DEFAULT_JOB_CLASS',
                                enabled             => true,
                                auto_drop           => false,
                                comments            => '');
end;
/
31.01.2015 10:58
Mtirt
 
И начинаю разбираться с шаблонами ценников. Мучаюсь я с ними 3 дня, в итоге, подсказка kadr приводит к написанию вот такого тригера:
Код:
create or replace trigger SMDocumentsMAPr
    after insert or update of docstate ON SMDocuments
    for each row
    
when (old.DocType = 'MA')
declare
    vType integer;
  begin

    if (:old.docstate = 2) and (:new.docstate = 3) then
      select distinct a.pricetype
        into vType
        from smauctionatoms a, svlocalshops l
       where a.doctype = :old.doctype
         and a.aucid = :old.id
         and a.locid = l.ID and a.pricetype not in (список служебных видов цен);
      if vType = 51 then
        merge into supermag.smpricerArticle x
        using (select distinct s.article,
                               pr.pricetype,
                               p.pricercategory,
                               p.pricertype
                 from supermag.smauctionatoms  a,
                      supermag.smauctionpricer p,
                      supermag.smspec        s,
                      supermag.smlocprices     pr,
                      supermag.svlocalshops    l
                where a.doctype = :old.doctype
                  and a.aucid = :old.id
                  and :old.doctype = p.doctype
                  and :old.id = p.docid
                  and s.doctype = :old.doctype
                  and s.docid = :old.id
                  and a.locid = pr.locid
                  and l.ID = a.locid
                  and pr.flags = 3
                  and a.locid not in (список служебных мест хранения)
                  and pr.pricetype not in (список служебных видов цен, 51)) z
        on (x.article = z.Article and x.pricetype = z.pricetype and x.pricercategory = z.pricercategory)
        when matched then
          update set x.pricertype = z.pricertype
        when not matched then
          insert
            (x.article, x.pricetype, x.pricercategory, x.pricertype)
          values
            (z.article, z.pricetype, z.pricercategory, z.pricertype);
      end if;
    end if;
    if (:old.docstate = 3) and (:new.docstate = 0) then
      select distinct a.pricetype
        into vType
        from smauctionatoms a, svlocalshops l
       where a.doctype = :old.doctype
         and a.aucid = :old.id
         and a.locid = l.ID and a.pricetype not in (список служебных видов цен);
      if vType = 51 then
        delete from supermag.smpricerarticle x
         where (x.article, x.pricetype, x.pricercategory, x.pricertype) in
               (select distinct s.article,
                                pr.pricetype,
                                p.pricercategory,
                                p.pricertype
                  from supermag.smauctionatoms  a,
                       supermag.smauctionpricer p,
                       supermag.smspec        s,
                       supermag.smlocprices     pr
                 where a.doctype = :old.doctype
                   and a.aucid = :old.id
                   and :old.doctype = p.doctype
                   and :old.id = p.docid
                   and s.doctype = :old.doctype
                   and s.docid = :old.id
                   and a.locid = pr.locid
                   and pr.flags = 3
                   and a.locid not in (список служебных мест хранения)
                   and pr.pricetype not in (список служебных видов цен,51));
      end if;
    end if;
  end;
Есть надежда, что это была последняя проблема.
01.02.2015 17:32
vdm
 
Насчет соответствия классификатора товаров на СГО и в магазинах.
Если магазинные базы УКМ получают классификатор локально от магазинных СМ, то номенклатуру на СГО нужно импортировать снизу, с магазинов. Правда в моей версии оно действует на серверы и терминалы одновременно, из-за чего однажды был глюк - с какой-то кассы на сервер магазина поднялся старый классификатор. С тех пор держу импорт отключенным и включаю вручную, когда на СГО становятся нужны новые группы/артикулы. М.б. в 50+ это пофикшено/улучшено.
17.02.2015 14:11
Mtirt
 
Нашла новую проблему. На товары, которые поучаствовали в акции, начинают создаваться акцты переоценки по виду цены Маркетинговая. По тем товарам, по которым акции не было - акты переоценки по этому виду цены не создаются.
Есть идеи, почему так?
17.02.2015 15:04
kadr
 
А можно сузить круг идей?
Нужны идеи почему создаются акты или идеи почему не создаются?

По смыслу тобой описано обратное поведение опции "Игнорировать порог при нулевой цене"
17.02.2015 15:13
Mtirt
 
Галочку "Игнорировать порог при нулевой цене" я убрала давно.
Т.е. по логике акты создаваться не должны.
И не создаются для тех товаров, которые в МА не участвовали.
17.02.2015 17:58
vdm
 
Попробовал воспроизвести на тестовой 1030.3 - не получается.
18.02.2015 10:10
Mtirt
 
Я нашла причину.
Сижу и смеюсь...
Человеческий фактор.
Хоть я и поставила очень большой шаг цены на группу всё, но некоторые товарищи зашли в карточку товара и поставили в ней шаг цены =0.
Пойду писать триггер на эту тему.


Опции темы


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

 

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