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

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

18.04.2024 17:20


16.01.2015 17:20
vdm
 
Добавить доп. свойство клиентов, идентификатор Order_MX, с единственным значением 'Да'.
На нужных контрагентах выставить его.
Для нужных должностей включить проверку.

Код примерно такой
Код:
CREATE OR REPLACE PROCEDURE SUPERMAG.USR_INSPECT_1101 (
   indoctype    IN   smdocuments.doctype%TYPE,
   indocid      IN   smdocuments.id%TYPE,
   inoldstate   IN   smdocuments.docstate%TYPE := NULL,
   innewstate   IN   smdocuments.docstate%TYPE := NULL,
   indummy      IN   core.smbool := NULL )
IS
  INSPECT_ID    supermag.ttinspectresbuffer.inspectid%TYPE := 1101;
  PROP_SUPPLIER supermag.smclientproperties.propid%TYPE := 'Order_MX';
BEGIN
    INSPECT.ONSTARTTRANS;
   
    INSERT INTO supermag.ttinspectresbuffer
                (inspectid, errid, inspectname, errtext)
    SELECT DISTINCT INSPECT_ID, 0, TO_CHAR(INSPECT_ID),
                    SUBSTR('Не разрешено изменение заказа на контрагента №' || to_char(clientindex), 1, 255) 
      FROM ( SELECT d.clientindex
               FROM supermag.smdocuments d, supermag.smclientproperties p
              WHERE d.doctype=indoctype AND d.id=indocid AND d.doctype='OR'
                AND d.clientindex=p.idclient(+) AND p.propid(+)=PROP_SUPPLIER AND P.PROPVAL IS NULL
           );
  
    INSPECT.SETFUNCNAME(INSPECT_ID);
END USR_INSPECT_1101;
/

-- для документов 'OR', при смене статусов 1-2-3, по умолчанию проверка у всех отключена
DECLARE
  INSPECT_ID       supermag.ssinspectfunc.id%TYPE := 1101;
  INSPECT_NAME     supermag.ssinspectfunc.name%TYPE := 'Пользовательская проверка 1101';
  INSPECT_ORANAME  supermag.ssinspectdoc.inspectoraname%TYPE := 'SUPERMAG.USR_INSPECT_1101';
  INSPECT_DEFMODE  supermag.ssinspectfunc.definspectmode%TYPE := 0;
BEGIN

insert into ssinspectfunc(id, name, definspectmode)
  values (INSPECT_ID, INSPECT_NAME, INSPECT_DEFMODE);

insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
  values ('OR', 2, 1, INSPECT_ID, INSPECT_ORANAME, 1);
insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
  values ('OR', 3, 2, INSPECT_ID, INSPECT_ORANAME, 1);
insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
  values ('OR', 1, 2, INSPECT_ID, INSPECT_ORANAME, 1);
insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
  values ('OR', 2, 3, INSPECT_ID, INSPECT_ORANAME, 1);

commit;

END;
/
16.01.2015 18:32
Aligator
 
Цитата:
vdm Добавить доп. свойство клиентов, идентификатор Order_MX, с единственным значением 'Да'.
На нужных контрагентах выставить его.
Для нужных должностей включить проверку.

Код примерно такой
Шикарно, все работает, огромное спасибо.
19.01.2015 17:05
Aligator
 
Дополнение.
В заказах работает прекрасно, но есть одна мелочь.
На этих запрещенных поставщиков невозможно магазину принять приходные накладные, по причине того что приход не может перевести заказ с розовой галки в зеленую... возможно ли такую проверку дописать?
19.01.2015 18:08
Mtirt
 
Сообщение об ошибке какое? Полностью?
19.01.2015 18:14
Aligator
 
Цитата:
Mtirt Сообщение об ошибке какое? Полностью?
Такое же как и на заказе проверка 1101:
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1419.png
Просмотров: 629
Размер:	23.4 Кб
ID:	4301  
19.01.2015 18:58
vdm
 
В принципе можно и отследить, автоматически по приходу заказ в зеленую повышается или просто вручную. Например "если связанный приход в данный момент заблокирован тем-же пользователем, под которым повышается статус заказа".
Но м.б. проще будет убрать из проверки статус 2-3?
20.01.2015 18:02
Aligator
 
Да, походу так и ограничусь...уберу с проверки переход со 2-го в 3-й статус, нечего мудрить..
Часовой пояс GMT +3, время: 17:20.

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