[ОТВЕТИТЬ]
Опции темы
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;
/
 
"Спасибо" vdm от:
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
Просмотров: 338
Размер:	23.4 Кб
ID:	4301  
 
19.01.2015 18:58  
vdm
В принципе можно и отследить, автоматически по приходу заказ в зеленую повышается или просто вручную. Например "если связанный приход в данный момент заблокирован тем-же пользователем, под которым повышается статус заказа".
Но м.б. проще будет убрать из проверки статус 2-3?
 
"Спасибо" vdm от:
20.01.2015 18:02  
Aligator
Да, походу так и ограничусь...уберу с проверки переход со 2-го в 3-й статус, нечего мудрить..
 
 


Опции темы



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

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