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);