14.06.2019 13:13
АндрейСупермаг
 
Итого. Создал проверку на наличие МРЦ при проведении прихода по конкретной группе товара (код ниже).
Плюс обнаружил в см запрет №20 "Контроль наличия минимальной цены для алкогольного товара" который действует при проведении акта переоценки и проверяет
наличие МРЦ у карт в которых в закладке Классификация код алк является алкогольным.
Оба решения блокируют только отсутствие МРЦ но не проверяют его корректность поэтому буду смотреть в сторону варианта предложенного FinSoft/



CREATE OR REPLACE
PROCEDURE A_RS_WI_DOC_MRC(
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

--Запрет создан отделом РЦ по запросу генерального директора и акцизного отдела
BEGIN
----
INSPECT.Onstarttrans;
insert into TTINSPECTRESBUFFER (INSPECTID, ERRID, INSPECTNAME, ERRTEXT)

SELECT 904, 0, '904', 'Запрещено проводить алкогольный товар без мин. цены. Артикул'||PEC.ARTICLE||' строка '||PEC.SPECITEM||'!'
from SMDOCUMENTS doc, smcard cms,SACARDCLASS gru, SMSPEC PEC
left JOIN (select CEN.ARTICLE, CEN.PRICETYPE, CEN.MINPRICE
from SMExtraCharge cen, SMDOCUMENTS doc, SMLocPrices PRICELOC
where DOC.DOCTYPE=INDOCTYPE
and DOC.id=INDOCID
and PRICELOC.LOCID = doc.LOCATIONTO
and PRICELOC.FLAGS=2
and PRICELOC.PRICETYPE=CEN.PRICETYPE
) CEN2 on (PEC.ARTICLE=cen2.ARTICLE)
where
DOC.id= INDOCID
and DOC.DOCTYPE= INDOCTYPE
and PEC.DOCID=DOC.ID
and PEC.DOCTYPE='WI'
and CMS.ARTICLE=PEC.ARTICLE
and CMS.IDCLASS=GRU.ID
and GRU.tree > '9.1' and GRU.tree < '9.5'
AND CEN2.MINPRICE is null
and not exists (select 1
from smcommonbases b
where b.doctype = DOC.doctype and b.id=DOC.id and b.basedoctype = 'WI'
)
;

INSPECT.SETFUNCNAME(904);
END A_RS_WI_DOC_MRC;


insert into ssinspectfunc (id,name,definspectmode)
values (904, 'Запрет отсут-я МРЦ по алкоголю', 2);


insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
values('WI', 2, 1, 904, 'A_RS_WI_DOC_MRC', 1);
14.06.2019 13:25
Ferus
 
Цитата:
АндрейСупермаг Писал проверку - процедуру на документы (все работает). А вот процедуру для контроля номенклатуры сам не осилю. Сможете часть своего кода по контролю фиксированной цены положить сюда? Буду очень благодарен да и остальным пользователям будет полезно получить готовое решение.
Если нет наценок на артикул, устанавливает галку фиксированная цена

Пакет:

SQL код:
CREATE OR REPLACE PACKAGE supermag.PKG_FIXART IS
    type t_emp is table of varchar2
(50index by binary_integer;
    
PROCEDURE FIXARTChange;
END PKG_FIXART;
/


CREATE OR REPLACE PACKAGE BODY supermag.PKG_FIXART
IS
PROCEDURE FIXARTChange
AS
      
v_emp PKG_FIXART.t_emp;
      
LCalc number;
BEGIN
       Select ARTICLE BULK COLLECT into v_emp from
                    
(Select C.ARTICLEDECODE(
                                    
EC.EXTRACHARGE,
                                    
null
                                    (
Select Supermag.SMGetExtraChargeClass(C.ARTICLE,3from dual),EC.EXTRACHARGEProc
                    from 
                        SUPERMAG
.SMEXTRACHARGE ec
                        
supermag.smcard C
                    where
                    EC
.ARTICLE(+)=C.ARTICLE and bitand(C.Flags,power(2,5))=and (decodeEC.PRICETYPE,null,3,EC.PRICETYPE))=3ProcNone
                    where ProcNone
.Proc=and ProcNone.article!='0';
        if 
v_emp.count !=0 then
            execute immediate 
'ALTER TRIGGER supermag.SMCardCheckAuxRoles DISABLE';
            FOR 
Lcntr IN 1..v_emp.count
            LOOP
                update  supermag
.smcard 
                set Flags 
Flags+power(2,5)
                
where article = (v_emp(Lcntr));
           
commit;
            -- 
если нужна рассылка 
        
-- Supermag.SMAutoPostCard(v_emp(Lcntr)); 
            --
dbms_output.put_line(v_emp(Lcntr));
            
END LOOP;
            
execute immediate 'ALTER TRIGGER supermag.SMCardCheckAuxRoles ENABLE';
       
end if;

END FIXARTChange;
END PKG_FIXART
В таблицу SSCONTROLFUNCTIONS добавляем задание
SQL код:
begin
SUPERMAG
.PKG_FIXART.FIXARTCHANGE;
end;



Ну а дальше собственно все управление через административный модуль
15.06.2019 04:44
АндрейСупермаг
 
Ferus спасибо большое, буду осваивать. Есть очень много запретов которые нужно сделать не привязываясь к документам. Теперь при наличии примера смогу осилить задачу )

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