[ОТВЕТИТЬ]
16.01.2015 10:46
Aligator
 
Цитата:
vdm Примерный шаблон. На современных СМ+ не проверено.
Подскажите пожалуйста кто сможет, есть необходимость еще одной проверки, вполне возможно что интересно будет многим:

Как организовать заказы поставщикам в разрезе определенных контрагентов. Необходимо чтоб операторы делали заказы только по определенным поставщикам.
Появилась такая потребность из-за случаев, когда ЦО формирует заказы, и магазин может повторно в этот же промежуток времени сформировать.

Вариант работы со списком поставщиков не подойдет, потому как в этом случае ограничит во всех режимах, а необходимо только по формированию документа заказа.
16.01.2015 11:10
konst
 
у меня в поле "контракт" (название контракта) два первых символа обозначают кто делает по ним заказы:
"CO - кондитерка" - заказы делают в офисе
"MX - колбаса " - в магазине.
персонал обучен, на чужую территорию не лезет
также использую их при формировании отчетов...
16.01.2015 12:40
vdm
 
Если абсолютно весь товар по некоторым поставщикам должен заказываться только в ЦО или только в магазине - ну можно повесить доп. свойство на этих контрагентов и добавить проверку.
Если есть еще деление по ассортименту (это можно в ЦО, это в магазине), то нужно привязываться к контрактам.
16.01.2015 12:49
Mtirt
 
А можно разъяснить фразу "привязываться к контрактам"?
В моем понимании, внешне контракт из офиса и контракт для магазина ничем не отличаются...
16.01.2015 13:26
vdm
 
Ну контрагент тоже и в офисе и в магазине одинаковый.
Просто если делать свою проверку, то в ней можно определить, в ЦО она выполняется или нет (функция Office.IsCentralDatabase='1'), а дальше уже решать что можно и нельзя.
16.01.2015 13:42
Mtirt
 
Так проверка к должности привязывается.
Нет необходимости в проверке проверять офис или нет.
Вопрос, как разделить офисные и магазинные контракты. Метку добавить?
16.01.2015 14:25
vdm
 
Хорошо, пусть по должностям.
Можно метку, обязательную, будет примерно как у konst.
16.01.2015 15:25
Aligator
 
Цитата:
vdm Ну контрагент тоже и в офисе и в магазине одинаковый.
Просто если делать свою проверку, то в ней можно определить, в ЦО она выполняется или нет (функция Office.IsCentralDatabase='1'), а дальше уже решать что можно и нельзя.
Так вопрос в том, что в магазине разрешено создавать заказы к примеру только от 3-х контрагентов, заказы от остальных поставщиков есть только на чтение.
А на офисе в свою очередь разрешено делать все..
16.01.2015 15:58
vdm
 
Ну если деление только по контрагентам, без углубления в товары, то вешай доп. свойство типа "Разрешен заказ в магазине [Да/Нет]" и проверяй smclientproperties.
16.01.2015 16:25
Aligator
 
Цитата:
vdm Ну если деление только по контрагентам, без углубления в товары, то вешай доп. свойство типа "Разрешен заказ в магазине [Да/Нет]" и проверяй smclientproperties.
Доп свойство у клиентов?
Как такую проверку организовать?
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
Просмотров: 358
Размер:	23.4 Кб
ID:	4301  
19.01.2015 18:58
vdm
 
В принципе можно и отследить, автоматически по приходу заказ в зеленую повышается или просто вручную. Например "если связанный приход в данный момент заблокирован тем-же пользователем, под которым повышается статус заказа".
Но м.б. проще будет убрать из проверки статус 2-3?
20.01.2015 18:02
Aligator
 
Да, походу так и ограничусь...уберу с проверки переход со 2-го в 3-й статус, нечего мудрить..
Опции темы


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

 

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