Расширение fault-сообщения для SaveItems (отдельное для элемента хранения и местоположения)
This commit is contained in:
parent
af27405432
commit
c0a36a3c4d
@ -140,8 +140,11 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
STAG_DISTANCETOSTORAGE constant varchar2(40) := 'DistanceToStorage';
|
||||
STAG_FAULT constant varchar2(40) := 'Fault';
|
||||
STAG_DETAIL constant varchar2(40) := 'detail';
|
||||
STAG_MESSAGE constant varchar2(40) := 'Message';
|
||||
STAG_MESSAGE constant varchar2(40) := 'Message';
|
||||
STAG_STORAGEMESSAGE constant varchar2(40) := 'StorageMessage';
|
||||
STAG_ITEMMESSAGE constant varchar2(40) := 'ItemMessage';
|
||||
STAG_ERRORMESSAGE constant varchar2(40) := 'ErrorMessage';
|
||||
STAG_ERRORMESSAGE_SSITEM constant varchar2(40) := 'ErrorSaveSheetItemMessage';
|
||||
|
||||
/* Êîíñòàíòû - òèïû âîçâðàùàåìûõ çíà÷åíèé */
|
||||
SRESULT_TYPE_MNEMO constant varchar2(40):='MNEMO'; -- Ìíåìîêîä
|
||||
@ -323,6 +326,39 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
return CDATA;
|
||||
end UTL_CREATEERRORRESPONSE;
|
||||
|
||||
/* Ôîðìèðîâàíèå îòâåòà ñ îøèáêîé äëÿ ïðîöåäóðû èìïîðòà ðåçóëüòàòîâ èíâåíòàðèçàöèè */
|
||||
function UTL_CREATEERRORRESPONSE_SSITEM
|
||||
(
|
||||
SMSG_ELINVOBJECT in varchar2, -- Ñîîáùåíèå îá îøèáêå (äëÿ èíâåíòàðíîãî îáúåêòà)
|
||||
SMSG_DICPLACE in varchar2 -- Ñîîáùåíèå îá îøèáêå (äëÿ ìåñòîíàõîæäåíèÿ)
|
||||
) return clob -- Ðåçóëüòàò ðàáîòû
|
||||
is
|
||||
XDOC DBMS_XMLDOM.DOMDOCUMENT; -- Äîêóìåíò
|
||||
XFAULT DBMS_XMLDOM.DOMNODE; -- Êîðíåâîé óçåë
|
||||
XDETAIL DBMS_XMLDOM.DOMNODE; -- Óçåë äëÿ äåòàëèçàöèè îøèáêè
|
||||
XERRMSG DBMS_XMLDOM.DOMNODE; -- Óçåë ñ ñîîáùåíèåì îá îøèáêå
|
||||
XMSG_ELINVOBJECT DBMS_XMLDOM.DOMNODE; -- Óçåë òåêñòîì ñîîáùåíèÿ (äëÿ èíâåíòàðíîãî îáúåêòà)
|
||||
XMSG_DICPLACE DBMS_XMLDOM.DOMNODE; -- Óçåë òåêñòîì ñîîáùåíèÿ (äëÿ ìåñòîíàõîæäåíèÿ)
|
||||
XNODE DBMS_XMLDOM.DOMNODE; -- Áóôåð äëÿ óçëà
|
||||
CDATA clob; -- Áóôåð äëÿ ðåçóëüòàòà
|
||||
begin
|
||||
/* Ñîçäà¸ì äîêóìåíò äëÿ îòâåòà */
|
||||
UTL_CREATERESPONSEDOC(XDOC => XDOC);
|
||||
/* Ñîáèðàåì îøèáêó â îòâåò */
|
||||
XFAULT := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_FAULT, SNS => SNS_SOAPENV);
|
||||
XDETAIL := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_DETAIL);
|
||||
XERRMSG := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_ERRORMESSAGE_SSITEM, SNS => SNS_TSD);
|
||||
XMSG_ELINVOBJECT := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_ITEMMESSAGE, SNS => SNS_TSD, SVAL => SMSG_ELINVOBJECT);
|
||||
XMSG_DICPLACE := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_STORAGEMESSAGE, SNS => SNS_TSD, SVAL => SMSG_DICPLACE);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XERRMSG, NEWCHILD => XMSG_ELINVOBJECT);
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XERRMSG, NEWCHILD => XMSG_DICPLACE);
|
||||
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_SSITEM;
|
||||
|
||||
/* Ñ÷èòûâàíèå çíà÷åíèÿ ñòðóêòóðíîãî ýëåìåíòà èç èåðàðõèè àäðåñà ãåîãðàôè÷åñêîãî ïîíÿòèÿ */
|
||||
function UTL_GEOGRAFY_GET_HIER_ITEM
|
||||
(
|
||||
@ -1126,6 +1162,8 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
RELINVENTORY ELINVENTORY%rowtype; -- Çàïèñü ìîäèôèöèðóåìîé âåäîìîñòè èíâåíòàðèçàöèè
|
||||
NELINVOBJECT PKG_STD.TREF; -- Ðåã. íîìåð ïîçèöèè âåäîìîñòè èíâåíòàðèçàöèè
|
||||
SDICPLACE_BARCODE PKG_STD.TSTRING; -- Øòðèõ-êîä ìåñòîíàõîæäåíèÿ ÎÑ (äëÿ ïîçèöèè âåäîìîñòè èíâåíòàðèçàöèè)
|
||||
SERR_ELINVOBJECT PKG_STD.TSTRING; -- Áóôåð äëÿ îøèáêè îáðàáîòêè èíâåíòàðíîé êàðòî÷êè
|
||||
SERR_DICPLACE PKG_STD.TSTRING; -- Áóôåð äëÿ îøèáêè îáðàáîòêè ìåñòîíàõîæäåíèÿ
|
||||
|
||||
/* Ïîèñê ãåîãðàôè÷åñêîãî ïîíÿòèÿ ïî ïàðàìåòðàì */
|
||||
function FIND_GEOGRAFY
|
||||
@ -1533,48 +1571,70 @@ create or replace package body UDO_PKG_EXS_INV as
|
||||
PKG_MSG.RECORD_NOT_FOUND(NFLAG_SMART => 0, NDOCUMENT => NREQ_SHEET_CODE, SUNIT_TABLE => 'ELINVENTORY');
|
||||
end;
|
||||
/* Îáðàáàòûâàåì ìåñòîíàõîæäåíèå */
|
||||
PROCESS_DICPLACE(NCOMPANY => RELINVENTORY.COMPANY,
|
||||
NIS_NEW => NREQ_STORAGE_ISNEW,
|
||||
SMNEMO => SREQ_STORAGE_MNEMOCODE,
|
||||
SNAME => SREQ_STORAGE_NAME,
|
||||
SBARCODE => SREQ_STORAGE_CODE,
|
||||
SADDR_POSTCODE => SREQ_STORAGE_POSTCODE,
|
||||
SADDR_COUNTRY => SREQ_STORAGE_COUNTRY,
|
||||
SADDR_REGION => SREQ_STORAGE_REGION,
|
||||
SADDR_LOCALITY => SREQ_STORAGE_LOCALITY,
|
||||
SADDR_STREET => SREQ_STORAGE_STREET,
|
||||
SADDR_HOUSE => SREQ_STORAGE_HOUSE,
|
||||
SLATITUDE => SREQ_STORAGE_LATITUDE,
|
||||
SLONGITUDE => SREQ_STORAGE_LONGITUDE,
|
||||
SDICPLACE_BARCODE => SDICPLACE_BARCODE);
|
||||
/* Îáðàáàòûâàåì ÎÑ */
|
||||
PROCESS_INVENTORY(RELINVENTORY => RELINVENTORY,
|
||||
SBARCODE => SREQ_ITEM_CODE,
|
||||
SINV_NUMBER => SREQ_ITEM_NUMBER,
|
||||
NELINVOBJECT => NELINVOBJECT);
|
||||
/* Îáðàáàòûâàåì ýëåìåíò âåäîìîñòè */
|
||||
PROCESS_ELINVOBJECT(RELINVENTORY => RELINVENTORY,
|
||||
NELINVOBJECT => NELINVOBJECT,
|
||||
NINVPERSONS => NREQ_USER_CODE,
|
||||
DINV_DATE => DREQ_ITEM_CHECKDATE,
|
||||
SBARCODE => SDICPLACE_BARCODE,
|
||||
SITEM_COMMENT => SREQ_ITEM_COMMENT,
|
||||
NITEM_DISTANCE => NREQ_ITEM_DISTANCE,
|
||||
SITEM_LATITUDE => SREQ_ITEM_LATITUDE,
|
||||
SITEM_LONGITUDE => SREQ_ITEM_LONGITUDE,
|
||||
NITEM_QUANTITY => NREQ_ITEM_QUANTITY);
|
||||
begin
|
||||
PROCESS_DICPLACE(NCOMPANY => RELINVENTORY.COMPANY,
|
||||
NIS_NEW => NREQ_STORAGE_ISNEW,
|
||||
SMNEMO => SREQ_STORAGE_MNEMOCODE,
|
||||
SNAME => SREQ_STORAGE_NAME,
|
||||
SBARCODE => SREQ_STORAGE_CODE,
|
||||
SADDR_POSTCODE => SREQ_STORAGE_POSTCODE,
|
||||
SADDR_COUNTRY => SREQ_STORAGE_COUNTRY,
|
||||
SADDR_REGION => SREQ_STORAGE_REGION,
|
||||
SADDR_LOCALITY => SREQ_STORAGE_LOCALITY,
|
||||
SADDR_STREET => SREQ_STORAGE_STREET,
|
||||
SADDR_HOUSE => SREQ_STORAGE_HOUSE,
|
||||
SLATITUDE => SREQ_STORAGE_LATITUDE,
|
||||
SLONGITUDE => SREQ_STORAGE_LONGITUDE,
|
||||
SDICPLACE_BARCODE => SDICPLACE_BARCODE);
|
||||
exception
|
||||
when others then
|
||||
SERR_DICPLACE := sqlerrm;
|
||||
end;
|
||||
/* Åñëè ìåòîíàõîæäåíèå îáðàáîòàíî óñïåøíî */
|
||||
if (SERR_DICPLACE is null) then
|
||||
begin
|
||||
/* Îáðàáàòûâàåì ÎÑ */
|
||||
PROCESS_INVENTORY(RELINVENTORY => RELINVENTORY,
|
||||
SBARCODE => SREQ_ITEM_CODE,
|
||||
SINV_NUMBER => SREQ_ITEM_NUMBER,
|
||||
NELINVOBJECT => NELINVOBJECT);
|
||||
/* Îáðàáàòûâàåì ýëåìåíò âåäîìîñòè */
|
||||
PROCESS_ELINVOBJECT(RELINVENTORY => RELINVENTORY,
|
||||
NELINVOBJECT => NELINVOBJECT,
|
||||
NINVPERSONS => NREQ_USER_CODE,
|
||||
DINV_DATE => DREQ_ITEM_CHECKDATE,
|
||||
SBARCODE => SDICPLACE_BARCODE,
|
||||
SITEM_COMMENT => SREQ_ITEM_COMMENT,
|
||||
NITEM_DISTANCE => NREQ_ITEM_DISTANCE,
|
||||
SITEM_LATITUDE => SREQ_ITEM_LATITUDE,
|
||||
SITEM_LONGITUDE => SREQ_ITEM_LONGITUDE,
|
||||
NITEM_QUANTITY => NREQ_ITEM_QUANTITY);
|
||||
exception
|
||||
when others then
|
||||
SERR_ELINVOBJECT := sqlerrm;
|
||||
end;
|
||||
else
|
||||
SERR_ELINVOBJECT := 'Âîçíèêëè îøèáêè ïðè îáðàáîòêå ìåñòà õðàíåíèÿ';
|
||||
end if;
|
||||
else
|
||||
P_EXCEPTION(0, 'Â çàïðîñå íå óêàçàí èäåíòèôèêàòîð âåäîìîñòè.');
|
||||
end if;
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XSAVESHEETITEMRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_SAVESHEETITEMRSPNS, SNS => SNS_TSD);
|
||||
/* Ôîðìèðóåì ðåçóëüòàò */
|
||||
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_RESULT, SNS => SNS_TSD, SVAL => 'true');
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XSAVESHEETITEMRESPONSE, NEWCHILD => XITEM);
|
||||
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XSAVESHEETITEMRESPONSE);
|
||||
/* Åñëè îøèáîê íåò - âîçâðàùàåì ïîëîæèòåëüíûé îòâåò */
|
||||
if ((SERR_ELINVOBJECT is null) and (SERR_DICPLACE is null)) then
|
||||
/* Ñîçäà¸ì ïðîñòðàíñòâî èì¸í äëÿ îòâåòà */
|
||||
XSAVESHEETITEMRESPONSE := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_SAVESHEETITEMRSPNS, SNS => SNS_TSD);
|
||||
/* Ôîðìèðóåì ðåçóëüòàò */
|
||||
XITEM := UTL_CREATENODE(XDOC => XDOC, STAG => STAG_RESULT, SNS => SNS_TSD, SVAL => 'true');
|
||||
XNODE := DBMS_XMLDOM.APPENDCHILD(N => XSAVESHEETITEMRESPONSE, NEWCHILD => XITEM);
|
||||
/* Îáîðà÷èâàåì îòâåò â êîíâåðò */
|
||||
CRESPONSE := UTL_CREATERESPONSE(XDOC => XDOC, XCONTENT => XSAVESHEETITEMRESPONSE);
|
||||
else
|
||||
/* Áûëè îøèáêè - âåðí¸ì èõ */
|
||||
CRESPONSE := UTL_CREATEERRORRESPONSE_SSITEM(SMSG_ELINVOBJECT => UTL_CORRECT_ERR(SERR => SERR_ELINVOBJECT),
|
||||
SMSG_DICPLACE => UTL_CORRECT_ERR(SERR => SERR_DICPLACE));
|
||||
end if;
|
||||
exception
|
||||
/* Ïåðåõâàòûâàåì âîçìîæíûå îøèáêè */
|
||||
/* Ïåðåõâàòûâàåì âîçìîæíûå íåîáðàáîòàííûå ðàíåå îøèáêè */
|
||||
when others then
|
||||
CRESPONSE := UTL_CREATEERRORRESPONSE(SMSG => UTL_CORRECT_ERR(SERR => sqlerrm));
|
||||
end;
|
||||
|
Loading…
x
Reference in New Issue
Block a user