Цитата: konst ➤ Получилось проверку сделать?
если ДА - то выложите код - может кому пригодится.
если НЕТ - то давайте сделаем вместе.
Пытаюсь создать запрет на проведение накладной если
- реквизит № с/ф не заполнен.
- контрагент поставщик является плательщиком НДС.
231 Контроль параметров счета-фактуры и накладной поставщика - не подходит так как срабатывает не зависимо от тогда является ли поставщик плательщиком НДС или нет.
Ниже пример запроса при срабатывании которого у пользователя должен появляться запрет:
SELECT * from SMWayBillsIn where id='M220000035339';
SELECT case WHEN CLI.VATPAYER=1 THEN 'С НДС' ELSE 'Без НДС' END NDS from SMWayBillsIn tabdoc, SMDOCUMENTS doc, SMCLIENTINFO CLI
where DOC.id='M220000035339'
and DOC.id= TABDOC.ID
and DOC.DOCTYPE='WI'
and doc.DOCTYPE=TABDOC.DOCTYPE
and DOC.CLIENTINDEX=CLI.ID
and TABDOC.SUPPLIERINVOICE is null
and CLI.VATPAYER=1
;
А вот дальше я завис. Пишем процедуру по примеру выше.
CREATE OR REPLACE
PROCEDURE A_RS_HDS_DOC_SF(
INDOCTYPE IN SMDOCUMENTS.DOCTYPE%TYPE
, INDOCID IN SMDOCUMENTS.ID%TYPE
, INDOCCL IN SMDOCUMENTS.CLIENTINDEX%TYPE
, CLID IN SMCLIENTINFO.ID%TYPE
, CLNDS IN SMCLIENTINFO.VATPAYER%TYPE
, DOCRECVSF IN SMWayBillsIn.SUPPLIERINVOICE%TYPE
, DOCRECVTYPE IN SMWayBillsIn.DOCTYPE%TYPE
, DOCRECVID IN SMWayBillsIn.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) ---??? вот эта часть кода и как она работает мне не понятна. Т.е. видимо здесь
--- нужно описать Update с попыткой записать приход без корректной с/ф. Пробовал но ничего не произошло. На сколько обязательно обращение к package?
SELECT 901, 0, '901', 'Запрещено проводить приход по плательщику НДС без заполнения с/Ф'
from SMWayBillsIn tabdoc, SMDOCUMENTS doc, SMCLIENTINFO CLI
where
DOC.id= INDOCID
and DOC.DOCTYPE= INDOCTYPE
and DOC.CLIENTINDEX= INDOCCL
and CLI.ID= CLID
and DOC.id= TABDOC.ID
and DOC.DOCTYPE='WI'
and doc.DOCTYPE=TABDOC.DOCTYPE
and DOC.CLIENTINDEX=CLI.ID
and TABDOC.SUPPLIERINVOICE is null
and CLI.VATPAYER=1
and not exists (select 1
from smcommonbases b
where b.doctype = DOC.doctype and b.id=DOC.id and b.basedoctype = 'WI'
)
;
INSPECT.SETFUNCNAME(901);
END A_RS_HDS_DOC_SF;
INSPECT.Onstarttrans; insert into TTINSPECTRESBUFFER (INSPECTID, ERRID, INSPECTNAME, ERRTEXT) ---??? вот эта часть кода и как она работает мне не понятна. Т.е. видимо здесь
--- нужно описать Update с попыткой записать приход без корректной с/ф. Пробовал но ничего не произошло. На сколько обязательно обращение к package?