forked from CITKParus/P8-ExchangeService
Реализованы процедуры обмена для позиций ведомостей инвентаризации (GETSHEETITEMS), мест хранения (GETSTORAGES), импорта данных инвентаризации (SAVESHEETITEM). Сервисные процедуры: поиска структурной части адреса, формирования ответа с ошибкой
This commit is contained in:
parent
75f02e4528
commit
64c97fd00d
@ -1,5 +1,12 @@
|
||||
create or replace package UDO_PKG_EXS_INV as
|
||||
|
||||
/* Ñ÷èòûâàíèå çíà÷åíèÿ ñòðóêòóðíîãî ýëåìåíòà èç èåðàðõèè àäðåñà ãåîãðàôè÷åñêîãî ïîíÿòèÿ */
|
||||
function UTL_GEOGRAFY_GET_HIER_ITEM
|
||||
(
|
||||
NGEOGRAFY in number, -- Ðåãèñòðàöèîííûé íîìåð ãåîãðàôè÷åñêîãî ïîíÿòèÿ
|
||||
NGEOGRTYPE in number -- Òèï èñêîìîãî ñòðóêòóðíîãî ýëåìåíòà àäðåñà (1 - ñòðàíà, 2 - ðåãèîí, 3 - ðàéîí, 4 - íàñåëåííûé ïóíêò, 5 - óëèöà, 6 - àäìèíèñòðàòèâíûé îêðóã, 7 - ìóíèöèïàëüíûé îêðóã, 8 - ãîðîä, 9 - óðîâåíü âíóòðèãîðîäñêîé òåððèòîðèè, 10 - óðîâåíü äîïîëíèòåëüíûõ òåððèòîðèé, 11 - óðîâåíü ïîä÷èíåííûõ äîïîëíèòåëüíûì òåððèòîðèÿì îáúåêòîâ)
|
||||
) return varchar2; -- Íàèìåíîâàíèå íàéäåííîãî ñòóêòóðíîãî ýëåìåíòà àäðåñà
|
||||
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - àóòåíòèôèêàöèÿ */
|
||||
procedure CHECKAUTH
|
||||
(
|
||||
@ -47,7 +54,14 @@ create or replace package UDO_PKG_EXS_INV as
|
||||
(
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
);
|
||||
);
|
||||
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè (ÄÅÌÎ, óáðàòü!!!!) */
|
||||
procedure SAVESHEETITEM_TMP
|
||||
(
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
);
|
||||
|
||||
end;
|
||||
/
|
||||
@ -59,6 +73,9 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
SGETUSERSRESPONSE constant varchar2(40) := 'GetUsersResponse';
|
||||
SGETSHEETTYPESRESPONSE constant varchar2(40) := 'GetSheetTypesResponse';
|
||||
SGETSHEETSRESPONSE constant varchar2(40) := 'GetSheetsResponse';
|
||||
SGETSTORAGESRESPONSE constant varchar2(40) := 'GetStoragesResponse';
|
||||
SGETSHEETITEMSRESPONSE constant varchar2(40) := 'GetSheetItemsResponse';
|
||||
SSAVESHEETITEMRESPONSE constant varchar2(40) := 'SaveSheetItemResponse';
|
||||
SDEVICEID constant varchar2(40) := 'DeviceID';
|
||||
SRESULT constant varchar2(40) := 'Result';
|
||||
SSOAPENV constant varchar2(40) := 'soapenv';
|
||||
@ -71,8 +88,46 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
STYPECODE constant varchar2(40) := 'TypeCode';
|
||||
SPREFIX constant varchar2(40) := 'Prefix';
|
||||
SNUMBER constant varchar2(40) := 'Number';
|
||||
SDATE constant varchar2(40) := 'Date';
|
||||
|
||||
SDATE constant varchar2(40) := 'Date';
|
||||
SSHEETCODE constant varchar2(40) := 'SheetCode';
|
||||
SMNEMOCODE constant varchar2(40) := 'MnemoCode';
|
||||
SLATITUDE constant varchar2(40) := 'Latitude';
|
||||
SLONGITUDE constant varchar2(40) := 'Longitude';
|
||||
SPOSTCODE constant varchar2(40) := 'Postcode';
|
||||
SCOUNTRY constant varchar2(40) := 'Country';
|
||||
SREGION constant varchar2(40) := 'Region';
|
||||
SLOCALITY constant varchar2(40) := 'Locality';
|
||||
SSTREET constant varchar2(40) := 'Street';
|
||||
SHOUSENUMBER constant varchar2(40) := 'HouseNumber';
|
||||
SSTORAGEMNEMOCODE constant varchar2(40) := 'StorageMnemoCode';
|
||||
SUSERCODE constant varchar2(40) := 'UserCode';
|
||||
SITEMCODE constant varchar2(40) := 'ItemCode';
|
||||
SITEMNAME constant varchar2(40) := 'ItemName';
|
||||
SITEMMNEMOCODE constant varchar2(40) := 'ItemMnemoCode';
|
||||
SITEMNUMBER constant varchar2(40) := 'ItemNumber';
|
||||
SQUANTITY constant varchar2(40) := 'Quantity';
|
||||
SSTORAGEISNEW constant varchar2(40) := 'StorageIsNew';
|
||||
SSTORAGECODE constant varchar2(40) := 'StorageCode';
|
||||
SSTORAGENAME constant varchar2(40) := 'StorageName';
|
||||
SSTORAGEPOSTCODE constant varchar2(40) := 'StoragePostcode';
|
||||
SSTORAGECOUNTRY constant varchar2(40) := 'StorageCountry';
|
||||
SSTORAGEREGION constant varchar2(40) := 'StorageRegion';
|
||||
SSTORAGELOCALITY constant varchar2(40) := 'StorageLocality';
|
||||
SSTORAGESTREET constant varchar2(40) := 'StorageStreet';
|
||||
SSTORAGEHOUSENUMBER constant varchar2(40) := 'StorageHouseNumber';
|
||||
SSTORAGELATITUDE constant varchar2(40) := 'StorageLatitude';
|
||||
SSTORAGELONGITUDE constant varchar2(40) := 'StorageLongitude';
|
||||
SCHECKDATE constant varchar2(40) := 'CheckDate';
|
||||
SCOMMENT constant varchar2(40) := 'Comment';
|
||||
SDISTANCETOSTORAGE constant varchar2(40) := 'DistanceToStorage';
|
||||
SFLOOR constant varchar2(40) := 'Floor';
|
||||
SROOM constant varchar2(40) := 'Room';
|
||||
SRACK constant varchar2(40) := 'Rack';
|
||||
SFAULT constant varchar2(40) := 'Fault';
|
||||
SDETAIL constant varchar2(40) := 'detail';
|
||||
SMESSAGE constant varchar2(40) := 'Message';
|
||||
SERRORMESSAGE constant varchar2(40) := 'ErrorMessage';
|
||||
|
||||
/* Ñîçäàíèå âåòêè XML */
|
||||
function UTL_CREATENODE
|
||||
(
|
||||
@ -154,12 +209,12 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
XCONTENT in DBMS_XMLDOM.DOMNODE -- Íàèìåíîâàíèå òýãà ñ îòïðàâëÿåìûì êîíòåíòîì
|
||||
) return clob -- Ðåçóëüòàò ðàáîòû
|
||||
is
|
||||
XMAIN_NODE DBMS_XMLDOM.DOMNODE;
|
||||
XENVELOPE_EL DBMS_XMLDOM.DOMELEMENT;
|
||||
XENVELOPE DBMS_XMLDOM.DOMNODE;
|
||||
XHEADER DBMS_XMLDOM.DOMNODE;
|
||||
XBODY DBMS_XMLDOM.DOMNODE;
|
||||
XNODE DBMS_XMLDOM.DOMNODE;
|
||||
XMAIN_NODE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò äîêóìåíòà
|
||||
XENVELOPE_EL DBMS_XMLDOM.DOMELEMENT; -- Ýëåìåíò äëÿ îá¸ðòêè îòâåòà
|
||||
XENVELOPE DBMS_XMLDOM.DOMNODE; -- Îá¸ðòêà îòâåòà
|
||||
XHEADER DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò äëÿ çàãîëîâîêà îòâåòà
|
||||
XBODY DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò äëÿ òåëà îòâåòà
|
||||
XNODE DBMS_XMLDOM.DOMNODE; -- Òåêóùèé ýëåìåíò äîêóìåíòà
|
||||
CDATA clob; -- Áóôåð äëÿ ðåçóëüòàòà
|
||||
begin
|
||||
/* Ïîäãîòîâèì äîêóìåíò */
|
||||
@ -189,6 +244,59 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
/* Âåðíåì ðåçóëüòàò */
|
||||
return CDATA;
|
||||
end UTL_CREATERESPONSE;
|
||||
|
||||
/* Ôîðìèðîâàíèå îòâåòà ñ îøèáêîé */
|
||||
function UTL_CREATEERRORRESPONSE
|
||||
(
|
||||
XDOC in DBMS_XMLDOM.DOMDOCUMENT, -- Äîêóìåíò
|
||||
SMSG in varchar2 -- Ñîîáùåíèå îá îøèáêå
|
||||
) return clob -- Ðåçóëüòàò ðàáîòû
|
||||
is
|
||||
XFAULT DBMS_XMLDOM.DOMNODE; --
|
||||
XDETAIL DBMS_XMLDOM.DOMNODE; --
|
||||
XERRMSG DBMS_XMLDOM.DOMNODE; --
|
||||
XMSG DBMS_XMLDOM.DOMNODE; --
|
||||
XNODE DBMS_XMLDOM.DOMNODE; --
|
||||
CDATA clob; -- Áóôåð äëÿ ðåçóëüòàòà
|
||||
begin
|
||||
/* Ñîáèðàåì îøèáêó â îòâåò */
|
||||
XFAULT := UTL_CREATENODE(XDOC => XDOC, STAG => SFAULT, SNS => SSOAPENV);
|
||||
XDETAIL := UTL_CREATENODE(XDOC => XDOC, STAG => SDETAIL);
|
||||
XERRMSG := UTL_CREATENODE(XDOC => XDOC, STAG => SERRORMESSAGE, SNS => STSD);
|
||||
XMSG := UTL_CREATENODE(XDOC => XDOC, STAG => SMESSAGE, SNS => STSD, SVAL => SMSG);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XERRMSG, NEWCHILD => XMSG);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XDETAIL, NEWCHILD => XERRMSG);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XFAULT, NEWCHILD => XDETAIL);
|
||||
CDATA := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XFAULT);
|
||||
/* Âîçâðàùàåì ðåçóëüòàò */
|
||||
return CDATA;
|
||||
end UTL_CREATEERRORRESPONSE;
|
||||
|
||||
|
||||
/* Ñ÷èòûâàíèå çíà÷åíèÿ ñòðóêòóðíîãî ýëåìåíòà èç èåðàðõèè àäðåñà ãåîãðàôè÷åñêîãî ïîíÿòèÿ */
|
||||
function UTL_GEOGRAFY_GET_HIER_ITEM
|
||||
(
|
||||
NGEOGRAFY in number, -- Ðåãèñòðàöèîííûé íîìåð ãåîãðàôè÷åñêîãî ïîíÿòèÿ
|
||||
NGEOGRTYPE in number -- Òèï èñêîìîãî ñòðóêòóðíîãî ýëåìåíòà àäðåñà (1 - ñòðàíà, 2 - ðåãèîí, 3 - ðàéîí, 4 - íàñåëåííûé ïóíêò, 5 - óëèöà, 6 - àäìèíèñòðàòèâíûé îêðóã, 7 - ìóíèöèïàëüíûé îêðóã, 8 - ãîðîä, 9 - óðîâåíü âíóòðèãîðîäñêîé òåððèòîðèè, 10 - óðîâåíü äîïîëíèòåëüíûõ òåððèòîðèé, 11 - óðîâåíü ïîä÷èíåííûõ äîïîëíèòåëüíûì òåððèòîðèÿì îáúåêòîâ)
|
||||
) return varchar2 -- Íàèìåíîâàíèå íàéäåííîãî ñòóêòóðíîãî ýëåìåíòà àäðåñà
|
||||
is
|
||||
SRES PKG_STD.TSTRING; -- Ðåçóëüòàò ðàáîòû
|
||||
begin
|
||||
/* Îáõîäèì àäðåñ ñíèçó ââåðõ */
|
||||
for REC in (select G.GEOGRNAME,
|
||||
G.GEOGRTYPE
|
||||
from GEOGRAFY G
|
||||
connect by prior G.PRN = G.RN
|
||||
start with G.RN = NGEOGRAFY)
|
||||
loop
|
||||
if (REC.GEOGRTYPE = NGEOGRTYPE) then
|
||||
SRES := REC.GEOGRNAME;
|
||||
exit;
|
||||
end if;
|
||||
end loop;
|
||||
/* Âåðí¸ì ðåçóëüòàò */
|
||||
return SRES;
|
||||
end UTL_GEOGRAFY_GET_HIER_ITEM;
|
||||
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - àóòåíòèôèêàöèÿ */
|
||||
procedure CHECKAUTH
|
||||
@ -209,7 +317,7 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
||||
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||
begin
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
@ -275,7 +383,7 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
||||
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||
begin
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
@ -355,7 +463,7 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
||||
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||
begin
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
@ -385,7 +493,7 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
if (SREQDEVICEID is not null) then
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XGETSHEETTYPESRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSHEETTYPESRESPONSE, SNS => STSD);
|
||||
/* Обходим типы документов связанные с разделом "Электронные инвенторизации" */
|
||||
/* Îáõîäèì òèïû äîêóìåíòîâ ñâÿçàííûå ñ ðàçäåëîì "Ýëåêòðîííûå èíâåíòàðèçàöèè" */
|
||||
for REC in (select T.RN,
|
||||
T.DOCCODE
|
||||
from DOCTYPES T,
|
||||
@ -419,8 +527,8 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå çàãîëîâêîâ âåäîìîñòåé èíâåíòàðèçàöèè */
|
||||
procedure GETSHEETS
|
||||
(
|
||||
NIDENT in number, -- Идентификатор процесса
|
||||
NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
)
|
||||
is
|
||||
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||
@ -441,11 +549,11 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
||||
NREQTYPECODE number(17); -- Тип ведомости из запроса (параметр отбора)
|
||||
SREQPREFIX varchar2(30); -- Префикс ведомости из запроса (параметр отбора)
|
||||
SREQNUMBER varchar2(30); -- Номер ведомости из запроса (параметр отбора)
|
||||
DREQDATE date; -- Дата ведомости из запроса (параметр отбора)
|
||||
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||
NREQTYPECODE PKG_STD.TREF; -- Òèï âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||
SREQPREFIX PKG_STD.TSTRING; -- Ïðåôèêñ âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||
SREQNUMBER PKG_STD.TSTRING; -- Íîìåð âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||
DREQDATE PKG_STD.TLDATE; -- Äàòà âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||
begin
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
@ -483,7 +591,7 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
if (SREQDEVICEID is not null) then
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XGETSHEETSRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSHEETSRESPONSE, SNS => STSD);
|
||||
/* Обходим типы документов связанные с разделом "Электронные инвенторизации" */
|
||||
/* Îáõîäèì çàïèñè ðàçäåëà "Ýëåêòðîííûå èíâåíòàðèçàöèè" óäîâëåòâîðÿþùèå óñëîâèÿì îòáîðà */
|
||||
for REC in (select T.RN,
|
||||
T.DOC_TYPE,
|
||||
DT.DOCCODE as DOC_TYPE_CODE,
|
||||
@ -538,35 +646,523 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ñîñòàâà âåäîìîñòåé èíâåíòàðèçàöèè */
|
||||
procedure GETSHEETITEMS
|
||||
(
|
||||
NIDENT in number, -- Идентификатор процесса
|
||||
NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
)
|
||||
is
|
||||
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||
XGETSHEETITEMSRESPONSE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò îòâåòà
|
||||
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ âåòêè îòâåòà
|
||||
XITEM DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò îòâåòíîãî ñïèñêà
|
||||
XSTORAGEMNEMOCODE DBMS_XMLDOM.DOMNODE; -- Ìíåìîêîä ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XUSERCODE DBMS_XMLDOM.DOMNODE; -- ÌÎË äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XITEMCODE DBMS_XMLDOM.DOMNODE; -- Èäåíòèôèêàòîð ÎÑ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XITEMNAME DBMS_XMLDOM.DOMNODE; -- Íàèìåíîâàíèå ÎÑ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XITEMMNEMOCODE DBMS_XMLDOM.DOMNODE; -- Êîä ÎÑ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XITEMNUMBER DBMS_XMLDOM.DOMNODE; -- Íîìåð ÎÑ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XQUANTITY DBMS_XMLDOM.DOMNODE; -- Êîëè÷åñòâî ÎÑ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XDOC DBMS_XMLDOM.DOMDOCUMENT; -- Äîêóìåíò
|
||||
XMLPARCER DBMS_XMLPARSER.PARSER; -- Ïàðñåð
|
||||
XENVELOPE DBMS_XMLDOM.DOMNODE; -- Êîíâåðò
|
||||
XBODY DBMS_XMLDOM.DOMNODE; -- Òåëî äîêóìåíòà
|
||||
XNODELIST DBMS_XMLDOM.DOMNODELIST; -- Âåòêè òåëà äîêóìåíòà
|
||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||
NREQSHEETCODE PKG_STD.TREF; -- Âåäîìîñòü èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||
begin
|
||||
null;
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
/* Âîçüìåì òåêñò çàïðîñà */
|
||||
CREQ := BLOB2CLOB(LBDATA => REXSQUEUE.MSG);
|
||||
/* Ñîçäàåì èíñòàíñ XML ïàðñåðà */
|
||||
XMLPARCER := DBMS_XMLPARSER.NEWPARSER;
|
||||
/* Ðàçáèðàåì XML èç çàïðîñà */
|
||||
DBMS_XMLPARSER.PARSECLOB(P => XMLPARCER, DOC => CREQ);
|
||||
/* Áåðåì XML äîêóìåíò èç ðàçîáðàííîãî */
|
||||
XDOC := DBMS_XMLPARSER.GETDOCUMENT(P => XMLPARCER);
|
||||
/* Ñ÷èòûâàåì êîðíåâîé ýëåìåíò */
|
||||
XENVELOPE := DBMS_XMLDOM.MAKENODE(ELEM => DBMS_XMLDOM.GETDOCUMENTELEMENT(DOC => XDOC));
|
||||
/* Ñ÷èòûâàåì ýëåìåíò òåëî */
|
||||
XBODY := DBMS_XSLPROCESSOR.SELECTSINGLENODE(N => XENVELOPE, PATTERN => SBODY);
|
||||
/* Ñ÷èòûâàåì äî÷åðíèå ýëåìåíòû òåëà */
|
||||
XNODELIST := DBMS_XMLDOM.GETCHILDNODES(N => XBODY);
|
||||
/* Áåðåì ïåðâûé äî÷åðíèé ýëåìåíò */
|
||||
XNODE_ROOT := DBMS_XMLDOM.ITEM(NL => XNODELIST, IDX => 0);
|
||||
/* Ñ÷èòûâàåì èäåíòèôèêàòîð óñòðîéñòâà */
|
||||
SREQDEVICEID := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SDEVICEID);
|
||||
/* Ñ÷èòûâàåì "Ðåãèñòðàöèîííûé íîìåð âåäîìîñòè" (ïàðàìåòð îòáîðà) */
|
||||
NREQSHEETCODE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSHEETCODE));
|
||||
/* Êîíòðîëü èíäåòèôèêàòîðà óñòðîéñòâà ïî ëèöåíçèè */
|
||||
/* UTL_CHECK_DEVICEID(SDEVICEID => SREQDEVICEID); */
|
||||
/* Ïîäãîòàâëèâàåì äîêóìåíò äëÿ îòâåòà */
|
||||
UTL_CREATERESPONSEDOC(XDOC => XDOC);
|
||||
/* Âìåñòî ïðîâåðêè ïî ëèöåíçèè - ïîêà ïðîñòî ïðîâåðêà íà òî, ÷òî èäåíòèôèêàòîð óñòðîéñòâà áûë ïåðåäàí */
|
||||
if (SREQDEVICEID is not null) then
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XGETSHEETITEMSRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSHEETITEMSRESPONSE, SNS => STSD);
|
||||
/* Îáõîäèì òèïû äîêóìåíòîâ ñâÿçàííûå ñ ðàçäåëîì "Ýëåêòðîííûå èíâåíòàðèçàöèè" */
|
||||
for REC in (select DECODE(T.INVPACK, null, O.PLACE_MNEMO, OP.PLACE_MNEMO) SSTORAGEMNEMOCODE,
|
||||
DECODE(T.INVPACK, null, O.BARCODE, OP.BARCODE) SOBARCODE,
|
||||
T.INVPERSONS NINVPERSONS,
|
||||
DECODE(PS.RN,
|
||||
null,
|
||||
DECODE(T.INVPACK, null, DECODE(T.INVSUBST, null, I.BARCODE, U.BARCODE), P.BARCODE),
|
||||
PS.BARCODE) SIBARCODE,
|
||||
N1.NOMEN_CODE SNOM_CODE,
|
||||
N1.NOMEN_NAME SNOM_NAME,
|
||||
I.INV_NUMBER SINV_NUMBER,
|
||||
'1' SQUANTITY
|
||||
from ELINVOBJECT T,
|
||||
INVENTORY I,
|
||||
DICPLACE O,
|
||||
DICPLACE OP,
|
||||
INVPACK P,
|
||||
INVPACKPOS PS,
|
||||
INVSUBST U,
|
||||
DICNOMNS N1
|
||||
where T.COMPANY = 136018
|
||||
and T.PRN = NREQSHEETCODE
|
||||
and T.INVENTORY = I.RN
|
||||
and I.OBJECT_PLACE = O.RN(+)
|
||||
and T.INVPACK = P.RN(+)
|
||||
and P.OBJECT_PLACE = OP.RN(+)
|
||||
and T.INVPACK = PS.PRN(+)
|
||||
and T.INVSUBST = PS.INVSUBST(+)
|
||||
and T.INVSUBST = U.RN(+)
|
||||
and I.NOMENCLATURE = N1.RN)
|
||||
loop
|
||||
/* Ñîáèðàåì èíôîðìàöèþ ïî ýëåìåíòàì âåäîìîñòè â îòâåò */
|
||||
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => SITEM, SNS => STSD);
|
||||
XSTORAGEMNEMOCODE := UTL_CREATENODE(XDOC => XDOC,
|
||||
STAG => SSTORAGEMNEMOCODE,
|
||||
SNS => STSD,
|
||||
SVAL => REC.SSTORAGEMNEMOCODE);
|
||||
XUSERCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SUSERCODE, SNS => STSD, SVAL => trim(REC.NINVPERSONS));
|
||||
XITEMCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SITEMCODE, SNS => STSD, SVAL => trim(REC.SIBARCODE));
|
||||
XITEMNAME := UTL_CREATENODE(XDOC => XDOC, STAG => SITEMNAME, SNS => STSD, SVAL => trim(REC.SNOM_NAME));
|
||||
XITEMMNEMOCODE := UTL_CREATENODE(XDOC => XDOC,
|
||||
STAG => SITEMMNEMOCODE,
|
||||
SNS => STSD,
|
||||
SVAL => trim(REC.SNOM_CODE));
|
||||
XITEMNUMBER := UTL_CREATENODE(XDOC => XDOC,
|
||||
STAG => SITEMNUMBER,
|
||||
SNS => STSD,
|
||||
SVAL => trim(REC.SINV_NUMBER));
|
||||
XQUANTITY := UTL_CREATENODE(XDOC => XDOC, STAG => SQUANTITY, SNS => STSD, SVAL => REC.SQUANTITY);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XSTORAGEMNEMOCODE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XUSERCODE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XITEMCODE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XITEMNAME);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XITEMMNEMOCODE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XITEMNUMBER);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XQUANTITY);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XGETSHEETITEMSRESPONSE, NEWCHILD => XITEM);
|
||||
end loop;
|
||||
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETITEMSRESPONSE);
|
||||
end if;
|
||||
/* Âîçâðàùàåì îòâåò */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
|
||||
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
|
||||
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
|
||||
exception
|
||||
when others then
|
||||
/* Âåðí¸ì îøèáêó */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
|
||||
end GETSHEETITEMS;
|
||||
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ìåñò õðàíåíèÿ */
|
||||
procedure GETSTORAGES
|
||||
(
|
||||
NIDENT in number, -- Идентификатор процесса
|
||||
NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
)
|
||||
is
|
||||
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||
XGETSTORAGESRESPONSE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò îòâåòà
|
||||
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ âåòêè îòâåòà
|
||||
XITEM DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò îòâåòíîãî ñïèñêà
|
||||
XCODE DBMS_XMLDOM.DOMNODE; -- Êîä ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XNAME DBMS_XMLDOM.DOMNODE; -- Íèìåíîâàíèå ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XMNEMOCODE DBMS_XMLDOM.DOMNODE; -- Ìíåìîêîä ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XLATITUDE DBMS_XMLDOM.DOMNODE; -- Øèðîòà ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XLONGITUDE DBMS_XMLDOM.DOMNODE; -- Äîëãîòà ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XPOSTCODE DBMS_XMLDOM.DOMNODE; -- Ïî÷òîâûé èíäåêñ ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XCOUNTRY DBMS_XMLDOM.DOMNODE; -- Ñòðàíà ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XREGION DBMS_XMLDOM.DOMNODE; -- Ðåãèîí ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XLOCALITY DBMS_XMLDOM.DOMNODE; -- Íàñåë¸ííûé ïóíêò ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XSTREET DBMS_XMLDOM.DOMNODE; -- Óëèöà ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XHOUSENUMBER DBMS_XMLDOM.DOMNODE; -- Íîìåð äîìà ìåñòîïîëîæåíèÿ äëÿ ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||
XDOC DBMS_XMLDOM.DOMDOCUMENT; -- Äîêóìåíò
|
||||
XMLPARCER DBMS_XMLPARSER.PARSER; -- Ïàðñåð
|
||||
XENVELOPE DBMS_XMLDOM.DOMNODE; -- Êîíâåðò
|
||||
XBODY DBMS_XMLDOM.DOMNODE; -- Òåëî äîêóìåíòà
|
||||
XNODELIST DBMS_XMLDOM.DOMNODELIST; -- Âåòêè òåëà äîêóìåíòà
|
||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||
NREQSHEETCODE PKG_STD.TREF; -- Âåäîìîñòü èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||
begin
|
||||
null;
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
/* Âîçüìåì òåêñò çàïðîñà */
|
||||
CREQ := BLOB2CLOB(LBDATA => REXSQUEUE.MSG);
|
||||
/* Ñîçäàåì èíñòàíñ XML ïàðñåðà */
|
||||
XMLPARCER := DBMS_XMLPARSER.NEWPARSER;
|
||||
/* Ðàçáèðàåì XML èç çàïðîñà */
|
||||
DBMS_XMLPARSER.PARSECLOB(P => XMLPARCER, DOC => CREQ);
|
||||
/* Áåðåì XML äîêóìåíò èç ðàçîáðàííîãî */
|
||||
XDOC := DBMS_XMLPARSER.GETDOCUMENT(P => XMLPARCER);
|
||||
/* Ñ÷èòûâàåì êîðíåâîé ýëåìåíò */
|
||||
XENVELOPE := DBMS_XMLDOM.MAKENODE(ELEM => DBMS_XMLDOM.GETDOCUMENTELEMENT(DOC => XDOC));
|
||||
/* Ñ÷èòûâàåì ýëåìåíò òåëî */
|
||||
XBODY := DBMS_XSLPROCESSOR.SELECTSINGLENODE(N => XENVELOPE, PATTERN => SBODY);
|
||||
/* Ñ÷èòûâàåì äî÷åðíèå ýëåìåíòû òåëà */
|
||||
XNODELIST := DBMS_XMLDOM.GETCHILDNODES(N => XBODY);
|
||||
/* Áåðåì ïåðâûé äî÷åðíèé ýëåìåíò */
|
||||
XNODE_ROOT := DBMS_XMLDOM.ITEM(NL => XNODELIST, IDX => 0);
|
||||
/* Ñ÷èòûâàåì èäåíòèôèêàòîð óñòðîéñòâà */
|
||||
SREQDEVICEID := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SDEVICEID);
|
||||
/* Ñ÷èòûâàåì "Ðåãèñòðàöèîííûé íîìåð âåäîìîñòè" (ïàðàìåòð îòáîðà) */
|
||||
NREQSHEETCODE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSHEETCODE));
|
||||
/* Êîíòðîëü èíäåòèôèêàòîðà óñòðîéñòâà ïî ëèöåíçèè */
|
||||
/* UTL_CHECK_DEVICEID(SDEVICEID => SREQDEVICEID); */
|
||||
/* Ïîäãîòàâëèâàåì äîêóìåíò äëÿ îòâåòà */
|
||||
UTL_CREATERESPONSEDOC(XDOC => XDOC);
|
||||
/* Âìåñòî ïðîâåðêè ïî ëèöåíçèè - ïîêà ïðîñòî ïðîâåðêà íà òî, ÷òî èäåíòèôèêàòîð óñòðîéñòâà áûë ïåðåäàí */
|
||||
if (SREQDEVICEID is not null) then
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XGETSTORAGESRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSTORAGESRESPONSE, SNS => STSD);
|
||||
/* Îáõîäèì ìåñòà õðàíåíèÿ */
|
||||
for REC in (select T.RN NRN,
|
||||
T.PLACE_MNEMO SMNEMOCODE,
|
||||
T.PLACE_NAME SNAME,
|
||||
UDO_F_GET_DOC_PROP_VAL_STR('LATITUDE', 'ObjPlace', T.RN) SLATITUDE,
|
||||
UDO_F_GET_DOC_PROP_VAL_STR('LONGITUDE', 'ObjPlace', T.RN) SLONGITUDE,
|
||||
nvl(T.ADDR_POST, G.POSTAL_CODE) SPOSTCODE,
|
||||
UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 1) SCOUNTRY,
|
||||
UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 2) SREGION,
|
||||
NVL(UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 8),
|
||||
NVL(UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 4),
|
||||
NVL(UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 3), UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 2)))) SLOCALITY,
|
||||
UTL_GEOGRAFY_GET_HIER_ITEM(G.RN, 5) SSTREET,
|
||||
T.ADDR_HOUSE SHOUSENUMBER
|
||||
from DICPLACE T,
|
||||
GEOGRAFY G
|
||||
where T.COMPANY = 136018
|
||||
and T.GEOGRAFY = G.RN(+)
|
||||
and ((NREQSHEETCODE is null) or
|
||||
((NREQSHEETCODE is not null) and
|
||||
(T.RN in (select DECODE(EO.INVPACK, null, INV.OBJECT_PLACE, P.OBJECT_PLACE)
|
||||
from ELINVOBJECT EO,
|
||||
INVENTORY INV,
|
||||
INVPACK P
|
||||
where EO.PRN = NREQSHEETCODE
|
||||
and EO.INVENTORY = INV.RN
|
||||
and EO.INVPACK = P.RN(+))))))
|
||||
loop
|
||||
/* Ñîáèðàåì èíôîðìàöèþ ïî ìåñòó õðàíåíèÿ â îòâåò */
|
||||
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => SITEM, SNS => STSD);
|
||||
XCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SCODE, SNS => STSD, SVAL => REC.NRN);
|
||||
XNAME := UTL_CREATENODE(XDOC => XDOC, STAG => SNAME, SNS => STSD, SVAL => REC.SNAME);
|
||||
XMNEMOCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SMNEMOCODE, SNS => STSD, SVAL => REC.SMNEMOCODE);
|
||||
XLATITUDE := UTL_CREATENODE(XDOC => XDOC, STAG => SLATITUDE, SNS => STSD, SVAL => REC.SLATITUDE);
|
||||
XLONGITUDE := UTL_CREATENODE(XDOC => XDOC, STAG => SLONGITUDE, SNS => STSD, SVAL => REC.SLONGITUDE);
|
||||
XPOSTCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SPOSTCODE, SNS => STSD, SVAL => REC.SPOSTCODE);
|
||||
XCOUNTRY := UTL_CREATENODE(XDOC => XDOC, STAG => SCOUNTRY, SNS => STSD, SVAL => REC.SCOUNTRY);
|
||||
XREGION := UTL_CREATENODE(XDOC => XDOC, STAG => SREGION, SNS => STSD, SVAL => REC.SREGION);
|
||||
XLOCALITY := UTL_CREATENODE(XDOC => XDOC, STAG => SLOCALITY, SNS => STSD, SVAL => REC.SLOCALITY);
|
||||
XSTREET := UTL_CREATENODE(XDOC => XDOC, STAG => SSTREET, SNS => STSD, SVAL => REC.SSTREET);
|
||||
XHOUSENUMBER := UTL_CREATENODE(XDOC => XDOC, STAG => SHOUSENUMBER, SNS => STSD, SVAL => REC.SHOUSENUMBER);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XCODE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XNAME);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XMNEMOCODE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XLATITUDE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XLONGITUDE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XPOSTCODE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XCOUNTRY);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XREGION);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XLOCALITY);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XSTREET);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XHOUSENUMBER);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XGETSTORAGESRESPONSE, NEWCHILD => XITEM);
|
||||
end loop;
|
||||
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSTORAGESRESPONSE);
|
||||
end if;
|
||||
/* Âîçâðàùàåì îòâåò */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
|
||||
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
|
||||
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
|
||||
exception
|
||||
when others then
|
||||
/* Âåðí¸ì îøèáêó */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
|
||||
end GETSTORAGES;
|
||||
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè */
|
||||
procedure SAVESHEETITEM
|
||||
(
|
||||
NIDENT in number, -- Идентификатор процесса
|
||||
NEXSQUEUE in number -- Регистрационный номер обрабатываемой позиции очереди обмена
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
)
|
||||
is
|
||||
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||
XSAVESHEETITEMRESPONSE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò îòâåòà
|
||||
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ âåòêè îòâåòà
|
||||
XITEM DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò îòâåòíîãî ñïèñêà
|
||||
XDOC DBMS_XMLDOM.DOMDOCUMENT; -- Äîêóìåíò
|
||||
XMLPARCER DBMS_XMLPARSER.PARSER; -- Ïàðñåð
|
||||
XENVELOPE DBMS_XMLDOM.DOMNODE; -- Êîíâåðò
|
||||
XBODY DBMS_XMLDOM.DOMNODE; -- Òåëî äîêóìåíòà
|
||||
XNODELIST DBMS_XMLDOM.DOMNODELIST; -- Âåòêè òåëà äîêóìåíòà
|
||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||
NREQSHEETCODE PKG_STD.TREF; -- Âåäîìîñòü èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQUSERCODE PKG_STD.TREF; -- Ðåãèñòðàöèîííûé íîìåð ÌÎË èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGEMNEMOCODE PKG_STD.TSTRING; -- Ìíåìîêîä ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQSTORAGEISNEW PKG_STD.TNUMBER; -- Ïðèçíàê íîâîãî ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGECODE PKG_STD.TSTRING; -- Øòðèõ-êîä ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGENAME PKG_STD.TSTRING; -- Íàèìåíîâàíèå ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGEPOSTCODE PKG_STD.TSTRING; -- Ïî÷òîâûé èíäåêñ ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGECOUNTRY PKG_STD.TSTRING; -- Ñòðàíà ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGEREGION PKG_STD.TSTRING; -- Ðåãèîí ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGELOCALITY PKG_STD.TSTRING; -- Íàñåëåííûé ïóíêò ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGESTREET PKG_STD.TSTRING; -- Óëèöà ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQSTORAGEHOUSENUMBER PKG_STD.TSTRING; -- Íîìåð äîìà ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQSTORAGELATITUDE PKG_STD.TLNUMBER; -- Øèðîòà ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQSTORAGELONGITUDE PKG_STD.TLNUMBER; -- Äîëãîòà ìåñòà õðàíåíèÿ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQITEMCODE PKG_STD.TSTRING; -- Øòðèõ-êîä ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQITEMNAME PKG_STD.TSTRING; -- Íàèìåíîâàíèå íîìåíêëàòóðû ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQITEMMNEMOCODE PKG_STD.TSTRING; -- Ìíåìîêîä íîìåíêëàòóðû ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQITEMNUMBER PKG_STD.TSTRING; -- Èíâåíòàðíûé íîìåð ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQQUANTITY PKG_STD.TQUANT; -- Êîëè÷åñòâî ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
DREQCHECKDATE PKG_STD.TLDATE; -- Äàòà ïðîâåäåíèÿ èíâåíòàðèçàöèè ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQCOMMENT PKG_STD.TLSTRING; -- Êîììåíòàðèé ÌÎË ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQLATITUDE PKG_STD.TLNUMBER; -- Øèðîòà èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQLONGITUDE PKG_STD.TLNUMBER; -- Äîëãîòà èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NREQDISTANCETOSTORAGE PKG_STD.TLNUMBER; -- Ðàññòîÿíèå äî ìåñòà õðàíåíèÿ ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQFLOOR PKG_STD.TSTRING; -- Ýòàæ ðàñïîëîæåíèÿ ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQROOM PKG_STD.TSTRING; -- Ïîìåùåíèå ðàñïîëîæåíèÿ ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
SREQRACK PKG_STD.TSTRING; -- Ñòåëëàæ ðàñïîëîæåíèÿ ÎÑ èç çàïðîñà (ïàðàìåòð ñîõðàíåíèÿ)
|
||||
NELINVOBJECT PKG_STD.TREF; -- Ðåã. íîìåð ïîçèöèè âåäîìîñòè èíâåíòàðèçàöèè
|
||||
NDICPLACE PKG_STD.TREF; -- Ðåã. íîìåð ìåñòà õðàíåíèÿ
|
||||
NINVENTORY PKG_STD.TREF; -- Ðåã. íîìåð ÎÑ (êàðòî÷êè "Èíâåíòàðíîé êàðòîòåêè")
|
||||
NCOMPANY PKG_STD.TREF; -- Ðåã. íîìåð îðãàíèçàöèè
|
||||
SERR PKG_STD.TSTRING; -- Áóôåð äëÿ îøèáîê
|
||||
begin
|
||||
null;
|
||||
end SAVESHEETITEM;
|
||||
/* Èíèöèàëèçèðóåì îðãàíèçàöèþ */
|
||||
NCOMPANY := 136018;
|
||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||
/* Âîçüìåì òåêñò çàïðîñà */
|
||||
CREQ := BLOB2CLOB(LBDATA => REXSQUEUE.MSG);
|
||||
/* Ñîçäàåì èíñòàíñ XML ïàðñåðà */
|
||||
XMLPARCER := DBMS_XMLPARSER.NEWPARSER;
|
||||
/* Ðàçáèðàåì XML èç çàïðîñà */
|
||||
DBMS_XMLPARSER.PARSECLOB(P => XMLPARCER, DOC => CREQ);
|
||||
/* Áåðåì XML äîêóìåíò èç ðàçîáðàííîãî */
|
||||
XDOC := DBMS_XMLPARSER.GETDOCUMENT(P => XMLPARCER);
|
||||
/* Ñ÷èòûâàåì êîðíåâîé ýëåìåíò */
|
||||
XENVELOPE := DBMS_XMLDOM.MAKENODE(ELEM => DBMS_XMLDOM.GETDOCUMENTELEMENT(DOC => XDOC));
|
||||
/* Ñ÷èòûâàåì ýëåìåíò òåëî */
|
||||
XBODY := DBMS_XSLPROCESSOR.SELECTSINGLENODE(N => XENVELOPE, PATTERN => SBODY);
|
||||
/* Ñ÷èòûâàåì äî÷åðíèå ýëåìåíòû òåëà */
|
||||
XNODELIST := DBMS_XMLDOM.GETCHILDNODES(N => XBODY);
|
||||
/* Áåðåì ïåðâûé äî÷åðíèé ýëåìåíò */
|
||||
XNODE_ROOT := DBMS_XMLDOM.ITEM(NL => XNODELIST, IDX => 0);
|
||||
/* Ñ÷èòûâàåì èäåíòèôèêàòîð óñòðîéñòâà */
|
||||
SREQDEVICEID := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SDEVICEID);
|
||||
/* Ñ÷èòûâàåì "Ðåãèñòðàöèîííûé íîìåð âåäîìîñòè" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQSHEETCODE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSHEETCODE));
|
||||
/* Ñ÷èòûâàåì "Ðåãèñòðàöèîííûé íîìåð ÌÎË" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQUSERCODE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SUSERCODE));
|
||||
/* Ñ÷èòûâàåì "Ìíåìîêîä ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGEMNEMOCODE := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGEMNEMOCODE);
|
||||
/* Ñ÷èòûâàåì "Ïðèçíàê íîâîãî ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQSTORAGEISNEW := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGEISNEW));
|
||||
/* Ñ÷èòûâàåì "Øòðèõ-êîä ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGECODE := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGECODE);
|
||||
/* Ñ÷èòûâàåì "Íàèìåíîâàíèå ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGENAME := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGENAME);
|
||||
/* Ñ÷èòûâàåì "Ïî÷òîâûé èíäåêñ ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGEPOSTCODE := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGEPOSTCODE);
|
||||
/* Ñ÷èòûâàåì "Ñòðàíà ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGECOUNTRY := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGECOUNTRY);
|
||||
/* Ñ÷èòûâàåì "Ðåãèîí ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGEREGION := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGEREGION);
|
||||
/* Ñ÷èòûâàåì "Íàñåëåííûé ïóíêò ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGELOCALITY := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGELOCALITY);
|
||||
/* Ñ÷èòûâàåì "Óëèöà ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGESTREET := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGESTREET);
|
||||
/* Ñ÷èòûâàåì "Íîìåð äîìà ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQSTORAGEHOUSENUMBER := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGEHOUSENUMBER);
|
||||
/* Ñ÷èòûâàåì "Øèðîòà ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQSTORAGELATITUDE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGELATITUDE));
|
||||
/* Ñ÷èòûâàåì "Äîëãîòà ìåñòà õðàíåíèÿ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQSTORAGELONGITUDE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SSTORAGELONGITUDE));
|
||||
/* Ñ÷èòûâàåì "Øòðèõ-êîä ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQITEMCODE := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SITEMCODE);
|
||||
/* Ñ÷èòûâàåì "Íàèìåíîâàíèå íîìåíêëàòóðû ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQITEMNAME := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SITEMNAME);
|
||||
/* Ñ÷èòûâàåì "Ìíåìîêîä íîìåíêëàòóðû ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQITEMMNEMOCODE := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SITEMMNEMOCODE);
|
||||
/* Ñ÷èòûâàåì "Èíâåíòàðíûé íîìåð ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQITEMNUMBER := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SITEMNUMBER);
|
||||
/* Ñ÷èòûâàåì "Êîëè÷åñòâî ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQQUANTITY := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SQUANTITY));
|
||||
/* Ñ÷èòûâàåì "Äàòà ïðîâåäåíèÿ èíâåíòàðèçàöèè ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
DREQCHECKDATE := TO_DATE(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SCHECKDATE), 'yyyy-mm-dd');
|
||||
/* Ñ÷èòûâàåì "Êîììåíòàðèé ÌÎË ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQCOMMENT := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SCOMMENT);
|
||||
/* Ñ÷èòûâàåì "Øèðîòà" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQLATITUDE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SLATITUDE));
|
||||
/* Ñ÷èòûâàåì "Äîëãîòà" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQLONGITUDE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SLONGITUDE));
|
||||
/* Ñ÷èòûâàåì "Ðàññòîÿíèå äî ìåñòà õðàíåíèÿ ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
NREQDISTANCETOSTORAGE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SDISTANCETOSTORAGE));
|
||||
/* Ñ÷èòûâàåì "Ýòàæ ðàñïîëîæåíèÿ ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQFLOOR := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SFLOOR);
|
||||
/* Ñ÷èòûâàåì "Ïîìåùåíèå ðàñïîëîæåíèÿ ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQROOM := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SROOM);
|
||||
/* Ñ÷èòûâàåì "Ñòåëëàæ ðàñïîëîæåíèÿ ÎÑ" (ïàðàìåòð ñîõðàíåíèÿ) */
|
||||
SREQRACK := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SRACK);
|
||||
/* Êîíòðîëü èíäåòèôèêàòîðà óñòðîéñòâà ïî ëèöåíçèè */
|
||||
/* UTL_CHECK_DEVICEID(SDEVICEID => SREQDEVICEID); */
|
||||
/* Ïîäãîòàâëèâàåì äîêóìåíò äëÿ îòâåòà */
|
||||
UTL_CREATERESPONSEDOC(XDOC => XDOC);
|
||||
/* Âìåñòî ïðîâåðêè ïî ëèöåíçèè - ïîêà ïðîñòî ïðîâåðêà íà òî, ÷òî èäåíòèôèêàòîð óñòðîéñòâà áûë ïåðåäàí */
|
||||
if (SREQDEVICEID is not null) then
|
||||
if ((NREQSHEETCODE is not null) and (DREQCHECKDATE is not null)) then
|
||||
/*
|
||||
TODO: owner="root" created="14.01.2019"
|
||||
text="Ïîíÿòü çà÷åì ìû ýòî äåëàåì (äàëüøå ðåçóëüòàòû ïðîâåðêè íå èäóò).
|
||||
Íàäî ðåàëèçîâàòü äîáàâëåíèå íîâîãî ìåñòîíàõîæäåíèÿ + ñìåíó òåêóùåãî"
|
||||
*/
|
||||
/* Åñëè çàäàí øòðèõ-êîä ìåñòàíõîæäåíèÿ ÎÑ */
|
||||
if (SREQSTORAGECODE is not null) then
|
||||
/* Ïðîâåðÿåì ìåñòîíàõîõæäåíèå ïî øòðèõ-êîäó */
|
||||
begin
|
||||
select T.RN
|
||||
into NDICPLACE
|
||||
from DICPLACE T
|
||||
where T.COMPANY = NCOMPANY
|
||||
and T.BARCODE = SREQSTORAGECODE;
|
||||
exception
|
||||
when NO_DATA_FOUND then
|
||||
SERR := 'Ìåñòîíàõîæäåíèå èíâåíòàðíûõ îáúåêòîâ ñ øòðèõ-êîäîì: ' || SREQSTORAGECODE || ' íå íàéäåíî';
|
||||
end;
|
||||
end if;
|
||||
/* Ïðîáóåì íàéòè ïîçèöèþ âåäîìîñòè èíâåíòàðèçàöèè ïî øòðèõ-êîäó (åñëè ïåðåäàí ðåã. íîìåð âåäîìîñòè è ïîêà íåò îøèáîê) */
|
||||
if ((NREQSHEETCODE is not null) and (SERR is null)) then
|
||||
begin
|
||||
select T.NRN
|
||||
into NELINVOBJECT
|
||||
from V_ELINVOBJECT T
|
||||
where T.NCOMPANY = NCOMPANY
|
||||
and T.NPRN = NREQSHEETCODE
|
||||
and T.SIBARCODE = SREQITEMCODE;
|
||||
exception
|
||||
when NO_DATA_FOUND then
|
||||
/* Èùåì ðåã. íîìåð ÈÊ ïî øòðèõêîäó, åñëè íå íàøëè ïîçèöèþ âåäîìîñòè èíâåíòàðèçàöèè */
|
||||
begin
|
||||
select T.RN
|
||||
into NINVENTORY
|
||||
from INVENTORY T
|
||||
where T.BARCODE = SREQITEMCODE
|
||||
and T.COMPANY = NCOMPANY;
|
||||
exception
|
||||
when NO_DATA_FOUND then
|
||||
SERR := 'Èíâåíòàðíàÿ êàðòî÷êà ñ øòðèõ-êîäîì: ' || SREQITEMCODE || ' íå íàéäåíà';
|
||||
end;
|
||||
end;
|
||||
end if;
|
||||
/* Åñëè íåò îøèáîê ïðè ïðîâåðêàõ */
|
||||
if (SERR is null) then
|
||||
/* Åñëè ïîçèöèÿ âåäîìîñòè èíâåíòàðèçàöèè íàéäåíà */
|
||||
if (NELINVOBJECT is not null) then
|
||||
/* Îáíîâèì å¸ */
|
||||
P_ELINVOBJECT_BASE_UPDATE(NCOMPANY => NCOMPANY,
|
||||
NRN => NELINVOBJECT,
|
||||
DUNLOAD_DATE => null,
|
||||
DINV_DATE => DREQCHECKDATE,
|
||||
NINVPERSONS => NREQUSERCODE,
|
||||
SBARCODE => SREQSTORAGECODE,
|
||||
NIS_LOADED => 0);
|
||||
else
|
||||
/* Èëè äîáàâèì â âåäîìîñòü íàéäåííóþ ÈÊ åñëè íå íàøëè ïîçèöèþ âåäîìîñòè ïî øòðèõ-êîäó */
|
||||
P_ELINVOBJECT_BASE_INSERT(NCOMPANY => NCOMPANY,
|
||||
NPRN => NREQSHEETCODE,
|
||||
NINVENTORY => NINVENTORY,
|
||||
NINVSUBST => null,
|
||||
NINVPACK => null,
|
||||
DUNLOAD_DATE => null,
|
||||
DINV_DATE => DREQCHECKDATE,
|
||||
NINVPERSONS => NREQUSERCODE,
|
||||
SBARCODE => SREQSTORAGECODE,
|
||||
NIS_LOADED => 1,
|
||||
NRN => NELINVOBJECT);
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
/* Åñëè íåò îøèáîê */
|
||||
if (SERR is null) then
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XSAVESHEETITEMRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SSAVESHEETITEMRESPONSE, SNS => STSD);
|
||||
/* Ôîðìèðóåì ðåçóëüòàò */
|
||||
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => SRESULT, SNS => STSD, SVAL => 'true');
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XSAVESHEETITEMRESPONSE, NEWCHILD => XITEM);
|
||||
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XSAVESHEETITEMRESPONSE);
|
||||
else
|
||||
CRESPONSE := UTL_CREATEERRORRESPONSE(XDOC => XDOC, SMSG => SERR);
|
||||
end if;
|
||||
end if;
|
||||
/* Âîçâðàùàåì îòâåò */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
|
||||
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
|
||||
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
|
||||
exception
|
||||
when others then
|
||||
/* Âåðí¸ì îøèáêó */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
|
||||
end SAVESHEETITEM;
|
||||
|
||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè (ÄÅÌÎ, óáðàòü!!!!) */
|
||||
procedure SAVESHEETITEM_TMP
|
||||
(
|
||||
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||
)
|
||||
is
|
||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||
XSAVESHEETITEMRESPONSE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò îòâåòà
|
||||
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ âåòêè îòâåòà
|
||||
XITEM DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò îòâåòíîãî ñïèñêà
|
||||
XDOC DBMS_XMLDOM.DOMDOCUMENT; -- Äîêóìåíò
|
||||
begin
|
||||
UTL_CREATERESPONSEDOC(XDOC => XDOC);
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XSAVESHEETITEMRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SSAVESHEETITEMRESPONSE, SNS => STSD);
|
||||
/* Ôîðìèðóåì ðåçóëüòàò */
|
||||
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => SRESULT, SNS => STSD, SVAL => 'true');
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XSAVESHEETITEMRESPONSE, NEWCHILD => XITEM);
|
||||
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XSAVESHEETITEMRESPONSE);
|
||||
/* Âîçâðàùàåì îòâåò */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT,
|
||||
SRESULT => PKG_EXS.SPRC_RESP_RESULT_OK,
|
||||
BRESP => CLOB2BLOB(LCDATA => CRESPONSE, SCHARSET => 'UTF8'));
|
||||
exception
|
||||
when others then
|
||||
/* Âåðí¸ì îøèáêó */
|
||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
|
||||
end SAVESHEETITEM_TMP;
|
||||
|
||||
end;
|
||||
/
|
||||
|
Loading…
x
Reference in New Issue
Block a user