234 lines
8.8 KiB
Plaintext
234 lines
8.8 KiB
Plaintext
create or replace package UDO_PKG_P8PANELS_USETTINGS as
|
||
|
||
/* “ñòàíîâêà íàñòðîéêè ïàíåëè */
|
||
procedure SETTINGS_SET
|
||
(
|
||
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
|
||
CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè
|
||
);
|
||
|
||
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
|
||
procedure SETTINGS_GET
|
||
(
|
||
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
|
||
COUT out clob -- <20>àñòðîéêè ïàíåëè
|
||
);
|
||
|
||
end UDO_PKG_P8PANELS_USETTINGS;
|
||
/
|
||
create or replace package body UDO_PKG_P8PANELS_USETTINGS as
|
||
|
||
/* Šîíñòàíòû - îáùèå */
|
||
XRQ_SETTINGS constant PKG_STD.TSTRING := 'XSETTINGS'; -- ˆìß óçëà íàñòðîåê ïàíåëè
|
||
|
||
/* „îáàâëåíèå çàïèñè íàñòðîéêè ïàíåëè */
|
||
procedure P8PANELS_USETTING_INSERT
|
||
(
|
||
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
|
||
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
|
||
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
|
||
CPANEL_SETTINGS in clob, -- <20>àñòðîéêè ïàíåëè
|
||
NRN out number -- <20>åã. íîìåð çàïèñè
|
||
)
|
||
is
|
||
begin
|
||
/* ƒåíåðàöèß ðåãèñòðàöèîííîãî íîìåðà çàïèñè */
|
||
NRN := GEN_IDENT();
|
||
/* „îáàâëßåì çàïèñü â òàáëèöó */
|
||
insert into UDO_P8PANELS_USETTING
|
||
(RN, COMPANY, authid, PANEL, PANEL_SETTINGS)
|
||
values
|
||
(NRN, NCOMPANY, SAUTHID, SPANEL, CPANEL_SETTINGS);
|
||
end P8PANELS_USETTING_INSERT;
|
||
|
||
/* Žáíîâëåíèå çàïèñè íàñòðîéêè ïàíåëè */
|
||
procedure P8PANELS_USETTING_UPDATE
|
||
(
|
||
NRN in number, -- <20>åã. íîìåð çàïèñè
|
||
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
|
||
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
|
||
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
|
||
CPANEL_SETTINGS in clob -- <20>àñòðîéêè ïàíåëè
|
||
)
|
||
is
|
||
begin
|
||
/* ˆñïðàâëåíèå çàïèñè â òàáëèöå */
|
||
update UDO_P8PANELS_USETTING T
|
||
set T.AUTHID = SAUTHID,
|
||
T.PANEL = SPANEL,
|
||
T.PANEL_SETTINGS = CPANEL_SETTINGS
|
||
where T.RN = NRN
|
||
and T.COMPANY = NCOMPANY;
|
||
if (sql%notfound) then
|
||
P_EXCEPTION(0,
|
||
'‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.',
|
||
TO_CHAR(NRN));
|
||
end if;
|
||
end P8PANELS_USETTING_UPDATE;
|
||
|
||
/* “äàëåíèå çàïèñè íàñòðîéêè ïàíåëè */
|
||
procedure P8PANELS_USETTING_DELETE
|
||
(
|
||
NRN in number, -- <20>åã. íîìåð çàïèñè
|
||
NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè
|
||
)
|
||
is
|
||
begin
|
||
/* “äàëåíèå çàïèñè èç òàáëèöû */
|
||
delete from UDO_P8PANELS_USETTING
|
||
where RN = NRN
|
||
and COMPANY = NCOMPANY;
|
||
|
||
if (sql%notfound) then
|
||
P_EXCEPTION(0,
|
||
'‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.',
|
||
TO_CHAR(NRN));
|
||
end if;
|
||
end P8PANELS_USETTING_DELETE;
|
||
|
||
/* ‘÷èòûâàíèå çàïèñè íàñòðîéêè ïàíåëè */
|
||
function P8PANELS_USETTING_GET
|
||
(
|
||
NFLAG_SMART in number, -- <20>ðèçíàê âûäà÷è ñîîáùåíèß îá îøèáêå
|
||
NRN in number, -- <20>åã. íîìåð çàïèñè
|
||
NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè
|
||
) return UDO_P8PANELS_USETTING%rowtype -- ‡àïèñü íàñòðîéêè ïàíåëè
|
||
is
|
||
RRESULT UDO_P8PANELS_USETTING%rowtype; -- ‡àïèñü íàñòðîéêè ïàíåëè
|
||
begin
|
||
/* ‘÷èòûâàåì çàïèñü íàñòðîéêè ïàíåëè */
|
||
begin
|
||
select T.*
|
||
into RRESULT
|
||
from UDO_P8PANELS_USETTING T
|
||
where T.RN = NRN
|
||
and T.COMPANY = NCOMPANY;
|
||
exception
|
||
when NO_DATA_FOUND then
|
||
P_EXCEPTION(NFLAG_SMART, 'Žøèáêà ñ÷èòûâàíèß çàïèñè íàñòðîéêè ïàíåëè ñ ðåã. íîìåðîì "%s".');
|
||
end;
|
||
/* ‚îçâðàùàåì ðåçóëüòàò */
|
||
return RRESULT;
|
||
end P8PANELS_USETTING_GET;
|
||
|
||
/* ‘÷èòûâàíèå ðåã. íîìåðà çàïèñè íàñòðîéêè ïàíåëè òåêóùåãî ïîëüçîâàòåëß ïî íàèìåíîâàíèþ ïàíåëè */
|
||
procedure P8PANELS_USETTING_FIND
|
||
(
|
||
NFLAG_SMART in number, -- <20>ðèçíàê ãåíåðàöèè èñêëþ÷åíèß (0 - äà, 1 - íåò)
|
||
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
|
||
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
|
||
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
|
||
NRN out number -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
|
||
)
|
||
is
|
||
begin
|
||
/* …ñëè íàèìåíîâàíèå ïàíåëè íå çàäàíî */
|
||
if (RTRIM(SPANEL) is null) then
|
||
/* ƒåíåðàöèß èñêëþ÷åíèß */
|
||
P_EXCEPTION(NFLAG_SMART, '<27>å çàäàíî íàèìåíîâàíèå íàñòðîéêè íàñòðîéêè.');
|
||
/* ‚ûõîäèì */
|
||
return;
|
||
end if;
|
||
/* …ñëè ïîëüçîâàòåëü íå çàäàí */
|
||
if (RTRIM(SAUTHID) is null) then
|
||
/* ƒåíåðàöèß èñêëþ÷åíèß */
|
||
P_EXCEPTION(NFLAG_SMART, '<27>å çàäàí ïîëüçîâàòåëü íàñòðîéêè ïàíåëè.');
|
||
/* ‚ûõîäèì */
|
||
return;
|
||
end if;
|
||
/* <20>îèñê çàïèñè */
|
||
begin
|
||
select T.RN
|
||
into NRN
|
||
from UDO_P8PANELS_USETTING T
|
||
where T.PANEL = SPANEL
|
||
and T.AUTHID = SAUTHID
|
||
and T.COMPANY = NCOMPANY;
|
||
exception
|
||
when NO_DATA_FOUND then
|
||
P_EXCEPTION(NFLAG_SMART,
|
||
'<27>àñòðîéêà ïàíåëè ñ íàèìåíîâàíèåì "%s" íå îïðåäåëÞíà.',
|
||
SPANEL);
|
||
end;
|
||
end P8PANELS_USETTING_FIND;
|
||
|
||
/* “ñòàíîâêà íàñòðîéêè ïàíåëè */
|
||
procedure SETTINGS_SET
|
||
(
|
||
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
|
||
CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè
|
||
)
|
||
is
|
||
NUDO_P8PANELS_USETTING PKG_STD.TREF; -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
|
||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
|
||
SAUTHID PKG_STD.TSTRING := UTILIZER(); -- ’åêóùèé ïîëüçîâàòåëü
|
||
CDATA clob; -- „àííûå íàñòðîéêè ïàíåëè
|
||
begin
|
||
/* …ñëè íå çàäàíî íàèìåíîâàíèå ïàíåëè */
|
||
if (RTRIM(SPANEL) is null) then
|
||
P_EXCEPTION(0,
|
||
'<27>àèìåíîâàíèå ïàíåëè ïðè ñîõðàíåíèè íàñòðîåê ïàíåëè íå îïðåäåëåíî.');
|
||
end if;
|
||
/* ”îðìàòèðóåì äàííûå íàñòðîéêè ïàíåëè */
|
||
CDATA := '<' || XRQ_SETTINGS || '>' ||
|
||
BLOB2CLOB(LBDATA => BASE64_DECODE(LCSRCE => CSETTINGS), SCHARSET => PKG_CHARSET.CHARSET_UTF_()) || '</' ||
|
||
XRQ_SETTINGS || '>';
|
||
/* <20>ðîâåðßåì ñóùåñòâîâàíèå íàñòðîåê äëß ýòîãî ïîëüçîâàòåëß ïîä òåêóùåé îðãàíèçàöèåé */
|
||
P8PANELS_USETTING_FIND(NFLAG_SMART => 1,
|
||
NCOMPANY => NCOMPANY,
|
||
SAUTHID => SAUTHID,
|
||
SPANEL => SPANEL,
|
||
NRN => NUDO_P8PANELS_USETTING);
|
||
/* …ñëè ó ïîëüçîâàòåëß óæå åñòü íàñòðîéêà */
|
||
if (NUDO_P8PANELS_USETTING is not null) then
|
||
/* Žáíîâëßåì íàñòðîéêè ïàíåëè */
|
||
P8PANELS_USETTING_UPDATE(NRN => NUDO_P8PANELS_USETTING,
|
||
NCOMPANY => NCOMPANY,
|
||
SAUTHID => SAUTHID,
|
||
SPANEL => SPANEL,
|
||
CPANEL_SETTINGS => CDATA);
|
||
else
|
||
/* ‘îçäàåì çàïèñü íàñòðîéêè ïàíåëè */
|
||
P8PANELS_USETTING_INSERT(NCOMPANY => NCOMPANY,
|
||
SAUTHID => SAUTHID,
|
||
SPANEL => SPANEL,
|
||
CPANEL_SETTINGS => CDATA,
|
||
NRN => NUDO_P8PANELS_USETTING);
|
||
end if;
|
||
end SETTINGS_SET;
|
||
|
||
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
|
||
procedure SETTINGS_GET
|
||
(
|
||
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
|
||
COUT out clob -- <20>àñòðîéêè ïàíåëè
|
||
)
|
||
is
|
||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
|
||
SAUTHID PKG_STD.TSTRING := UTILIZER(); -- ’åêóùèé ïîëüçîâàòåëü
|
||
NUDO_P8PANELS_USETTING PKG_STD.TREF; -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
|
||
RUDO_P8PANELS_USETTING UDO_P8PANELS_USETTING%rowtype; -- ‡àïèñü íàñòðîéêè ïàíåëè
|
||
begin
|
||
/* <20>ðîâåðßåì ñóùåñòâîâàíèå íàñòðîåê äëß ýòîãî ïîëüçîâàòåëß ïîä òåêóùåé îðãàíèçàöèåé */
|
||
P8PANELS_USETTING_FIND(NFLAG_SMART => 1,
|
||
NCOMPANY => NCOMPANY,
|
||
SAUTHID => SAUTHID,
|
||
SPANEL => SPANEL,
|
||
NRN => NUDO_P8PANELS_USETTING);
|
||
/* …ñëè íàñòðîéêà ñ÷èòàíà */
|
||
if (NUDO_P8PANELS_USETTING is not null) then
|
||
/* ‘÷èòûâàåì çàïèñü íàñòðîéêè */
|
||
RUDO_P8PANELS_USETTING := P8PANELS_USETTING_GET(NFLAG_SMART => 1,
|
||
NRN => NUDO_P8PANELS_USETTING,
|
||
NCOMPANY => NCOMPANY);
|
||
/* “ñòàíàâëèâàåì íàñòðîéêè ïàíåëè */
|
||
COUT := RUDO_P8PANELS_USETTING.PANEL_SETTINGS;
|
||
else
|
||
/* <20>óñòîå çíà÷åíèå */
|
||
COUT := '<XSETTINGS></XSETTINGS>';
|
||
end if;
|
||
end SETTINGS_GET;
|
||
|
||
end UDO_PKG_P8PANELS_USETTINGS;
|
||
/
|