P8PanelsCEMROS/db/UDO_PKG_P8PANELS_RPR_ANL.pck

882 lines
54 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

create or replace package UDO_PKG_P8PANELS_RPR_ANL as
/* ‘÷èòûâàíèå íàèìåíîâàíèß ïîäðàçäåëåíèß ïî ìíåìîêîäó */
procedure GET_INS_DEPARTMENT_NAME
(
SCODE in varchar2, -- Œíåìîêîä ïîäðàçäåëåíèß
SNAME out varchar2 -- <20>àèìåíîâàíèå ïîäðàçäåëåíèß
);
/* ƒðàôèê ñîñòîßíèé ðåìîíòíûõ âåäîìîñòåé */
procedure CHART_STATUSES
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- „àííûå ãðàôèêà
);
/* ƒðàôèê òðóäîâûõ çàâòðàò */
procedure CHART_SPENDINGS
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- ‘åðèàëèçîâàííûé ãðàôèê
);
/* ’àáëèöà ñòðîê ðåìîíòíûõ âåäîìîñòåé */
procedure DATA_GRID
(
NPAGE_NUMBER in number, -- <20>îìåð ñòðàíèöû (èãíîðèðóåòñß ïðè NPAGE_SIZE=0)
NPAGE_SIZE in number, -- Šîëè÷åñòâî çàïèñåé íà ñòðàíèöå (0 - âñå)
CFILTERS in clob, -- ”èëüòðû
CORDERS in clob, -- ‘îðòèðîâêè
NINCLUDE_DEF in number, -- <20>ðèçíàê âêëþ÷åíèß îïèñàíèß êîëîíîê òàáëèöû â îòâåò
COUT out clob -- ‘åðèàëèçîâàííàß òàáëèöà äàííûõ
);
/* <20>àçîâîå ôîðìèðîâàíèå óñëîâèé îòáîðà ðåìîíòíûõ âåäîìîñòåé */
procedure EQRPSHEETS_BASE_COND;
end UDO_PKG_P8PANELS_RPR_ANL;
/
create or replace package body UDO_PKG_P8PANELS_RPR_ANL as
/* ‘÷èòûâàíèå íàèìåíîâàíèß ïîäðàçäåëåíèß ïî ìíåìîêîäó */
procedure GET_INS_DEPARTMENT_NAME
(
SCODE in varchar2, -- Œíåìîêîä ïîäðàçäåëåíèß
SNAME out varchar2 -- <20>àèìåíîâàíèå ïîäðàçäåëåíèß
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
begin
/* ‘÷èòûâàåì íàèìåíîâàíèå ïîäðàçäåëåíèß */
begin
select T.NAME
into SNAME
from INS_DEPARTMENT T
where T.CODE = SCODE
and T.COMPANY = NCOMPANY;
exception
when others then
SNAME := '<27>å îïðåäåëåíî';
end;
end GET_INS_DEPARTMENT_NAME;
/* <20>àçðåøåíèå ññûëîê ïàðàìåòðîâ */
procedure PARAMS_JOINS
(
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NDEPTCUSTOMER out number, -- <20>åã. íîìåð ïîäðàçäåëåíèß-çàêàç÷èêà
NTYPEWRK out number, -- <20>åã. íîìåð òèïîâîé ðàáîòû ñïåöèôèêàöèè
NEQWRKKIND out number -- <20>åã. íîìåð âèäà òèïîâîé ðàáîòû ñïåöèôèêàöèè
)
is
begin
/* <20>åã. íîìåð ïîäðàçäåëåíèß-çàêàç÷èêà */
FIND_SUBDIVS_CODE_EX(NFLAG_SMART => 0,
NFLAG_OPTION => 1,
NCOMPANY => NCOMPANY,
SCODE => SINS_DEPARTMENT,
NRN => NDEPTCUSTOMER);
/* <20>åã. íîìåð òèïîâîé ðàáîòû ñïåöèôèêàöèè */
FIND_EQTYPEWRK_CODE(NFLAG_SMART => 0,
NFLAG_OPTION => 1,
NCOMPANY => NCOMPANY,
SCODE => SEQTYPEWRK,
NRN => NTYPEWRK);
/* <20>åã. íîìåð âèäà òèïîâîé ðàáîòû ñïåöèôèêàöèè */
FIND_EQWRKKIND_CODE(NFLAG_SMART => 0,
NFLAG_OPTION => 1,
NCOMPANY => NCOMPANY,
SCODE => SEQWRKKIND,
NRN => NEQWRKKIND);
end PARAMS_JOINS;
/* ”îðìèðîâàíèå óñëîâèé äëß îòáîðà çàïèñåé ðåìîíòíûõ âåäîìîñòåé */
procedure EQRPSHEETS_COND_SET
(
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå (null, 0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå)
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
NIDENT out number -- ˆäåíòèôèêàòîð äàííûõ
)
is
begin
/* ƒåíåðèðóåì èäåíòèôèêàòîð */
NIDENT := GEN_IDENT();
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - <20>ðîëîã */
PKG_COND_BROKER.PROLOGUE(IMODE => PKG_COND_BROKER.MODE_SMART_, NIDENT => NIDENT);
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - “ñòàíîâêà ïðîöåäóðû ñåðâåðíîãî îòáîðà */
PKG_COND_BROKER.SET_PROCEDURE(SPROCEDURE_NAME => 'UDO_PKG_P8PANELS_RPR_ANL.EQRPSHEETS_BASE_COND');
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - “ñòàíîâêà ðàçäåëà */
PKG_COND_BROKER.SET_UNIT(SUNITCODE => 'EquipRepairSheets');
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - “ñòàíîâêà îðãàíèçàöèè */
PKG_COND_BROKER.SET_COMPANY(NCOMPANY => NCOMPANY);
/* „àòà íà÷àëà ôàêòè÷åñêàß ñ */
PKG_COND_BROKER.SET_CONDITION_DATE('EDREPAIRFACTBEGINFrom', DDATE_FROM);
/* „àòà íà÷àëà ôàêòè÷åñêàß ïî */
PKG_COND_BROKER.SET_CONDITION_DATE('EDREPAIRFACTBEGINTo', DDATE_TO);
/* <20>îäðàçäåëåíèå-çàêàç÷èê */
PKG_COND_BROKER.SET_CONDITION_STR('CUSTOMERDEPTEDIT', SINS_DEPARTMENT, 0);
/* ’èïîâàß ðàáîòà */
PKG_COND_BROKER.SET_CONDITION_STR('EQTYPEWRKCOMP', SEQTYPEWRK, 0);
/* ‚èä òèïîâîé ðàáîòû */
PKG_COND_BROKER.SET_CONDITION_STR('EQWRKKINDCOMP', SEQWRKKIND, 0);
/* ‘îñòîßíèå */
PKG_COND_BROKER.SET_CONDITION_NUM('STATETYPE', NSTATE);
/* ’ðóäîâûå çàòðàòû */
PKG_COND_BROKER.SET_CONDITION_NUM('TYPESPEND', NTYPESPEND);
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - <20>ïèëîã */
PKG_COND_BROKER.EPILOGUE();
end EQRPSHEETS_COND_SET;
/* ƒðàôèê ñîñòîßíèé ðåìîíòíûõ âåäîìîñòåé */
procedure CHART_STATUSES
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå (null, 0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå)
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- ‘åðèàëèçîâàííûé ãðàôèê
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
RCH PKG_P8PANELS_VISUAL.TCHART; -- ƒðàôèê
RCH_DS PKG_P8PANELS_VISUAL.TCHART_DATASET; -- <20>àáîð äàííûõ
RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- €òðèáóòû ýëåìåíòà íàáîðà äàííûõ
NCOMPLETED PKG_STD.TNUMBER; -- Šîëè÷åñòâî çàâåðøåííûõ
NUNCOMPLETED PKG_STD.TNUMBER; -- Šîëè÷åñòâî íåçàâåðøåííûõ
NIDENT PKG_STD.TREF; -- ˆäåíòèôèêàòîð îòîáðàííûõ çàïèñåé
NCOMPLETED_SUM EQRPSHEETS.COASTFACT%type; -- ‘óììà ïî çàâåðøåííûì
NUNCOMPLETED_SUM EQRPSHEETS.COASTFACT%type; -- ‘óììà ïî íåçàâåðøåííûì
begin
/* ‘ôîðìèðóåì çàãîëîâîê ãðàôèêà */
RCH := PKG_P8PANELS_VISUAL.TCHART_MAKE(STYPE => PKG_P8PANELS_VISUAL.SCHART_TYPE_PIE,
STITLE => '<27>åìîíòû',
SLGND_POS => PKG_P8PANELS_VISUAL.SCHART_LGND_POS_RIGHT);
/* ‘ôîðìèðóåì íàáîð äàííûõ */
RCH_DS := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => '<27>åìîíòû');
/* Žòáåðåì ðåìîíòíûå âåäîìîñòè */
EQRPSHEETS_COND_SET(NCOMPANY => NCOMPANY,
DDATE_FROM => TRUNC(DDATE_FROM),
DDATE_TO => TRUNC(DDATE_TO),
SINS_DEPARTMENT => SINS_DEPARTMENT,
SEQTYPEWRK => SEQTYPEWRK,
SEQWRKKIND => SEQWRKKIND,
NSTATE => NSTATE,
NTYPESPEND => NTYPESPEND,
NIDENT => NIDENT);
/* ‘÷èòûâàåì êîëè÷åñòâà ïî ñòàòóñàì */
begin
select COALESCE(sum(case
when T.STATE = 3 then
1
else
0
end), 0) COMPLETED,
COALESCE(sum(case
when T.STATE = 3 then
T.COASTFACT
else
0
end), 0) COMPLETED_SUM,
COALESCE(sum(case
when T.STATE in (0, 2) then
1
else
0
end), 0) UNCOMPLETED,
COALESCE(sum(case
when T.STATE in (0, 2) then
T.COASTFACT
else
0
end), 0) UNCOMPLETED_SUM
into NCOMPLETED,
NCOMPLETED_SUM,
NUNCOMPLETED,
NUNCOMPLETED_SUM
from EQRPSHEETS T
where T.RN in (select ID from COND_BROKER_IDSMART where IDENT = NIDENT)
and T.STATE in (0,2,3);
exception
when NO_DATA_FOUND then
NCOMPLETED := 0;
NUNCOMPLETED := 0;
when others then
P_EXCEPTION(0, 'Žøèáêà ñ÷èòûâàíèß ãðàôèêà ñòàòóñîâ.');
end;
/* „îáàâèì ìåòêó äëß çàâåðøåííûõ */
PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => '‡àâåðøåííûå (' || TRIM(TO_CHAR(NCOMPLETED_SUM, '999G999G999G999G999G990D99', 'nls_numeric_characters=''. ''')) || ')');
/* ‘ôîðìèðóåì äîïîëíèòåëüíûå àòðèáóòû äëß êëèåíòñêîãî ïðèëîæåíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NSTATE',
SVALUE => '1',
BCLEAR => true);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS, NVALUE => NCOMPLETED, RATTR_VALS => RATTR_VALS);
/* „îáàâèì ìåòêó äëß íåçàâåðøåííûõ */
PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => '<27>å çàâåðøåííûå (' || TRIM(TO_CHAR(NUNCOMPLETED_SUM, '999G999G999G999G999G990D99', 'nls_numeric_characters=''. ''')) || ')');
/* ‘ôîðìèðóåì äîïîëíèòåëüíûå àòðèáóòû äëß êëèåíòñêîãî ïðèëîæåíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NSTATE',
SVALUE => '0',
BCLEAR => true);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS, NVALUE => NUNCOMPLETED, RATTR_VALS => RATTR_VALS);
/* „îáàâèì íàáîð äàííûõ â ãðàôèê */
PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS);
/* ‘åðèàëèçóåì îïèñàíèå */
COUT := PKG_P8PANELS_VISUAL.TCHART_TO_XML(RCHART => RCH, NINCLUDE_DEF => 1);
end CHART_STATUSES;
/* ƒðàôèê òðóäîâûõ çàâòðàò */
procedure CHART_SPENDINGS
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå (null, 0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå)
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- ‘åðèàëèçîâàííûé ãðàôèê
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
RCH PKG_P8PANELS_VISUAL.TCHART; -- ƒðàôèê
RCH_DS_MTR PKG_P8PANELS_VISUAL.TCHART_DATASET; -- <20>àáîð äàííûõ çàòðàò íà Œ<C592>
RCH_DS_LABOR PKG_P8PANELS_VISUAL.TCHART_DATASET; -- <20>àáîð äàííûõ òðóäîâûõ çàòðàò
RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- €òðèáóòû ýëåìåíòà íàáîðà äàííûõ
NINTERNAL_MTR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî çàòðàò íà Œ<C592> (âíóòðåííèå)
NINTERNAL_LABOR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî òðóäîâûõ çàòðàò (âíóòðåííèå)
NEXTERNAL_MTR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî çàòðàò íà Œ<C592> (âíåøíèå)
NEXTERNAL_LABOR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî òðóäîâûõ çàòðàò (âíåøíèå)
NIDENT PKG_STD.TREF; -- ˆäåíòèôèêàòîð îòîáðàííûõ çàïèñåé
/* ”îðìèðîâàíèå ýëåìåíòà ãðàôèêà */
procedure MAKE_CHART_ELEMENT
(
RCH in out nocopy PKG_P8PANELS_VISUAL.TCHART, -- ƒðàôèê
RCH_DS_MTR in out nocopy PKG_P8PANELS_VISUAL.TCHART_DATASET, -- <20>àáîð äàííûõ çàòðàò íà Œ<C592>
RCH_DS_LABOR in out nocopy PKG_P8PANELS_VISUAL.TCHART_DATASET, -- <20>àáîð äàííûõ òðóäîâûõ çàòðàò
SELEMENT_NAME in varchar2, -- <20>àèìåíîâàíèå ýëåìåíòà
NTYPE in number, -- ’èï ýëåìåíòà
NMTR_VALUE in number, -- ‡íà÷åíèå çàòðàò íà Œ<C592>
NLABOR_VALUE in number -- ‡íà÷åíèå òðóäîâûõ çàòðàò
)
is
RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- €òðèáóòû ýëåìåíòà íàáîðà äàííûõ
begin
/* „îáàâèì ìåòêó */
PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => SELEMENT_NAME);
/* ‘ôîðìèðóåì äîï. àòðèáóò òèïà */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NTYPE',
SVALUE => TO_CHAR(NTYPE),
BCLEAR => true);
/* „îï. àòðèáóò ñõëîïûâàíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'stack',
SVALUE => SELEMENT_NAME);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS_MTR, NVALUE => NMTR_VALUE, RATTR_VALS => RATTR_VALS);
/* ‘ôîðìèðóåì äîï. àòðèáóò òèïà */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NTYPE',
SVALUE => '0',
BCLEAR => true);
/* „îïîëíèòåëüíûé àòðèáóò ñõëîïûâàíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'stack',
SVALUE => SELEMENT_NAME);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS_LABOR, NVALUE => NLABOR_VALUE, RATTR_VALS => RATTR_VALS);
end MAKE_CHART_ELEMENT;
begin
/* ‘ôîðìèðóåì çàãîëîâîê ãðàôèêà */
RCH := PKG_P8PANELS_VISUAL.TCHART_MAKE(STYPE => PKG_P8PANELS_VISUAL.SCHART_TYPE_BAR,
STITLE => '‡àòðàòû íà ðåìîíòû',
SLGND_POS => PKG_P8PANELS_VISUAL.SCHART_LGND_POS_RIGHT);
/* ‘ôîðìèðóåì íàáîð äàííûõ çàòðàò íà Œ<C592> */
RCH_DS_MTR := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => '‡àòðàòû íà Œ<C592>');
/* ‘ôîðìèðóåì íàáîð äàííûõ òðóäîâûõ çàòðàò */
RCH_DS_LABOR := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => '’ðóäîâûå çàòðàòû');
/* Žòáåðåì ðåìîíòíûå âåäîìîñòè */
EQRPSHEETS_COND_SET(NCOMPANY => NCOMPANY,
DDATE_FROM => TRUNC(DDATE_FROM),
DDATE_TO => TRUNC(DDATE_TO),
SINS_DEPARTMENT => SINS_DEPARTMENT,
SEQTYPEWRK => SEQTYPEWRK,
SEQWRKKIND => SEQWRKKIND,
NSTATE => NSTATE,
NTYPESPEND => NTYPESPEND,
NIDENT => NIDENT);
/* ‘÷èòûâàåì êîëè÷åñòâà ïî âíóòðåííèì/âíåøíèì */
begin
select /*COALESCE(sum(case when T.DEPTPERF is not null then 1 else 0 end), 0) INTERNAL_MTR,
COALESCE(sum(case when T.DEPTPERF is not null then 2 else 0 end), 0) INTERNAL_LABOR,
COALESCE(sum(case when T.PERFORM_AGN is not null then 1 else 0 end), 0) EXTERNAL_MTR,
COALESCE(sum(case when T.PERFORM_AGN is not null then 2 else 0 end), 0) EXTERNAL_LABOR*/
/* „ëß …Œ<E280A6>Ž */
COALESCE(sum(case when T.DEPTPERF is not null then UDO_F_EQRP_SHMRC_SHOVH_SUM(T.COMPANY, T.RN) else 0 end), 0) INTERNAL_MTR,
COALESCE(sum(case when T.DEPTPERF is not null then UDO_F_ERS_EQRPSHWRK_SUM(T.COMPANY, T.RN) else 0 end), 0) INTERNAL_LABOR,
COALESCE(sum(case when T.PERFORM_AGN is not null then UDO_F_EQRP_SHMRC_SHOVH_SUM(T.COMPANY, T.RN) else 0 end), 0) EXTERNAL_MTR,
COALESCE(sum(case when T.PERFORM_AGN is not null then UDO_F_ERS_EQRPSHWRK_SUM(T.COMPANY, T.RN) else 0 end), 0) EXTERNAL_LABOR
into NINTERNAL_MTR,
NINTERNAL_LABOR,
NEXTERNAL_MTR,
NEXTERNAL_LABOR
from EQRPSHEETS T
where T.RN in (select ID from COND_BROKER_IDSMART where IDENT = NIDENT)
and T.STATE in (0,2,3);
exception
when NO_DATA_FOUND then
NINTERNAL_MTR := 0;
NINTERNAL_LABOR := 0;
NEXTERNAL_MTR := 0;
NEXTERNAL_LABOR := 0;
when others then
P_EXCEPTION(0, 'Žøèáêà ñ÷èòûâàíèß ãðàôèêà òðóäîâûõ çàòðàò.');
end;
/* ”îðìèðîâàíèå âíóòðåííèõ */
MAKE_CHART_ELEMENT(RCH => RCH,
RCH_DS_MTR => RCH_DS_MTR,
RCH_DS_LABOR => RCH_DS_LABOR,
SELEMENT_NAME => '‚íóòðåííèå',
NTYPE => 0,
NMTR_VALUE => NINTERNAL_MTR,
NLABOR_VALUE => NINTERNAL_LABOR);
/* ”îðìèðîâàíèå âíåøíèõ */
MAKE_CHART_ELEMENT(RCH => RCH,
RCH_DS_MTR => RCH_DS_MTR,
RCH_DS_LABOR => RCH_DS_LABOR,
SELEMENT_NAME => '‚íåøíèå',
NTYPE => 1,
NMTR_VALUE => NEXTERNAL_MTR,
NLABOR_VALUE => NEXTERNAL_LABOR);
/* „îáàâèì íàáîð äàííûõ â ãðàôèê */
PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS_MTR);
/* „îáàâèì íàáîð äàííûõ â ãðàôèê */
PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS_LABOR);
/* ‘åðèàëèçóåì îïèñàíèå */
COUT := PKG_P8PANELS_VISUAL.TCHART_TO_XML(RCHART => RCH, NINCLUDE_DEF => 1);
end CHART_SPENDINGS;
/* ’àáëèöà ñòðîê ðåìîíòíûõ âåäîìîñòåé */
procedure DATA_GRID
(
NPAGE_NUMBER in number, -- <20>îìåð ñòðàíèöû (èãíîðèðóåòñß ïðè NPAGE_SIZE=0)
NPAGE_SIZE in number, -- Šîëè÷åñòâî çàïèñåé íà ñòðàíèöå (0 - âñå)
CFILTERS in clob, -- ”èëüòðû
CORDERS in clob, -- ‘îðòèðîâêè
NINCLUDE_DEF in number, -- <20>ðèçíàê âêëþ÷åíèß îïèñàíèß êîëîíîê òàáëèöû â îòâåò
COUT out clob -- ‘åðèàëèçîâàííàß òàáëèöà äàííûõ
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
NIDENT PKG_STD.TREF := GEN_IDENT(); -- ˆäåíòèôèêàòîð îòáîðà
RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- ”èëüòðû
RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- ‘îðòèðîâêè
RDG PKG_P8PANELS_VISUAL.TDG; -- Žïèñàíèå òàáëèöû
RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- ‘òðîêà òàáëèöû
NROW_FROM PKG_STD.TREF; -- <20>îìåð ñòðîêè ñ
NROW_TO PKG_STD.TREF; -- <20>îìåð ñòðîêè ïî
CSQL clob; -- <20>óôåð äëß çàïðîñà
ICURSOR integer; -- Šóðñîð äëß èñïîëíåíèß çàïðîñà
begin
/* —èòàåì ôèëüòðû */
RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS);
/* —èòåì ñîðòèðîâêè */
RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML(CORDERS => CORDERS);
/* <20>ðåîáðàçóåì íîìåð è ðàçìåð ñòðàíèöû â íîìåð ñòðîê ñ è ïî */
PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
NPAGE_SIZE => NPAGE_SIZE,
NROW_FROM => NROW_FROM,
NROW_TO => NROW_TO);
/* ˆíèöèàëèçèðóåì òàáëèöó äàííûõ */
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true);
/* Žïèñûâàåì êîëîíêè òàáëèöû äàííûõ */
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NRN',
SCAPTION => '<27>åã. íîìåð',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BVISIBLE => false);
/* Žòîáðàæàåìûå êîëîíêè òàáëèöû */
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDOCTYPES',
SCAPTION => '’èï äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EDDOCTYPE',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SPREF',
SCAPTION => '<27>ðåôèêñ äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EDPREFFrom',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SNUMB',
SCAPTION => '<27>îìåð äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EDNUMBFrom',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDOCDATE',
SCAPTION => '„àòà äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
SCOND_FROM => 'EDDATEFrom',
SCOND_TO => 'EDDATETo',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NSTATE',
SCAPTION => '‘îñòîßíèå',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDATEFACT_BEG',
SCAPTION => '„àòà è âðåìß ôàêòè÷åñêîãî íà÷àëà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDATEFACT_END',
SCAPTION => '„àòà è âðåìß ôàêòè÷åñêîãî îêîí÷àíèß',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTCUSTOMER_CODE',
SCAPTION => '<27>îäðàçäåëåíèå çàêàç÷èê',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTCUSTOMER_NAME',
SCAPTION => '<27>àèìåíîâàíèå ïîäðàçäåëåíèß çàêàç÷èêà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTPERF_CODE',
SCAPTION => '<27>îäðàçäåëåíèå èñïîëíèòåëü',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTPERF_NAME',
SCAPTION => '<27>àèìåíîâàíèå ïîäðàçäåëåíèß èñïîëíèòåëß',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SPERFORM_AGN_CODE',
SCAPTION => '‚íåøíèé èñïîëíèòåëü',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SPERFORM_AGN_NAME',
SCAPTION => '<27>àèìåíîâàíèå âíåøíåãî èñïîëíèòåëß',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NLABORIOUSNESS_PLAN',
SCAPTION => '’ðóäîåìêîñòü, ÷àñ (ïëàí)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NLABORIOUSNESS_FACT',
SCAPTION => '’ðóäîåìêîñòü, ÷àñ (ôàêò)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NNORMH_COST',
SCAPTION => '#‘òîèìîñòü í/÷',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NWORK_COST',
SCAPTION => '#‘òîèìîñòü ðàáîò',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NMTR_COST',
SCAPTION => '#‘òîèìîñòü ‡/—',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NCOASTFACT',
SCAPTION => '‘òîèìîñòü ïî ôàêòó',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
/* ‘êðûòûå êîëîíêè òàáëèöû (äëß äîï. ôèëüòðîâ) */
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDATEBEGIN_FILTER',
SCAPTION => '„àòà è âðåìß ôàêòè÷åñêîãî îêîí÷àíèß (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
SCOND_FROM => 'EDREPAIRFACTBEGINFrom',
SCOND_TO => 'EDREPAIRFACTBEGINTo',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SCUSTOMERDEPT_FILTER',
SCAPTION => '<27>îäðàçäåëåíèå çàêàç÷èê (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'CUSTOMERDEPTEDIT',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SWORKTYPE_FILTER',
SCAPTION => '’èïîâàß ðàáîòà (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EQTYPEWRKCOMP',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SWORKKIND_FILTER',
SCAPTION => '‚èä òèïîâûõ ðàáîò (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EQWRKKINDCOMP',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NSTATE_FILTER',
SCAPTION => '‘îñòîßíèå (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
SCOND_FROM => 'STATETYPE',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NTYPESPEND_FILTER',
SCAPTION => '’ðóäîâûå çàòðàòû (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
SCOND_FROM => 'TYPESPEND',
BFILTER => true,
BVISIBLE => false);
begin
/* „îáàâëßåì ïîäñêàçêó ñîâìåñòèìîñòè */
CSQL := PKG_SQL_BUILD.COMPATIBLE(SSQL => CSQL);
/* ”îðìèðóåì çàïðîñ */
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => 'select *');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select D.*,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.SQLROWNUM() || ' NROW');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select A.RN as NRN,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' B.DOCCODE as SDOCTYPES,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TRIM(A.PREF) as SPREF,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TRIM(A.NUMB) as SNUMB,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.DOCDATE as DDOCDATE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.STATE as NSTATE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.DATEFACT_BEG as DDATEFACT_BEG,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.DATEFACT_END as DDATEFACT_END,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DP.CODE as SDEPTCUSTOMER_CODE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DP.NAME as SDEPTCUSTOMER_NAME,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' E.CODE as SDEPTPERF_CODE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' E.NAME as SDEPTPERF_NAME,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.AGNABBR as SPERFORM_AGN_CODE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.AGNNAME as SPERFORM_AGN_NAME,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select NVL(sum(ES.WORKTIMEPLAN * DECODE(ES.TIME_MEAS,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(24) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) || ') * ES.PERFORM_QUANT),');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(0) || ')');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQRPSHWRK W,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQRPSHWRC ES');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ES.PRN = W.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and W.PRN = A.RN) as NLABORIOUSNESS_PLAN,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select NVL(sum(ES.WORKTIMEFACT * DECODE(ES.TIME_MEAS,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(24) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) ||') * ES.QUANTFACT),');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(0) || ')');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQRPSHWRK W,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQRPSHWRC ES');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ES.PRN = W.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and W.PRN = A.RN) as NLABORIOUSNESS_FACT,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PERFORM('UDO_F_ERS_EQRPSHWRK_AVG_PRICE') || '(A.COMPANY, A.RN) NNORMH_COST,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PERFORM('UDO_F_ERS_EQRPSHWRK_SUM') || '(A.COMPANY, A.RN) NWORK_COST,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PERFORM('UDO_F_EQRP_SHMRC_SHOVH_SUM') || '(A.COMPANY, A.RN) NMTR_COST,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.COASTFACT as NCOASTFACT');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQRPSHEETS A');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join AGNLIST C on A.PERFORM_AGN = C.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join INS_DEPARTMENT E on A.DEPTPERF = E.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join AGNLIST AGN on A.CUSTOMER_AGN = AGN.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join INS_DEPARTMENT DP on A.DEPTCUSTOMER = DP.RN,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DOCTYPES B');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where A.COMPANY = :NCOMPANY');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and A.STATE in (0,2,3)');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and A.DOCTYPES = B.RN');
/*PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and exists (select null from V_USERPRIV UP where UP.CATALOG = A.CRN)');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and exists (select null');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from V_USERPRIV UP');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where UP.JUR_PERS = A.JURPERSONS');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and UP.UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('EquipRepairSheets') || ')');*/
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and A.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT)');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
/* “÷òÞì ñîðòèðîâêè */
PKG_P8PANELS_VISUAL.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG,
RORDERS => RO,
SPATTERN => '%ORDER_BY%',
CSQL => CSQL);
/* “÷òÞì ôèëüòðû */
PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY(NIDENT => NIDENT,
NCOMPANY => NCOMPANY,
SUNIT => 'EquipRepairSheets',
SPROCEDURE => 'UDO_PKG_P8PANELS_RPR_ANL.EQRPSHEETS_BASE_COND',
RDATA_GRID => RDG,
RFILTERS => RF);
/* <20>àçáèðàåì åãî */
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
/* „åëàåì ïîäñòàíîâêó ïàðàìåòðîâ */
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NCOMPANY', NVALUE => NCOMPANY);
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NIDENT', NVALUE => NIDENT);
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_FROM', NVALUE => NROW_FROM);
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_TO', NVALUE => NROW_TO);
/* Žïèñûâàåì ñòðóêòóðó çàïèñè êóðñîðà */
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 1);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 3);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 4);
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 5);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 6);
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 7);
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 8);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 9);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 10);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 11);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 12);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 13);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 14);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 15);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 16);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 17);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 18);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 19);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 20);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 21);
/* „åëàåì âûáîðêó */
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
null;
end if;
/* Žáõîäèì âûáðàííûå çàïèñè */
while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
loop
/* „îáàâëßåì êîëîíêè ñ äàííûìè */
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NRN',
ICURSOR => ICURSOR,
NPOSITION => 1,
BCLEAR => true);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDOCTYPES',
ICURSOR => ICURSOR,
NPOSITION => 2);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SPREF',
ICURSOR => ICURSOR,
NPOSITION => 3);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SNUMB',
ICURSOR => ICURSOR,
NPOSITION => 4);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW,
SNAME => 'DDOCDATE',
ICURSOR => ICURSOR,
NPOSITION => 5);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NSTATE',
ICURSOR => ICURSOR,
NPOSITION => 6);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW,
SNAME => 'DDATEFACT_BEG',
ICURSOR => ICURSOR,
NPOSITION => 7);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW,
SNAME => 'DDATEFACT_END',
ICURSOR => ICURSOR,
NPOSITION => 8);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTCUSTOMER_CODE',
ICURSOR => ICURSOR,
NPOSITION => 9);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTCUSTOMER_NAME',
ICURSOR => ICURSOR,
NPOSITION => 10);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTPERF_CODE',
ICURSOR => ICURSOR,
NPOSITION => 11);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTPERF_NAME',
ICURSOR => ICURSOR,
NPOSITION => 12);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SPERFORM_AGN_CODE',
ICURSOR => ICURSOR,
NPOSITION => 13);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SPERFORM_AGN_NAME',
ICURSOR => ICURSOR,
NPOSITION => 14);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NLABORIOUSNESS_PLAN',
ICURSOR => ICURSOR,
NPOSITION => 15);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NLABORIOUSNESS_FACT',
ICURSOR => ICURSOR,
NPOSITION => 16);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NNORMH_COST',
ICURSOR => ICURSOR,
NPOSITION => 17);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NWORK_COST',
ICURSOR => ICURSOR,
NPOSITION => 18);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NMTR_COST',
ICURSOR => ICURSOR,
NPOSITION => 19);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NCOASTFACT',
ICURSOR => ICURSOR,
NPOSITION => 20);
/* „îáàâëßåì ñòðîêó â òàáëèöó */
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
end loop;
/* Žñâîáîæäàåì êóðñîð */
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
exception
when others then
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
raise;
end;
/* ‘åðèàëèçóåì îïèñàíèå */
COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
end DATA_GRID;
/* <20>àçîâîå ôîðìèðîâàíèå óñëîâèé îòáîðà ðåìîíòíûõ âåäîìîñòåé */
procedure EQRPSHEETS_BASE_COND
as
SPREF PKG_STD.TSTRING;
SNUMB PKG_STD.TSTRING;
SWORK_TYPE PKG_STD.TSTRING;
SWORK_KIND PKG_STD.TSTRING;
SCLAUSE PKG_STD.TSTRING;
NSTATE PKG_STD.TNUMBER;
NTYPESPEND PKG_STD.TNUMBER;
begin
/* “ñòàíîâêà ãëàâíîé òàáëèöû */
PKG_COND_BROKER.SET_TABLE( 'EQRPSHEETS' );
/* ”îðìèðîâàíèå óñëîâèé òàáëèöû */
-- <20>åêâèçèòû/„îêóìåíò/’èï
PKG_COND_BROKER.ADD_CONDITION_CODE( 'DOCCODE','EDDOCTYPE','DOCTYPES <- RN;DOCTYPES' );
-- <20>åêâèçèòû/„îêóìåíò/<2F>ðåôèêñ
if (PKG_COND_BROKER.CONDITION_EXISTS('EDPREFFrom') = 1) then
/* ‘÷èòûâàåì ïðåôèêñ ñ ó÷åòîì trim */
SPREF := UPPER(TRIMNUMB(PKG_COND_BROKER.GET_CONDITION_STR('EDPREFFrom') ,10));
/* “ñòàíàâëèâàåì îòáîð */
PKG_COND_BROKER.ADD_CLAUSE('UPPER(PREF) = ''' || SPREF || '''');
end if;
-- <20>åêâèçèòû/„îêóìåíò/<2F>îìåð
if (PKG_COND_BROKER.CONDITION_EXISTS('EDNUMBFrom') = 1) then
/* ‘÷èòûâàåì íîìåð ñ ó÷åòîì trim */
SNUMB := UPPER(TRIMNUMB(PKG_COND_BROKER.GET_CONDITION_STR('EDNUMBFrom') ,10));
/* “ñòàíàâëèâàåì îòáîð */
PKG_COND_BROKER.ADD_CLAUSE('UPPER(NUMB) = ''' || SNUMB || '''');
end if;
-- <20>åêâèçèòû/„îêóìåíò/„àòà ñ..ïî
PKG_COND_BROKER.ADD_CONDITION_BETWEEN( 'DOCDATE','EDDATEFrom','EDDATETo' );
/* …ñëè ñîñòîßíèå óêàçàíî */
if (PKG_COND_BROKER.CONDITION_EXISTS('STATETYPE') = 1) then
/* ‘÷èòûâàåì ôèëüòð ñîñòîßíèß (0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå) */
NSTATE := PKG_COND_BROKER.GET_CONDITION_NUM('STATETYPE');
/* …ñëè ñîñòîßíèå - çàâåðøåííûå */
if (NSTATE = 1) then
/* “ñòàíàâëèâàåì òîëüêî ñ ñîñòîßíèåì "‡àêðûò" */
PKG_COND_BROKER.SET_CONDITION_ENUM('CGSTATE', '3');
else
/* “ñòàíàâëèâàåì òîëüêî ñ ñîñòîßíèåì "<22>å óòâåðæäÞí", "“òâåðæäÞí" */
PKG_COND_BROKER.SET_CONDITION_ENUM('CGSTATE', '0;2', ';');
end if;
-- ‘îñòîßíèå/‘îñòîßíèå
PKG_COND_BROKER.ADD_CONDITION_ENUM( 'STATE','CGSTATE' );
end if;
/* …ñëè óêàçàíû òðóäîâûå çàòðàòû */
if (PKG_COND_BROKER.CONDITION_EXISTS('TYPESPEND') = 1) then
/* ‘÷èòûâàåì ôèëüòð òðóäîâûõ çàòðàò (0 - âíóòðåííèå, 1 - âíåøíèå) */
NTYPESPEND := PKG_COND_BROKER.GET_CONDITION_NUM('TYPESPEND');
/* …ñëè òðóäîâûå çàòðàòû - âíóòðåííèå */
if (NTYPESPEND = 0) then
PKG_COND_BROKER.ADD_NOT_NULL('DEPTPERF');
else
PKG_COND_BROKER.ADD_NOT_NULL('PERFORM_AGN');
end if;
end if;
/* ”îðìèðîâàíèå óñëîâèé ïàíåëè */
-- „îïîëíèòåëüíî/‡àêàç÷èê, ˆñïîëíèòåëü/<2F>îäðàçäåëåíèå-çàêàç÷èê
PKG_COND_BROKER.ADD_CONDITION_CODE( 'CODE','CUSTOMERDEPTEDIT','DEPTCUSTOMER <- RN;INS_DEPARTMENT' );
-- „îïîëíèòåëüíî/<2F>åêâèçèòû ðåìîíòà/„àòà íà÷àëà ôàêòè÷åñêàß ñ..ïî
PKG_COND_BROKER.ADD_CONDITION_BETWEEN( 'DATEFACT_BEG','EDREPAIRFACTBEGINFrom','EDREPAIRFACTBEGINTo' );
-- …ñëè åñòü óñëîâèå íà òèïîâóþ ðàáîòó èëè âèä òèïîâîé ðàáîòû
if ((PKG_COND_BROKER.CONDITION_EXISTS('EQTYPEWRKCOMP') = 1) or (PKG_COND_BROKER.CONDITION_EXISTS('EQWRKKINDCOMP') = 1)) then
/* ‘÷èòûâàåì òèïîâóþ ðàáîòó */
SWORK_TYPE := PKG_COND_BROKER.GET_CONDITION_STR('EQTYPEWRKCOMP');
/* ‘÷èòûâàåì âèä òèïîâîé ðàáîòû */
SWORK_KIND := PKG_COND_BROKER.GET_CONDITION_STR('EQWRKKINDCOMP');
/* ”îðìèðîâàíèå äîï. óñëîâèß */
SCLAUSE := ' exists (select null';
SCLAUSE := SCLAUSE || ' from EQRPSHWRK SW,';
SCLAUSE := SCLAUSE || ' EQTYPEWRK TW';
/* …ñëè óêàçàí âèä òèïîâîé ðàáîòû */
if (SWORK_KIND is not null) then
SCLAUSE := SCLAUSE || ' left outer join EQWRKKIND WK on TW.KIND = WK.RN';
end if;
SCLAUSE := SCLAUSE || ' where SW.PRN = T.RN';
SCLAUSE := SCLAUSE || ' and TW.RN = SW.TYPEWRK';
/* …ñëè óêàçàíà òèïîâàß ðàáîòà */
if (SWORK_TYPE is not null) then
SCLAUSE := SCLAUSE || ' and TW.CODE = ''' || SWORK_TYPE || '''';
end if;
/* …ñëè óêàçàí âèä òèïîâîé ðàáîòû */
if (SWORK_KIND is not null) then
SCLAUSE := SCLAUSE || ' and WK.CODE = ''' || SWORK_KIND || '''';
end if;
SCLAUSE := SCLAUSE || ')';
/* “ñòàíàâëèâàåì îòáîð */
PKG_COND_BROKER.ADD_CLAUSE(SCLAUSE);
end if;
-- ‘îñòîßíèå/‘îñòîßíèå
--PKG_COND_BROKER.ADD_CONDITION_ENUM( 'STATE','CGSTATE' );
end EQRPSHEETS_BASE_COND;
end UDO_PKG_P8PANELS_RPR_ANL;
/