forked from CITKParus/P8-ExchangeService
Интерфейсы процедур для получения типов ведомостей инвентаризации, заголовков ведомостей инвентаризации, мест хранения, объектов инвентаризации, импорта результатов инвентаризации (GETSHEETTYPES, GETSHEETS, GETSHEETITEMS, GETSTORAGES, SAVESHEETITEM). Реализованы процедуры обмена для типов ведомостей инвентаризации (GETSHEETTYPES) и заголовков ведомостей инвентаризации (GETSHEETS)
This commit is contained in:
parent
d6ec6b19b7
commit
75f02e4528
@ -14,23 +14,64 @@ create or replace package UDO_PKG_EXS_INV as
|
|||||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå òèïîâ âåäîìîñòåé */
|
||||||
|
procedure GETSHEETTYPES
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå çàãîëîâêîâ âåäîìîñòåé èíâåíòàðèçàöèè */
|
||||||
|
procedure GETSHEETS
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ñîñòàâà âåäîìîñòåé èíâåíòàðèçàöèè */
|
||||||
|
procedure GETSHEETITEMS
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ìåñò õðàíåíèÿ */
|
||||||
|
procedure GETSTORAGES
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè */
|
||||||
|
procedure SAVESHEETITEM
|
||||||
|
(
|
||||||
|
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
|
||||||
|
|
||||||
/* Êîíñòàíòû - òýãè */
|
/* Êîíñòàíòû - òýãè */
|
||||||
STSD constant varchar2(20) := 'tsd';
|
STSD constant varchar2(40) := 'tsd';
|
||||||
SCHECKAUTHRESPONSE constant varchar2(20) := 'CheckAuthResponse';
|
SCHECKAUTHRESPONSE constant varchar2(40) := 'CheckAuthResponse';
|
||||||
SGETUSERSRESPONSE constant varchar2(20) := 'GetUsersResponse';
|
SGETUSERSRESPONSE constant varchar2(40) := 'GetUsersResponse';
|
||||||
SDEVICEID constant varchar2(20) := 'DeviceID';
|
SGETSHEETTYPESRESPONSE constant varchar2(40) := 'GetSheetTypesResponse';
|
||||||
SRESULT constant varchar2(20) := 'Result';
|
SGETSHEETSRESPONSE constant varchar2(40) := 'GetSheetsResponse';
|
||||||
SSOAPENV constant varchar2(20) := 'soapenv';
|
SDEVICEID constant varchar2(40) := 'DeviceID';
|
||||||
SENVELOPE constant varchar2(20) := 'Envelope';
|
SRESULT constant varchar2(40) := 'Result';
|
||||||
SHEADER constant varchar2(20) := 'Header';
|
SSOAPENV constant varchar2(40) := 'soapenv';
|
||||||
SBODY constant varchar2(20) := 'Body';
|
SENVELOPE constant varchar2(40) := 'Envelope';
|
||||||
SITEM constant varchar2(20) := 'Item';
|
SHEADER constant varchar2(40) := 'Header';
|
||||||
SCODE constant varchar2(20) := 'Code';
|
SBODY constant varchar2(40) := 'Body';
|
||||||
SNAME constant varchar2(20) := 'Name';
|
SITEM constant varchar2(40) := 'Item';
|
||||||
|
SCODE constant varchar2(40) := 'Code';
|
||||||
|
SNAME constant varchar2(40) := 'Name';
|
||||||
|
STYPECODE constant varchar2(40) := 'TypeCode';
|
||||||
|
SPREFIX constant varchar2(40) := 'Prefix';
|
||||||
|
SNUMBER constant varchar2(40) := 'Number';
|
||||||
|
SDATE constant varchar2(40) := 'Date';
|
||||||
|
|
||||||
/* Ñîçäàíèå âåòêè XML */
|
/* Ñîçäàíèå âåòêè XML */
|
||||||
function UTL_CREATENODE
|
function UTL_CREATENODE
|
||||||
@ -293,5 +334,239 @@ create or replace package body UDO_PKG_EXS_INV as
|
|||||||
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
|
PKG_EXS.PRC_RESP_RESULT_SET(NIDENT => NIDENT, SRESULT => PKG_EXS.SPRC_RESP_RESULT_ERR, SMSG => sqlerrm);
|
||||||
end GETUSERS;
|
end GETUSERS;
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå òèïîâ âåäîìîñòåé */
|
||||||
|
procedure GETSHEETTYPES
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
)
|
||||||
|
is
|
||||||
|
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||||
|
XGETSHEETTYPESRESPONSE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò îòâåòà
|
||||||
|
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ âåòêè îòâåòà
|
||||||
|
XITEM DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò îòâåòíîãî ñïèñêà
|
||||||
|
XCODE DBMS_XMLDOM.DOMNODE; -- Êîä ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||||
|
XNAME 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 varchar2(30); -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||||
|
begin
|
||||||
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
|
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);
|
||||||
|
/* Êîíòðîëü èíäåòèôèêàòîðà óñòðîéñòâà ïî ëèöåíçèè */
|
||||||
|
/* UTL_CHECK_DEVICEID(SDEVICEID => SREQDEVICEID); */
|
||||||
|
/* Ïîäãîòàâëèâàåì äîêóìåíò äëÿ îòâåòà */
|
||||||
|
UTL_CREATERESPONSEDOC(XDOC => XDOC);
|
||||||
|
/* Âìåñòî ïðîâåðêè ïî ëèöåíçèè - ïîêà ïðîñòî ïðîâåðêà íà òî, ÷òî èäåíòèôèêàòîð óñòðîéñòâà áûë ïåðåäàí */
|
||||||
|
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,
|
||||||
|
COMPVERLIST CV
|
||||||
|
where T.VERSION = CV.VERSION
|
||||||
|
and CV.COMPANY = 136018
|
||||||
|
and T.RN in (select DOCRN from DOCPARAMS where DOCPARAMS.UNITCODE = 'ElectronicInventories')
|
||||||
|
order by T.DOCCODE)
|
||||||
|
loop
|
||||||
|
/* Ñîáèðàåì èíôîðìàöèþ ïî òèïó äîêóìåíòà â îòâåò */
|
||||||
|
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => SITEM, SNS => STSD);
|
||||||
|
XCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SCODE, SNS => STSD, SVAL => REC.RN);
|
||||||
|
XNAME := UTL_CREATENODE(XDOC => XDOC, STAG => SNAME, SNS => STSD, SVAL => REC.DOCCODE);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XCODE);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XNAME);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XGETSHEETTYPESRESPONSE, NEWCHILD => XITEM);
|
||||||
|
end loop;
|
||||||
|
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||||
|
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETTYPESRESPONSE);
|
||||||
|
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 GETSHEETTYPES;
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå çàãîëîâêîâ âåäîìîñòåé èíâåíòàðèçàöèè */
|
||||||
|
procedure GETSHEETS
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
)
|
||||||
|
is
|
||||||
|
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||||
|
XGETSHEETSRESPONSE DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé ýëåìåíò îòâåòà
|
||||||
|
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ âåòêè îòâåòà
|
||||||
|
XITEM DBMS_XMLDOM.DOMNODE; -- Ýëåìåíò îòâåòíîãî ñïèñêà
|
||||||
|
XCODE DBMS_XMLDOM.DOMNODE; -- Êîä ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||||
|
XNAME DBMS_XMLDOM.DOMNODE; -- Íèìåíîâàíèå ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||||
|
XTYPECODE DBMS_XMLDOM.DOMNODE; -- Òèï âåäîìîñòè ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||||
|
XPREFIX DBMS_XMLDOM.DOMNODE; -- Ïðåôèêñ âåäîìîñòè ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||||
|
XNUMBER DBMS_XMLDOM.DOMNODE; -- Íîìåð âåäîìîñòè ýëåìåíòà îòâåòíîãî ñïèñêà
|
||||||
|
XDATE 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 varchar2(30); -- Èäåíòèôèêàòîð óñòðîéñòâà èç çàïðîñà
|
||||||
|
NREQTYPECODE number(17); -- Òèï âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
|
SREQPREFIX varchar2(30); -- Ïðåôèêñ âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
|
SREQNUMBER varchar2(30); -- Íîìåð âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
|
DREQDATE date; -- Äàòà âåäîìîñòè èç çàïðîñà (ïàðàìåòð îòáîðà)
|
||||||
|
begin
|
||||||
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
|
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);
|
||||||
|
/* Ñ÷èòûâàåì "Òèï âåäîìîñòè" (ïàðàìåòð îòáîðà) */
|
||||||
|
NREQTYPECODE := TO_NUMBER(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => STYPECODE));
|
||||||
|
/* Ñ÷èòûâàåì "Ïðåôèêñ" (ïàðàìåòð îòáîðà) */
|
||||||
|
SREQPREFIX := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SPREFIX);
|
||||||
|
/* Ñ÷èòûâàåì "Íîìåð" (ïàðàìåòð îòáîðà) */
|
||||||
|
SREQNUMBER := UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SNUMBER);
|
||||||
|
/* Ñ÷èòûâàåì "Äàòó" (ïàðàìåòð îòáîðà) */
|
||||||
|
DREQDATE := TO_DATE(UTL_GETNODEVAL(XROOTNODE => XNODE_ROOT, SPATTERN => SDATE), 'yyyy-mm-dd');
|
||||||
|
/* Êîíòðîëü èíäåòèôèêàòîðà óñòðîéñòâà ïî ëèöåíçèè */
|
||||||
|
/* UTL_CHECK_DEVICEID(SDEVICEID => SREQDEVICEID); */
|
||||||
|
/* Ïîäãîòàâëèâàåì äîêóìåíò äëÿ îòâåòà */
|
||||||
|
UTL_CREATERESPONSEDOC(XDOC => XDOC);
|
||||||
|
/* Âìåñòî ïðîâåðêè ïî ëèöåíçèè - ïîêà ïðîñòî ïðîâåðêà íà òî, ÷òî èäåíòèôèêàòîð óñòðîéñòâà áûë ïåðåäàí */
|
||||||
|
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,
|
||||||
|
trim(T.DOC_PREF) as DOC_PREF,
|
||||||
|
trim(T.DOC_NUMB) as DOC_NUMB,
|
||||||
|
T.DOC_DATE
|
||||||
|
from ELINVENTORY T,
|
||||||
|
DOCTYPES DT
|
||||||
|
where T.COMPANY = 136018
|
||||||
|
and T.DOC_TYPE = DT.RN
|
||||||
|
and (NREQTYPECODE is null or (NREQTYPECODE is not null and T.DOC_TYPE = NREQTYPECODE))
|
||||||
|
and (SREQPREFIX is null or (SREQPREFIX is not null and trim(T.DOC_PREF) = SREQPREFIX))
|
||||||
|
and (SREQNUMBER is null or (SREQNUMBER is not null and trim(T.DOC_NUMB) = SREQNUMBER))
|
||||||
|
and (DREQDATE is null or (DREQDATE is not null and T.DOC_DATE = DREQDATE)))
|
||||||
|
loop
|
||||||
|
/* Ñîáèðàåì èíôîðìàöèþ ïî âåäîìîñòè â îòâåò */
|
||||||
|
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => SITEM, SNS => STSD);
|
||||||
|
XCODE := UTL_CREATENODE(XDOC => XDOC, STAG => SCODE, SNS => STSD, SVAL => REC.RN);
|
||||||
|
XNAME := UTL_CREATENODE(XDOC => XDOC,
|
||||||
|
STAG => SNAME,
|
||||||
|
SNS => STSD,
|
||||||
|
SVAL => REC.DOC_TYPE_CODE || ', ' || REC.DOC_PREF || '-' || REC.DOC_NUMB || ', ' ||
|
||||||
|
TO_CHAR(REC.DOC_DATE, 'dd.mm.yyyy'));
|
||||||
|
XTYPECODE := UTL_CREATENODE(XDOC => XDOC, STAG => STYPECODE, SNS => STSD, SVAL => REC.DOC_TYPE);
|
||||||
|
XPREFIX := UTL_CREATENODE(XDOC => XDOC, STAG => SPREFIX, SNS => STSD, SVAL => REC.DOC_PREF);
|
||||||
|
XNUMBER := UTL_CREATENODE(XDOC => XDOC, STAG => SNUMBER, SNS => STSD, SVAL => REC.DOC_NUMB);
|
||||||
|
XDATE := UTL_CREATENODE(XDOC => XDOC,
|
||||||
|
STAG => SDATE,
|
||||||
|
SNS => STSD,
|
||||||
|
SVAL => TO_CHAR(REC.DOC_DATE, 'yyyy-mm-dd'));
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XCODE);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XNAME);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XTYPECODE);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XPREFIX);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XNUMBER);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XITEM, NEWCHILD => XDATE);
|
||||||
|
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XGETSHEETSRESPONSE, NEWCHILD => XITEM);
|
||||||
|
end loop;
|
||||||
|
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||||
|
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XGETSHEETSRESPONSE);
|
||||||
|
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 GETSHEETS;
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ñîñòàâà âåäîìîñòåé èíâåíòàðèçàöèè */
|
||||||
|
procedure GETSHEETITEMS
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
)
|
||||||
|
is
|
||||||
|
begin
|
||||||
|
null;
|
||||||
|
end GETSHEETITEMS;
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñ÷èòûâàíèå ìåñò õðàíåíèÿ */
|
||||||
|
procedure GETSTORAGES
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
)
|
||||||
|
is
|
||||||
|
begin
|
||||||
|
null;
|
||||||
|
end GETSTORAGES;
|
||||||
|
|
||||||
|
/* Ýëåêòðîííàÿ èíâåíòàðèçàöèÿ - ñîõðàíåíèå ðåçóëüòàòîâ èíâåíòàðèçàöèè */
|
||||||
|
procedure SAVESHEETITEM
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
)
|
||||||
|
is
|
||||||
|
begin
|
||||||
|
null;
|
||||||
|
end SAVESHEETITEM;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
/
|
/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user