[ОТВЕТИТЬ]
Опции темы
07.04.2014 18:50  
Aligator
СМ+ 1030.3
Появилась у одного клиента необходимость ограничить в СМ+ переоценку определенному пользователю (либо должности) только по определенной группе (ассортименту) товаров. Иные товарные группы не могут быть переоценены на магазине.
При этом работа с другими разделами (приход, расход...) должна быть по всему классификатору.
Возможно ли как-то выкрутиться в данном вопросе? Может были у кого-то подобные вопросы, интересно мнение.
 
07.04.2014 19:21  
OlegON
Рекомендую дождаться, может, кто-то придумает, как пользоваться штатными средствами, но однозначно можно сделать триггер, чтобы не давал создавать акты с определенным товаром кому-то...
 
08.04.2014 07:16  
Mtirt
Для группы можно поставить максимальную и минимальную переоценку.
Только, скорее всего, она будет действовать для всех должностей в базе, например в базе магазина.
 
08.04.2014 09:31  
Aligator
Цитата:
Сообщение от Mtirt
Для группы можно поставить максимальную и минимальную переоценку.
Только, скорее всего, она будет действовать для всех должностей в базе, например в базе магазина.
Так не пойдет, в БД работают и другие должности, для которых ограничений не должно быть.
 
08.04.2014 10:16  
Mtirt
Обычно такое разделение делается не на уровне пользователей, а на уровне базы данных.
Т.е. всему магазину нельзя переоценять товар, а всему офису - можно.
 
08.04.2014 10:36  
Aligator
Цитата:
Сообщение от Mtirt
Обычно такое разделение делается не на уровне пользователей, а на уровне базы данных.
Т.е. всему магазину нельзя переоценять товар, а всему офису - можно.
Это да, более того можно было бы выкрутиться как-то локальным ценообразованием, но тут задача именно в одной БД сдулать такое разграничение и именно на переоценку.
 
08.04.2014 10:44  
vdm
Подобные "нестандартные" запреты можно делать через нечто среднее между триггером и штатным функционалом. В стантартные проверки супермага добавить свою процедуру, для актов переоценки. Удобно тем, что их можно включить/отключить из адм. модуля для конкретных должностей.
 
08.04.2014 12:28  
Aligator
Цитата:
Сообщение от vdm
Подобные "нестандартные" запреты можно делать через нечто среднее между триггером и штатным функционалом. В стантартные проверки супермага добавить свою процедуру, для актов переоценки. Удобно тем, что их можно включить/отключить из адм. модуля для конкретных должностей.
Ага, осталось походу научиться сие творить в БД, уж стандартные проверки системы уж точно я никогда не ковырял через БД )))
 
08.04.2014 17:14  
vdm
Примерный шаблон. На современных СМ+ не проверено.

Код:
CREATE OR REPLACE PROCEDURE SUPERMAG.USR_INSPECT_1001 (
   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 := 1001;

BEGIN
    INSPECT.ONSTARTTRANS;
   
    INSERT INTO supermag.ttinspectresbuffer
                (inspectid, errid, inspectname, errtext)
    SELECT DISTINCT INSPECT_ID, 0, TO_CHAR(INSPECT_ID),
                    SUBSTR('Запрещено наценивание артикула ' || article || ' в группе ' || tree, 1, 255) 
      FROM ( SELECT s.article, sc.tree
               FROM supermag.smspec s, supermag.smcard с, supermag.sacardclass sc
              WHERE s.doctype=indoctype AND s.docid=indocid AND s.article=c.articler AND c.idclass=sc.id
                AND sc.tree in (...)
           );
  
    INSPECT.SETFUNCNAME(INSPECT_ID);
END USR_INSPECT_1001;
/


-- Добавление процедуры в список супермаговских стандартных проверок 
-- для документов 'AC', при смене статуса в "Принят к исполнению", по умолчанию у всех отключено
DECLARE
  INSPECT_ID       supermag.ssinspectfunc.id%TYPE := 1001;
  INSPECT_NAME     supermag.ssinspectfunc.name%TYPE := 'Пользовательская проверка 1001';
  INSPECT_ORANAME  supermag.ssinspectdoc.inspectoraname%TYPE := 'SUPERMAG.USR_INSPECT_1001';
  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 ('AC', 2, 1, INSPECT_ID, INSPECT_ORANAME, 1);

commit;

END;
/
 
"Спасибо" vdm от:
08.04.2014 17:30  
Aligator
AND sc.tree in (...)

а здесь в скобках через запятую нужно перечислить все группы, в которых запрещено или разрешено наценивать товары?
 
 


Опции темы



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

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