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
|
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
|
procedure CHECKAUTH
|
||||||
(
|
(
|
||||||
@ -49,6 +56,13 @@ create or replace package UDO_PKG_EXS_INV as
|
|||||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè (ÄÅÌÎ, óáðàòü!!!!) */
|
||||||
|
procedure SAVESHEETITEM_TMP
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
);
|
||||||
|
|
||||||
end;
|
end;
|
||||||
/
|
/
|
||||||
create or replace package body UDO_PKG_EXS_INV as
|
create or replace package body UDO_PKG_EXS_INV as
|
||||||
@ -59,6 +73,9 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
SGETUSERSRESPONSE constant varchar2(40) := 'GetUsersResponse';
|
SGETUSERSRESPONSE constant varchar2(40) := 'GetUsersResponse';
|
||||||
SGETSHEETTYPESRESPONSE constant varchar2(40) := 'GetSheetTypesResponse';
|
SGETSHEETTYPESRESPONSE constant varchar2(40) := 'GetSheetTypesResponse';
|
||||||
SGETSHEETSRESPONSE constant varchar2(40) := 'GetSheetsResponse';
|
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';
|
SDEVICEID constant varchar2(40) := 'DeviceID';
|
||||||
SRESULT constant varchar2(40) := 'Result';
|
SRESULT constant varchar2(40) := 'Result';
|
||||||
SSOAPENV constant varchar2(40) := 'soapenv';
|
SSOAPENV constant varchar2(40) := 'soapenv';
|
||||||
@ -72,6 +89,44 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
SPREFIX constant varchar2(40) := 'Prefix';
|
SPREFIX constant varchar2(40) := 'Prefix';
|
||||||
SNUMBER constant varchar2(40) := 'Number';
|
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 */
|
/* Ñîçäàíèå âåòêè XML */
|
||||||
function UTL_CREATENODE
|
function UTL_CREATENODE
|
||||||
@ -154,12 +209,12 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
XCONTENT in DBMS_XMLDOM.DOMNODE -- Íàèìåíîâàíèå òýãà ñ îòïðàâëÿåìûì êîíòåíòîì
|
XCONTENT in DBMS_XMLDOM.DOMNODE -- Íàèìåíîâàíèå òýãà ñ îòïðàâëÿåìûì êîíòåíòîì
|
||||||
) return clob -- Ðåçóëüòàò ðàáîòû
|
) return clob -- Ðåçóëüòàò ðàáîòû
|
||||||
is
|
is
|
||||||
XMAIN_NODE DBMS_XMLDOM.DOMNODE;
|
XMAIN_NODE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò äîêóìåíòà
|
||||||
XENVELOPE_EL DBMS_XMLDOM.DOMELEMENT;
|
XENVELOPE_EL DBMS_XMLDOM.DOMELEMENT; -- Ýëåìåíò äëÿ îá¸ðòêè îòâåòà
|
||||||
XENVELOPE DBMS_XMLDOM.DOMNODE;
|
XENVELOPE DBMS_XMLDOM.DOMNODE; -- Îá¸ðòêà îòâåòà
|
||||||
XHEADER DBMS_XMLDOM.DOMNODE;
|
XHEADER DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò äëÿ çàãîëîâîêà îòâåòà
|
||||||
XBODY DBMS_XMLDOM.DOMNODE;
|
XBODY DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò äëÿ òåëà îòâåòà
|
||||||
XNODE DBMS_XMLDOM.DOMNODE;
|
XNODE DBMS_XMLDOM.DOMNODE; -- Òåêóùèé ýëåìåíò äîêóìåíòà
|
||||||
CDATA clob; -- Áóôåð äëÿ ðåçóëüòàòà
|
CDATA clob; -- Áóôåð äëÿ ðåçóëüòàòà
|
||||||
begin
|
begin
|
||||||
/* Ïîäãîòîâèì äîêóìåíò */
|
/* Ïîäãîòîâèì äîêóìåíò */
|
||||||
@ -190,6 +245,59 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
return CDATA;
|
return CDATA;
|
||||||
end UTL_CREATERESPONSE;
|
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
|
procedure CHECKAUTH
|
||||||
(
|
(
|
||||||
@ -209,7 +317,7 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||||
begin
|
begin
|
||||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
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; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||||
begin
|
begin
|
||||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
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; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||||
begin
|
begin
|
||||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
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
|
if (SREQDEVICEID is not null) then
|
||||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||||
XGETSHEETTYPESRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSHEETTYPESRESPONSE, SNS => STSD);
|
XGETSHEETTYPESRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSHEETTYPESRESPONSE, SNS => STSD);
|
||||||
/* Обходим типы документов связанные с разделом "Электронные инвенторизации" */
|
/* Îáõîäèì òèïû äîêóìåíòîâ ñâÿçàííûå ñ ðàçäåëîì "Ýëåêòðîííûå èíâåíòàðèçàöèè" */
|
||||||
for REC in (select T.RN,
|
for REC in (select T.RN,
|
||||||
T.DOCCODE
|
T.DOCCODE
|
||||||
from DOCTYPES T,
|
from DOCTYPES T,
|
||||||
@ -441,11 +549,11 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
XNODE_ROOT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò ïåðâîé âåòêè òåëà äîêóìåíòà
|
||||||
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
CRESPONSE clob; -- Áóôåð äëÿ îòâåòà
|
||||||
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
CREQ clob; -- Áóôåð äëÿ çàïðîñà
|
||||||
SREQDEVICEID varchar2(30); -- Идентификатор устройства из запроса
|
SREQDEVICEID PKG_STD.TSTRING; -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||||
NREQTYPECODE number(17); -- Тип ведомости из запроса (параметр отбора)
|
NREQTYPECODE PKG_STD.TREF; -- Òèï âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
SREQPREFIX varchar2(30); -- Префикс ведомости из запроса (параметр отбора)
|
SREQPREFIX PKG_STD.TSTRING; -- Ïðåôèêñ âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
SREQNUMBER varchar2(30); -- Номер ведомости из запроса (параметр отбора)
|
SREQNUMBER PKG_STD.TSTRING; -- Íîìåð âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
DREQDATE date; -- Дата ведомости из запроса (параметр отбора)
|
DREQDATE PKG_STD.TLDATE; -- Äàòà âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
begin
|
begin
|
||||||
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
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
|
if (SREQDEVICEID is not null) then
|
||||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||||
XGETSHEETSRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSHEETSRESPONSE, SNS => STSD);
|
XGETSHEETSRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => SGETSHEETSRESPONSE, SNS => STSD);
|
||||||
/* Обходим типы документов связанные с разделом "Электронные инвенторизации" */
|
/* Îáõîäèì çàïèñè ðàçäåëà "Ýëåêòðîííûå èíâåíòàðèçàöèè" óäîâëåòâîðÿþùèå óñëîâèÿì îòáîðà */
|
||||||
for REC in (select T.RN,
|
for REC in (select T.RN,
|
||||||
T.DOC_TYPE,
|
T.DOC_TYPE,
|
||||||
DT.DOCCODE as DOC_TYPE_CODE,
|
DT.DOCCODE as DOC_TYPE_CODE,
|
||||||
@ -542,8 +650,127 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
)
|
)
|
||||||
is
|
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
|
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;
|
end GETSHEETITEMS;
|
||||||
|
|
||||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ìåñò õðàíåíèÿ */
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ìåñò õðàíåíèÿ */
|
||||||
@ -553,8 +780,127 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
)
|
)
|
||||||
is
|
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
|
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;
|
end GETSTORAGES;
|
||||||
|
|
||||||
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè */
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè */
|
||||||
@ -564,9 +910,259 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
)
|
)
|
||||||
is
|
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
|
begin
|
||||||
null;
|
/* Èíèöèàëèçèðóåì îðãàíèçàöèþ */
|
||||||
|
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;
|
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;
|
end;
|
||||||
/
|
/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user