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

Код:
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
 
AND sc.tree in (...)

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


Опции темы



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

Все в прочитанное - Донат - RSS - - Карта - Вверх

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