diff --git a/db/UDO_P8PANELS_USETTING.sql b/db/UDO_P8PANELS_USETTING.sql new file mode 100644 index 0000000..cae3940 --- /dev/null +++ b/db/UDO_P8PANELS_USETTING.sql @@ -0,0 +1,19 @@ +/* + 8 - + +*/ +create table UDO_P8PANELS_USETTING +( + /* . */ + RN number( 17 ) not null, + /* . */ + COMPANY number( 17 ) not null, + /* */ + AUTHID varchar2( 30 ) not null, + /* */ + PANEL varchar2( 100 ) not null, + /* */ + PANEL_SETTINGS clob, + constraint C_UDO_P8PANELS_USETTING_PK primary key( RN ), + constraint C_UDO_P8PANELS_USETTING_UK unique( COMPANY, AUTHID, PANEL ) +) diff --git a/db/UDO_PKG_P8PANELS_HAULER_ANL.pck b/db/UDO_PKG_P8PANELS_HAULER_ANL.pck new file mode 100644 index 0000000..6ac64d9 --- /dev/null +++ b/db/UDO_PKG_P8PANELS_HAULER_ANL.pck @@ -0,0 +1,1529 @@ +create or replace package UDO_PKG_P8PANELS_HAULER_ANL as + + /* */ + function GET_HLUNITSCARD_STATE_BY_DATE + ( + NRN in number, -- . + DDATE in date := null -- + ) return varchar2; -- + + /* */ + procedure GET_INS_DEPARTMENT_NAME + ( + SCODE in varchar2, -- + SNAME out varchar2 -- + ); + + /* */ + function HLWAYBILL_EXISTS + ( + NJURPERSONS in number, -- . + NHLUNITSCARD in number, -- . + DDATE in date := null -- + ) return number; -- (0 - , 1 - ) + + /* */ + function GET_ATC_EQDAMCTRL + ( + NHLUNITSCARD in number, -- . + DDATE in date := null -- + ) return number; -- (1 - , 2 - , -1 - ) + + /* */ + function GET_ATC_STATE + ( + NJURPERSONS in number, -- . + NHLUNITSCARD in number, -- . + DDATE in date := null, -- + NUNION_DAMAGE in number := 0 -- " " " " (0 - , 1 - ) + ) return number; -- (0 - , 1 - , 2 - ) + + /* */ + function GET_ATC_ACTIVE_BY_PERIOD + ( + NCOMPANY in number, -- . + NDEPARTMENT in number, -- . + DDATE_FROM in date, -- + DDATE_TO in date, -- + DDATE in date := null, -- + NSTATE in number := null -- (null, 0 - , 1 - , -1 - ) + ) return number; -- + + /* */ + function GET_ATC_COUNT_BY_DEP + ( + NCOMPANY in number, -- . + NDEPARTMENT in number, -- . + DDATE in date := null, -- + NSTATE in number := null -- (null, 0 - , 1 - , -1 - ) + ) return number; -- + + /* */ + function GET_ATC_KOA_BY_PERIOD + ( + NJURPERSONS in number, -- . + NHLUNITSCARD in number, -- . + DDATE_FROM in date, -- + DDATE_TO in date -- + ) return number; -- + + /* */ + function GET_ATC_DRIVERS + ( + NHLUNITSCARD in number, -- . + DDATE in date -- + ) return varchar2; -- + + /* */ + procedure CHART_ATC_INFO + ( + DDATE in date, -- + SDEPARTMENT in varchar2, -- + NSTATE in number, -- (null, 0 - , 1 - , -1 - ) + COUT out clob -- + ); + + /* / */ + procedure CHART_ATC_KTG_KOA + ( + SDEPARTMENT in varchar2, -- + DDATE_KOA_FROM in date, -- + DDATE_KOA_TO in date, -- + DDATE in date, -- + NSTATE in number, -- (null, 0 - , 1 - , -1 - ) + COUT out clob -- + ); + + /* */ + procedure DATA_GRID_ATC + ( + NPAGE_NUMBER in number, -- ( NPAGE_SIZE=0) + NPAGE_SIZE in number, -- (0 - ) + CFILTERS in clob, -- + CORDERS in clob, -- + NINCLUDE_DEF in number, -- + SDEPARTMENT in varchar2, -- + DDATE in date, -- + DDATE_KOA_FROM in date, -- + DDATE_KOA_TO in date, -- + NSTATE in number, -- (null, 0 - , 1 - , -1 - ) + COUT out clob -- + ); + + /* */ + procedure HLUNITSCARD_BASE_COND; + +end UDO_PKG_P8PANELS_HAULER_ANL; +/ +create or replace package body UDO_PKG_P8PANELS_HAULER_ANL as + + /* - */ + NAVG_SPEED_W_GRUZ constant PKG_STD.TNUMBER := 56; -- + NAVG_SPEED_WO_GRUZ constant PKG_STD.TNUMBER := 64; -- + NDAY_HOURS constant PKG_STD.TNUMBER := 24; -- + NSERVICE_HOURS constant PKG_STD.TNUMBER := 1; -- (, , ) + NREST_HOURS constant PKG_STD.TNUMBER := 6; -- + NMEAL_HOURS constant PKG_STD.TNUMBER := 2; -- + NDELIVERY_COEF constant PKG_STD.TNUMBER := 2; -- + NLOAD_HOURS constant PKG_STD.TNUMBER := 1; -- + NUNLOAD_HOURS constant PKG_STD.TNUMBER := 1; -- + SHLTYPE_CEMENTOVOZ constant PKG_STD.TSTRING := ''; -- "" + SHLTYPE_PRICEP constant PKG_STD.TSTRING := ''; -- "" + SHLTYPE_POLUPRICEP constant PKG_STD.TSTRING := ''; -- "" + + + /* */ + function GET_HLUNITSCARD_STATE_BY_DATE + ( + NRN in number, -- . + DDATE in date := null -- + ) return varchar2 -- + is + SSTATE HLSTATETYPES.CODE%TYPE; -- + DCHECK_DATE PKG_STD.TLDATE; -- + begin + /* */ + DCHECK_DATE := COALESCE(TRUNC(DDATE), sysdate); + /* */ + begin + select /*+ ORDERED */ + distinct FIRST_VALUE(CHT.CODE) OVER(order by CHIST.OPERDATE desc ROWS UNBOUNDED PRECEDING) + into SSTATE + from HLSTATEHIST CHIST, + HLSTATETYPES CHT + where CHIST.HLUNITSCARD = NRN + and CHIST.OPERDATE <= DCHECK_DATE + and CHT.RN = CHIST.HLSTATETYPES; + exception + when NO_DATA_FOUND then + SSTATE := null; + when TOO_MANY_ROWS then + SSTATE := null; + when others then + SSTATE := null; + end; + /* */ + return SSTATE; + end GET_HLUNITSCARD_STATE_BY_DATE; + + /* */ + procedure GET_INS_DEPARTMENT_NAME + ( + SCODE in varchar2, -- + SNAME out varchar2 -- + ) + 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 := ' '; + end; + end GET_INS_DEPARTMENT_NAME; + + /* */ + function HLWAYBILL_EXISTS + ( + NJURPERSONS in number, -- . + NHLUNITSCARD in number, -- . + DDATE in date := null -- + ) return number -- (0 - , 1 - ) + is + DCHECK_DATE PKG_STD.TLDATE; -- + NRESULT PKG_STD.TNUMBER; -- (0 - , 1 - ) + begin + /* */ + DCHECK_DATE := TRUNC(COALESCE(DDATE, sysdate)); + /* */ + begin + select 1 + into NRESULT + from dual + where exists (select null + from HLWAYBILL T + where T.JURPERSONS = NJURPERSONS + and T.HLUNITSCARD = NHLUNITSCARD + and TRUNC(T.FACTDATE_LEAVE) <= DCHECK_DATE + and TRUNC(T.FACTDATE_RETURN) >= DCHECK_DATE); + exception + when others then + NRESULT := 0; + end; + /* */ + return NRESULT; + end HLWAYBILL_EXISTS; + + /* */ + function GET_ATC_EQDAMCTRL + ( + NHLUNITSCARD in number, -- . + DDATE in date := null -- + ) return number -- (1 - , 2 - , -1 - ) + is + NRESULT PKG_STD.TNUMBER; -- (1 - , 2 - , -1 - ) + begin + begin + select TMP.RN + into NRESULT + from (select DAM.RN + from DOCLINKS DL, + EQDAMCTRL DAM + where DL.IN_DOCUMENT = NHLUNITSCARD + and DL.IN_UNITCODE = 'HaulerUnitsCards' + and DL.OUT_UNITCODE = 'EquipDamageControl' + and DAM.RN = DL.OUT_DOCUMENT + and TRUNC(DAM.DAMAGE_DATE) <= DDATE + and ((TRUNC(DAM.FIX_DATE) >= DDATE) or (DAM.FIX_DATE is null)) + order by case + when DAM.FIX_DATE is not null then + 1 + else + 0 + end desc, + DAM.FIX_DATE desc, + DAM.DAMAGE_DATE desc) TMP + where ROWNUM = 1; + exception + when others then + NRESULT := null; + end; + return NRESULT; + end GET_ATC_EQDAMCTRL; + + /* */ + function GET_ATC_REPAIR_STATE + ( + NHLUNITSCARD in number, -- . + DDATE in date := null -- + ) return number -- (1 - , 2 - , -1 - ) + is + NRESULT PKG_STD.TNUMBER; -- (1 - , 2 - , -1 - ) + begin + /* */ + begin + select case + when D.RN is not null then + 1 + else + 2 + end NSTATE + into NRESULT + from (select TMP.* + from (select DAM.RN, + DAM.DAMAGE_DATE, + DAM.FIX_DATE + from DOCLINKS DL, + EQDAMCTRL DAM + where DL.IN_DOCUMENT = NHLUNITSCARD + and DL.IN_UNITCODE = 'HaulerUnitsCards' + and DL.OUT_UNITCODE = 'EquipDamageControl' + and DAM.RN = DL.OUT_DOCUMENT + and TRUNC(DAM.DAMAGE_DATE) <= DDATE + and ((TRUNC(DAM.FIX_DATE) >= DDATE) or (DAM.FIX_DATE is null)) + order by case + when DAM.FIX_DATE is not null then + 1 + else + 0 + end desc, + DAM.FIX_DATE desc, + DAM.DAMAGE_DATE desc) TMP + where ROWNUM = 1) T + left join DOCLINKS D + on D.IN_DOCUMENT = T.RN + and D.IN_UNITCODE = 'EquipDamageControl' + and D.OUT_UNITCODE = 'EquipRepairSheets'; + exception + when others then + NRESULT := -1; + end; + /* */ + return NRESULT; + end GET_ATC_REPAIR_STATE; + + /* */ + function GET_ATC_STATE + ( + NJURPERSONS in number, -- . + NHLUNITSCARD in number, -- . + DDATE in date := null, -- + NUNION_DAMAGE in number := 0 -- " " " " (0 - , 1 - ) + ) return number -- (0 - , 1 - , 2 - , -1 - ) + is + SSTATUS PKG_STD.TSTRING; -- + NRESULT PKG_STD.TNUMBER; -- (0 - , 1 - , 2 - , -1 - ) + begin + /* */ + NRESULT := GET_ATC_REPAIR_STATE(NHLUNITSCARD => NHLUNITSCARD, DDATE => DDATE); + /* */ + if (NRESULT in (1,2)) then + /* */ + return NRESULT; + end if; + /* " " */ + if (HLWAYBILL_EXISTS(NJURPERSONS => NJURPERSONS, NHLUNITSCARD => NHLUNITSCARD, DDATE => DDATE) = 1) then + /* */ + return 0; + end if; + /* */ + return NRESULT; + /* */ + /*SSTATUS := GET_HLUNITSCARD_STATE_BY_DATE(NRN => NHLUNITSCARD, DDATE => DDATE); + \* *\ + if (SSTATUS in ('', '푒') or (SSTATUS like '%') or (SSTATUS like '%')) then + \* " " *\ + if (NUNION_DAMAGE = 1) then + \* *\ + return 0; + else + \* *\ + return 2; + end if; + end if; + \* *\ + if (SSTATUS = '') then + \* *\ + return 1; + end if; + \* *\ + if ((SSTATUS = '') and (HLWAYBILL_EXISTS(NJURPERSONS => NJURPERSONS, NHLUNITSCARD => NHLUNITSCARD, DDATE => DDATE) = 1)) then + \* *\ + return 0; + end if; + \* *\ + return -1;*/ + end GET_ATC_STATE; + + /* */ + function GET_ATC_ACTIVE_BY_PERIOD + ( + NCOMPANY in number, -- . + NDEPARTMENT in number, -- . + DDATE_FROM in date, -- + DDATE_TO in date, -- + DDATE in date := null, -- + NSTATE in number := null -- (null, 0 - , 1 - , -1 - ) + ) return number -- + is + NRESULT PKG_STD.TNUMBER; -- + begin + /* */ + begin + with DATES as + (select (TRUNC(DDATE_FROM) + level - 1) DDATE + from DUAL + connect by level <= (TRUNC(DDATE_TO) - TRUNC(DDATE_FROM) + 1)) + select COALESCE(sum(case + when UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE(H.JURPERSONS, H.RN, D.DDATE, 1) = 0 then + 1 + else + 0 + end), + 0) NSUM + into NRESULT + from DATES D, + (select T.RN, + T.JURPERSONS + from HLUNITSCARD T + where T.COMPANY = NCOMPANY + and ((NDEPARTMENT is null) or ((NDEPARTMENT is not null) and (T.DEPARTMENT = NDEPARTMENT))) + and T.DEPARTMENT in (23218545348, 23218545435, 23218547825, 28176212241, 24286125541, 24597391278, 24984694945, 23254086198) + and exists (select null + from DICCMRKS TR2, + HLTYPE HT + where T.DICCMRKS = TR2.RN + and TR2.HLTYPE = HT.RN + and HT.CODE = SHLTYPE_CEMENTOVOZ) + and exists + (select null + from HLUNITSCARDPART CP, + HLUNITSCARD CP_C, + DICCMRKS CP_TR2, + HLTYPE CP_HT + where CP.PRN = T.RN + and CP_C.RN = CP.HLUNITSCARD_PART + and CP_C.DICCMRKS = CP_TR2.RN + and CP_TR2.HLTYPE = CP_HT.RN + and CP_HT.CODE in (SHLTYPE_PRICEP, SHLTYPE_POLUPRICEP)) + and ((NSTATE is null) or ((NSTATE is not null) and + (UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE(T.JURPERSONS, T.RN, DDATE, 1) = NSTATE)))) H; + end; + /* */ + return NRESULT; + end GET_ATC_ACTIVE_BY_PERIOD; + + /* */ + function GET_ATC_COUNT_BY_DEP + ( + NCOMPANY in number, -- . + NDEPARTMENT in number, -- . + DDATE in date := null, -- + NSTATE in number := null -- (null, 0 - , 1 - , -1 - ) + ) return number -- + is + NRESULT PKG_STD.TNUMBER; -- + begin + /* */ + begin + select count(T.RN) + into NRESULT + from HLUNITSCARD T + where T.COMPANY = NCOMPANY + and ((NDEPARTMENT is null) or ((NDEPARTMENT is not null) and (T.DEPARTMENT = NDEPARTMENT))) + and T.DEPARTMENT in (23218545348, 23218545435, 23218547825, 28176212241, 24286125541, 24597391278, 24984694945, 23254086198) + and exists (select null + from DICCMRKS TR2, + HLTYPE HT + where T.DICCMRKS = TR2.RN + and TR2.HLTYPE = HT.RN + and HT.CODE = SHLTYPE_CEMENTOVOZ) + and exists (select null + from HLUNITSCARDPART CP, + HLUNITSCARD CP_C, + DICCMRKS CP_TR2, + HLTYPE CP_HT + where CP.PRN = T.RN + and CP_C.RN = CP.HLUNITSCARD_PART + and CP_C.DICCMRKS = CP_TR2.RN + and CP_TR2.HLTYPE = CP_HT.RN + and CP_HT.CODE in (SHLTYPE_PRICEP, SHLTYPE_POLUPRICEP)) + and ((NSTATE is null) or ((NSTATE is not null) and + (UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE(T.JURPERSONS, T.RN, DDATE, 1) = NSTATE))); + exception + when others then + NRESULT := 0; + end; + /* */ + return NRESULT; + end GET_ATC_COUNT_BY_DEP; + + /* */ + function GET_ATC_KOA_BY_PERIOD + ( + NJURPERSONS in number, -- . + NHLUNITSCARD in number, -- . + DDATE_FROM in date, -- + DDATE_TO in date -- + ) return number -- + is + NRESULT PKG_STD.TSUMM := 0; -- + NWITH_GRUZ PKG_STD.TSUMM; -- + NWITHOUT_GRUZ PKG_STD.TSUMM; -- + NVOYAGE_HOURS PKG_STD.TNUMBER; -- + NDELIVERY_EXTRA_TIME PKG_STD.TNUMBER; -- / + begin + /* */ + /*begin + select sum(case + when TMP.IS_WITH_GRUZ = 1 then + TMP.CAR_RUN + else + 0 + end) WITH_GRUZ, + sum(case + when TMP.IS_WITH_GRUZ = 0 then + TMP.CAR_EMPTY_RUN + else + 0 + end) WITHOUT_GRUZ + into NWITH_GRUZ, + NWITHOUT_GRUZ + from (select T.RN as NRN, + T.CAR_RUN, + T.CAR_EMPTY_RUN, + case + when D.RN is not null then + 1 + else + 0 + end IS_WITH_GRUZ + from HLWAYBILL B, + HLWAYBILLTASK TA, + HLWAYBILLTRIP T + left outer join DOCLINKS D + on D.IN_DOCUMENT = T.RN + and D.IN_UNITCODE = 'HaulerWayBillsTasksOnTrips' + and D.OUT_UNITCODE = 'GoodsTransInvoicesToConsumers' + where B.STATUS = 2 + and B.HLUNITSCARD = NHLUNITSCARD + and B.JURPERSONS = NJURPERSONS + and B.FACTDATE_LEAVE >= DDATE_FROM + and B.FACTDATE_RETURN <= DDATE_TO + and TA.PRN = B.RN + and T.PRN = TA.RN) TMP; + exception + when others then + NWITH_GRUZ := 0; + NWITHOUT_GRUZ := 0; + end;*/ + /* null' */ + /*NWITH_GRUZ := COALESCE(NWITH_GRUZ, 0); + NWITHOUT_GRUZ := COALESCE(NWITHOUT_GRUZ, 0); + \* - *\ + if (NWITH_GRUZ <> 0) then + NRESULT := ROUND((24 - 1 - 6 - 2) / (((NWITH_GRUZ / NAVG_SPEED_W_GRUZ) * 2) + 1 + 1), 2); + end if; + \* - *\ + if (NWITHOUT_GRUZ <> 0) then + NRESULT := ROUND(NRESULT + ((24 - 1 - 6 - 2) / (((NWITHOUT_GRUZ / NAVG_SPEED_WO_GRUZ) * 2) + 1 + 1)), 2); + end if;*/ + /* */ + NVOYAGE_HOURS := NDAY_HOURS - NSERVICE_HOURS - NREST_HOURS - NMEAL_HOURS; + /* / */ + NDELIVERY_EXTRA_TIME := NLOAD_HOURS + NUNLOAD_HOURS; + /* */ + begin + select ROUND(sum(case + when R.WITH_GRUZ <> 0 then + NVOYAGE_HOURS / (((R.WITH_GRUZ / NAVG_SPEED_W_GRUZ) * NDELIVERY_COEF) + NDELIVERY_EXTRA_TIME) + else + 0 + end), + 2) TOTAL_WITH_GRUZ, + ROUND(sum(case + when R.WITHOUT_GRUZ <> 0 then + NVOYAGE_HOURS / (((R.WITHOUT_GRUZ / NAVG_SPEED_WO_GRUZ) * NDELIVERY_COEF) + NDELIVERY_EXTRA_TIME) + else + 0 + end), + 2) TOTAL_WITH_GRUZ + into NWITH_GRUZ, + NWITHOUT_GRUZ + from (select sum(case + when TMP.IS_WITH_GRUZ = 1 then + TMP.DISTANCE + else + 0 + end) WITH_GRUZ, + sum(case + when TMP.IS_WITH_GRUZ = 0 then + TMP.DISTANCE + else + 0 + end) WITHOUT_GRUZ + from (select case + when D.RN is not null then + T.CAR_RUN + else + T.CAR_EMPTY_RUN + end DISTANCE, + case + when D.RN is not null then + 1 + else + 0 + end IS_WITH_GRUZ, + B.RN HLWAYBILL + from HLWAYBILL B, + HLWAYBILLTASK TA, + HLWAYBILLTRIP T + left outer join DOCLINKS D + on D.IN_DOCUMENT = T.RN + and D.IN_UNITCODE = 'HaulerWayBillsTasksOnTrips' + and D.OUT_UNITCODE = 'GoodsTransInvoicesToConsumers' + where B.STATUS = 2 + and B.HLUNITSCARD = NHLUNITSCARD + and B.JURPERSONS = NJURPERSONS + and B.FACTDATE_LEAVE >= DDATE_FROM + and B.FACTDATE_RETURN <= DDATE_TO + and TA.PRN = B.RN + and T.PRN = TA.RN) TMP + group by TMP.HLWAYBILL) R; + exception + when others then + NWITH_GRUZ := 0; + NWITHOUT_GRUZ := 0; + end; + /* */ + NRESULT := ROUND(NWITH_GRUZ + NWITHOUT_GRUZ, 2); + /* */ + return NRESULT; + end GET_ATC_KOA_BY_PERIOD; + + /* */ + function GET_ATC_KOA_SUM_BY_PERIOD + ( + NCOMPANY in number, -- . + NDEPARTMENT in number, -- . + DDATE_FROM in date, -- + DDATE_TO in date, -- + DDATE in date := null, -- + NSTATE in number := null -- (null, 0 - , 1 - , -1 - ) + ) return number -- + is + NRESULT PKG_STD.TSUMM; -- + begin + /* */ + begin + select SUM(GET_ATC_KOA_BY_PERIOD(T.JURPERSONS, T.RN, DDATE_FROM, DDATE_TO)) + into NRESULT + from HLUNITSCARD T + where T.COMPANY = NCOMPANY + and ((NDEPARTMENT is null) or ((NDEPARTMENT is not null) and (T.DEPARTMENT = NDEPARTMENT))) + and exists (select null + from DICCMRKS TR2, + HLTYPE HT + where T.DICCMRKS = TR2.RN + and TR2.HLTYPE = HT.RN + and HT.CODE = SHLTYPE_CEMENTOVOZ) + and exists (select null + from HLUNITSCARDPART CP, + HLUNITSCARD CP_C, + DICCMRKS CP_TR2, + HLTYPE CP_HT + where CP.PRN = T.RN + and CP_C.RN = CP.HLUNITSCARD_PART + and CP_C.DICCMRKS = CP_TR2.RN + and CP_TR2.HLTYPE = CP_HT.RN + and CP_HT.CODE in (SHLTYPE_PRICEP, SHLTYPE_POLUPRICEP)) + and ((NSTATE is null) or ((NSTATE is not null) and + (UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE(T.JURPERSONS, T.RN, DDATE, 1) = NSTATE))); + exception + when others then + NRESULT := 0; + end; + /* */ + return NRESULT; + end GET_ATC_KOA_SUM_BY_PERIOD; + + /* */ + function GET_ATC_DRIVERS + ( + NHLUNITSCARD in number, -- . + DDATE in date -- + ) return varchar2 -- + is + SRESULT PKG_STD.TSTRING; -- + begin + begin + select LISTAGG(TMP.DRIVER, '<|>') + into SRESULT + from (select trim(AG.AGNFAMILYNAME) || ' ' || trim(AG.AGNFIRSTNAME) || ' ' || trim(AG.AGNLASTNAME) DRIVER + from HLWAYBILL HLB, + HLWAYBILLDRV HLD, + CLNPSPFM CPFM, + CLNPERSONS PERS, + AGNLIST AG + where HLB.HLUNITSCARD = NHLUNITSCARD + and TRUNC(HLB.FACTDATE_LEAVE) <= TRUNC(DDATE) + and TRUNC(HLB.FACTDATE_RETURN) >= TRUNC(DDATE) + and HLD.PRN = HLB.RN + and CPFM.RN = HLD.CLNPSPFM + and PERS.RN = CPFM.PERSRN + and AG.RN = PERS.PERS_AGENT + group by AG.AGNFAMILYNAME, + AG.AGNFIRSTNAME, + AG.AGNLASTNAME) TMP; + exception + when others then + SRESULT := null; + end; + /* */ + return SRESULT; + end GET_ATC_DRIVERS; + + /* */ + procedure CHART_ATC_INFO + ( + DDATE in date, -- + SDEPARTMENT in varchar2, -- + NSTATE in number, -- (null, 0 - , 1 - , -1 - ) + COUT out clob -- + ) + is + NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- + RCH PKG_P8PANELS_VISUAL.TCHART; -- + RCH_DS PKG_P8PANELS_VISUAL.TCHART_DATASET; -- + RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- + NDEPARTMENT PKG_STD.TNUMBER; -- . + NON_LINE PKG_STD.TNUMBER; -- + NON_REPAIR PKG_STD.TNUMBER; -- + NUNDEF PKG_STD.TNUMBER; -- + DSTATE_DATE PKG_STD.TLDATE; -- + begin + /* . */ + FIND_SUBDIVS_CODE_EX(NFLAG_SMART => 0, + NFLAG_OPTION => 1, -- + NCOMPANY => NCOMPANY, + SCODE => SDEPARTMENT, + NRN => NDEPARTMENT); + /* */ + DSTATE_DATE := TRUNC(COALESCE(DDATE, sysdate)); + /* */ + begin + select COALESCE(sum(case + when T.STATE = 0 then + 1 + else + 0 + end), + 0) ON_LINE, -- + COALESCE(sum(case + when T.STATE = 1 then + 1 + else + 0 + end), + 0) ON_REPAIR, -- + COALESCE(sum(case + when T.STATE = -1 then + 1 + else + 0 + end), + 0) UNDEF -- + into NON_LINE, + NON_REPAIR, + NUNDEF + from (select TMP.STATE + from (select UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE(T.JURPERSONS, T.RN, DSTATE_DATE, 1) STATE + from HLUNITSCARD T + where T.COMPANY = NCOMPANY + and ((NDEPARTMENT is null) or ((NDEPARTMENT is not null) and (T.DEPARTMENT = NDEPARTMENT))) + and T.DEPARTMENT in (23218545348, 23218545435, 23218547825, 28176212241, 24286125541, 24597391278, 24984694945, 23254086198) + and exists (select null + from DICCMRKS TR2, + HLTYPE HT + where T.DICCMRKS = TR2.RN + and TR2.HLTYPE = HT.RN + and HT.CODE = SHLTYPE_CEMENTOVOZ) + and exists (select null + from HLUNITSCARDPART CP, + HLUNITSCARD CP_C, + DICCMRKS CP_TR2, + HLTYPE CP_HT + where CP.PRN = T.RN + and CP_C.RN = CP.HLUNITSCARD_PART + and CP_C.DICCMRKS = CP_TR2.RN + and CP_TR2.HLTYPE = CP_HT.RN + and CP_HT.CODE in (SHLTYPE_PRICEP, SHLTYPE_POLUPRICEP))) TMP + where ((NSTATE is null) or ((NSTATE is not null) and (TMP.STATE = NSTATE)))) T; + exception + when others then + P_EXCEPTION(0, ' .'); + end; + /* */ + RCH := PKG_P8PANELS_VISUAL.TCHART_MAKE(STYPE => PKG_P8PANELS_VISUAL.SCHART_TYPE_PIE, + STITLE => ' ( - ' || TO_CHAR(NON_LINE + NON_REPAIR + NUNDEF) || ')', + SLGND_POS => PKG_P8PANELS_VISUAL.SCHART_LGND_POS_RIGHT); + /* */ + RCH_DS := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => ''); + /* " " */ + PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => ' (' || TO_CHAR(NON_LINE) || ')'); + /* */ + 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 => NON_LINE, RATTR_VALS => RATTR_VALS); + /* "" */ + PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => ' (' || TO_CHAR(NON_REPAIR) || ')'); + /* */ + 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 => NON_REPAIR, RATTR_VALS => RATTR_VALS); + /* " " */ + PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => ' (' || TO_CHAR(NUNDEF) || ')'); + /* */ + 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 => NUNDEF, 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_ATC_INFO; + + /* / */ + procedure CHART_ATC_KTG_KOA + ( + SDEPARTMENT in varchar2, -- + DDATE_KOA_FROM in date, -- + DDATE_KOA_TO in date, -- + DDATE in date, -- + NSTATE in number, -- (null, 0 - , 1 - , -1 - ) + COUT out clob -- + ) + is + NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- + RCH PKG_P8PANELS_VISUAL.TCHART; -- + RCH_DS_KTG PKG_P8PANELS_VISUAL.TCHART_DATASET; -- + RCH_DS_KOA PKG_P8PANELS_VISUAL.TCHART_DATASET; -- + RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- + NKTG PKG_STD.TSUMM; -- + NKOA PKG_STD.TSUMM; -- + NDAYS PKG_STD.TNUMBER; -- + NACTIVE_ATC PKG_STD.TNUMBER; -- + NCOUNT_ATC PKG_STD.TNUMBER; -- + NDEPARTMENT PKG_STD.TNUMBER; -- . + DWORK_DATE_FROM PKG_STD.TLDATE; -- + DWORK_DATE_TO PKG_STD.TLDATE; -- + DWORK_DATE PKG_STD.TLDATE; -- + + /* */ + procedure MAKE_CHART_ELEMENT + ( + RCH in out nocopy PKG_P8PANELS_VISUAL.TCHART, -- + RCH_DS_KTG in out nocopy PKG_P8PANELS_VISUAL.TCHART_DATASET, -- + RCH_DS_KOA in out nocopy PKG_P8PANELS_VISUAL.TCHART_DATASET, -- + SELEMENT_NAME in varchar2, -- + NKTG_VALUE in number, -- + NKOA_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 => 'SCODE', + SVALUE => SELEMENT_NAME, + 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_KOA, NVALUE => NKOA_VALUE, RATTR_VALS => RATTR_VALS); + /* . */ + PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS, + SNAME => 'SCODE', + SVALUE => SELEMENT_NAME, + 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_KTG, NVALUE => NKTG_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); + /* */ + RCH_DS_KTG := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => ''); + /* */ + RCH_DS_KOA := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => ''); + /* . */ + FIND_SUBDIVS_CODE_EX(NFLAG_SMART => 0, + NFLAG_OPTION => 1, + NCOMPANY => NCOMPANY, + SCODE => SDEPARTMENT, + NRN => NDEPARTMENT); + /* */ + DWORK_DATE_FROM := COALESCE(DDATE_KOA_FROM, TRUNC(sysdate)); + DWORK_DATE_TO := COALESCE(DDATE_KOA_TO, TRUNC(sysdate) + 86399 / 86400); + DWORK_DATE := TRUNC(COALESCE(DDATE, sysdate)); + /* */ + NDAYS := TRUNC(DWORK_DATE_TO) - TRUNC(DWORK_DATE_FROM) + 1; + /* */ + if (NDEPARTMENT is null) then + /* */ + for REC in (select I.RN, + I.CODE + from HLUNITSCARD T, + INS_DEPARTMENT I + where T.COMPANY = NCOMPANY + and exists (select null + from DICCMRKS TR2, + HLTYPE HT + where T.DICCMRKS = TR2.RN + and TR2.HLTYPE = HT.RN + and HT.CODE = SHLTYPE_CEMENTOVOZ) + and exists (select null + from HLUNITSCARDPART CP, + HLUNITSCARD CP_C, + DICCMRKS CP_TR2, + HLTYPE CP_HT + where CP.PRN = T.RN + and CP_C.RN = CP.HLUNITSCARD_PART + and CP_C.DICCMRKS = CP_TR2.RN + and CP_TR2.HLTYPE = CP_HT.RN + and CP_HT.CODE in (SHLTYPE_PRICEP, SHLTYPE_POLUPRICEP)) + and ((NSTATE is null) or ((NSTATE is not null) and + (UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE(T.JURPERSONS, T.RN, DWORK_DATE, 1) = NSTATE))) + and I.RN = T.DEPARTMENT + and I.RN in (23218545348, 23218545435, 23218547825, 28176212241, 24286125541, 24597391278, 24984694945, 23254086198) + group by I.RN, I.CODE) + loop + /* */ + NACTIVE_ATC := GET_ATC_ACTIVE_BY_PERIOD(NCOMPANY => NCOMPANY, + NDEPARTMENT => REC.RN, + DDATE_FROM => DWORK_DATE_FROM, + DDATE_TO => DWORK_DATE_TO, + DDATE => DWORK_DATE, + NSTATE => NSTATE); + /* */ + NCOUNT_ATC := GET_ATC_COUNT_BY_DEP(NCOMPANY => NCOMPANY, + NDEPARTMENT => REC.RN, + DDATE => DWORK_DATE, + NSTATE => NSTATE); + /* = 0 */ + if (NCOUNT_ATC = 0) then + /* = 0 */ + NKTG := 0; + else + /* */ + NKTG := NACTIVE_ATC / (NCOUNT_ATC * NDAYS); + end if; + /* */ + NKOA := GET_ATC_KOA_SUM_BY_PERIOD(NCOMPANY => NCOMPANY, + NDEPARTMENT => REC.RN, + DDATE_FROM => DWORK_DATE_FROM, + DDATE_TO => DWORK_DATE_TO, + DDATE => DWORK_DATE, + NSTATE => NSTATE); + /* */ + MAKE_CHART_ELEMENT(RCH => RCH, + RCH_DS_KTG => RCH_DS_KTG, + RCH_DS_KOA => RCH_DS_KOA, + SELEMENT_NAME => REC.CODE, + NKTG_VALUE => COALESCE(NKTG, 0), + NKOA_VALUE => COALESCE(NKOA, 0)); + end loop; + else + /* */ + NACTIVE_ATC := GET_ATC_ACTIVE_BY_PERIOD(NCOMPANY => NCOMPANY, + NDEPARTMENT => NDEPARTMENT, + DDATE_FROM => DWORK_DATE_FROM, + DDATE_TO => DWORK_DATE_TO, + DDATE => DDATE, + NSTATE => NSTATE); + /* */ + NCOUNT_ATC := GET_ATC_COUNT_BY_DEP(NCOMPANY => NCOMPANY, NDEPARTMENT => NDEPARTMENT, + DDATE => DWORK_DATE, + NSTATE => NSTATE); + /* = 0 */ + if (NCOUNT_ATC = 0) then + /* = 0 */ + NKTG := 0; + else + /* */ + NKTG := NACTIVE_ATC / (NCOUNT_ATC * NDAYS); + end if; + /* */ + NKOA := GET_ATC_KOA_SUM_BY_PERIOD(NCOMPANY => NCOMPANY, + NDEPARTMENT => NDEPARTMENT, + DDATE_FROM => DWORK_DATE_FROM, + DDATE_TO => DWORK_DATE_TO, + DDATE => DWORK_DATE, + NSTATE => NSTATE); + /* */ + MAKE_CHART_ELEMENT(RCH => RCH, + RCH_DS_KTG => RCH_DS_KTG, + RCH_DS_KOA => RCH_DS_KOA, + SELEMENT_NAME => SDEPARTMENT, + NKTG_VALUE => COALESCE(NKTG, 0), + NKOA_VALUE => COALESCE(NKOA, 0)); + end if; + /* */ + PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS_KTG); + /* */ + PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS_KOA); + /* */ + COUT := PKG_P8PANELS_VISUAL.TCHART_TO_XML(RCHART => RCH, NINCLUDE_DEF => 1); + end CHART_ATC_KTG_KOA; + + /* */ + procedure DATA_GRID_ATC + ( + NPAGE_NUMBER in number, -- ( NPAGE_SIZE=0) + NPAGE_SIZE in number, -- (0 - ) + CFILTERS in clob, -- + CORDERS in clob, -- + NINCLUDE_DEF in number, -- + SDEPARTMENT in varchar2, -- + DDATE in date, -- + DDATE_KOA_FROM in date, -- + DDATE_KOA_TO in date, -- + NSTATE in number, -- (null, 0 - , 1 - , -1 - ) + 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; -- + NROW_TO PKG_STD.TREF; -- + CSQL clob; -- + ICURSOR integer; -- + NDEPARTMENT PKG_STD.TNUMBER; -- . + DWORK_DATE PKG_STD.TLDATE; -- + DKOA_FROM PKG_STD.TLDATE; -- () + DKOA_TO PKG_STD.TLDATE; -- () + begin + /* */ + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); + /* */ + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML(CORDERS => CORDERS); + /* */ + 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 => '. ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + /* */ + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDICCMRKS_CODE_TG', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDHLTYPE', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTATE_NUMB_TG', + SCAPTION => '. ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDSTATE_NUMBFrom', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDICCMRKS_CODE_PC', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDHLTYPE_PRICEP', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTATE_NUMB_PC', + SCAPTION => '. ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDSTATE_NUMBFrom_PRICEP', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NTONNAGE_NORMAL', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => 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 => 'SDAMTYPE_NAME', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SEQDAMCTRL_NOTE', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDRIVER', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SREPAIR_DOC', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NKOA', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true); + /* . */ + FIND_SUBDIVS_CODE_EX(NFLAG_SMART => 0, + NFLAG_OPTION => 1, + NCOMPANY => NCOMPANY, + SCODE => SDEPARTMENT, + NRN => NDEPARTMENT); + /* */ + DWORK_DATE := TRUNC(COALESCE(DDATE, sysdate)); + /* */ + DKOA_FROM := COALESCE(DDATE_KOA_FROM, TRUNC(sysdate)); + DKOA_TO := COALESCE(DDATE_KOA_TO, TRUNC(sysdate) + 86399 / 86400); + --DKOA_FROM := TRUNC(COALESCE(DDATE_KOA_FROM, DWORK_DATE)); + --DKOA_TO := TRUNC(COALESCE(DDATE_KOA_TO, DWORK_DATE)); + 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 F.NRN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SDICCMRKS_CODE_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SSTATE_NUMB_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SDICCMRKS_CODE_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SSTATE_NUMB_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.NTONNAGE_NORMAL,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.NSTATE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when F.NSTATE in (1,2) then F.SDAMTYPE_NAME else null end SDAMTYPE_NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when F.NSTATE in (1,2) then F.SEQDAMCTRL_NOTE else null end SEQDAMCTRL_NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SDRIVER,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when F.NSTATE = 1 then F.SREPAIR_DOC else null end SREPAIR_DOC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.NKOA'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select TMP.NRN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SDICCMRKS_CODE_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SSTATE_NUMB_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SDICCMRKS_CODE_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SSTATE_NUMB_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.NTONNAGE_NORMAL,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.NSTATE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE') || '(TMP.NJURPERSONS, TMP.NRN, :DDATE) NSTATE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' D.NAME SDAMTYPE_NAME,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' '''' SDAMTYPE_NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' D.NOTE SEQDAMCTRL_NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' D.SREPAIR_DOC SREPAIR_DOC,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' '''' SEQDAMCTRL_NOTE,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' LISTAGG(TMP.SDRIVER, '';'') SDRIVER,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_DRIVERS') || '(TMP.NRN, :DDATE) SDRIVER,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' '''' SREPAIR_DOC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_KOA_BY_PERIOD') || '(TMP.NJURPERSONS, TMP.NRN, :DKOA_FROM, :DKOA_TO) NKOA'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select T.RN NRN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.JURPERSONS NJURPERSONS,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TR2.CODE SDICCMRKS_CODE_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.STATE_NUMB SSTATE_NUMB_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' CP_TR2.CODE SDICCMRKS_CODE_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' CP_C.STATE_NUMB SSTATE_NUMB_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TR2.TONNAGE_NORMAL NTONNAGE_NORMAL'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE') || '(T.JURPERSONS, T.RN, :DDATE) NSTATE,'); + /*PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQ_DAM.NAME SDAMTYPE_NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQ_DAM.NOTE SEQDAMCTRL_NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DECODE(RPR.SDOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.NULL_STR() || ','); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.NULL_STR() || ','); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (RPR.SDOCUMENT || '', '' || RPR.SPLACE_REPAIR)) SREPAIR_DOC');*/ + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from HLUNITSCARD T,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DICCMRKS TR2,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLTYPE HT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLUNITSCARDPART CP,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLUNITSCARD CP_C,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DICCMRKS CP_TR2,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLTYPE CP_HT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where T.COMPANY = :NCOMPANY'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and ((:NDEPARTMENT is null) or ((:NDEPARTMENT is not null) and (T.DEPARTMENT = :NDEPARTMENT)))'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.DEPARTMENT in (23218545348, 23218545435, 23218547825, 28176212241, 24286125541, 24597391278, 24984694945, 23254086198)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.DICCMRKS = TR2.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and TR2.HLTYPE = HT.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and HT.CODE = :HLTYPE_CEMENTOVOZ'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP.PRN = T.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_C.RN = CP.HLUNITSCARD_PART'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_C.DICCMRKS = CP_TR2.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_TR2.HLTYPE = CP_HT.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_HT.CODE in (:HLTYPE_PRICEP, :HLTYPE_POLUPRICEP)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' group by T.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.JURPERSONS,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TR2.CODE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.STATE_NUMB,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' CP_TR2.CODE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' CP_C.STATE_NUMB,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TR2.TONNAGE_NORMAL) TMP'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join (select DAM.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T_DAM.NAME NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DAM.NOTE NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' LISTAGG(RPR.SDOCUMENT, ''<|>'') SREPAIR_DOC'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQDAMCTRL DAM'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join (select G.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DT.NAME'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQCONFIGDM G,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQUIPWORKDAMTYPE DT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where DT.RN = G.DAMTYPE) T_DAM'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' on DAM.EQUIPWORKDAMTYPE = T_DAM.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join (select DL.IN_DOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DECODE(RS.DOCTYPES,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TO_CHAR(NULL),'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TO_CHAR(NULL),'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (''<'' || TO_CHAR(RS.RN) || ''>'' ||'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TRIM(DT.DOCCODE) || '','' || '); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TRIM(RS.PREF) || ''-'' || '); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TRIM(RS.NUMB) || '','' || '); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TO_CHAR(RS.DOCDATE, ''dd/mm/yyyy''))) SDOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' when (RS.PERFORM_AGN is not null) then'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select AG.AGNNAME from AGNLIST AG where AG.RN = RS.PERFORM_AGN)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' when (RS.DEPTPERF is not null) then'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select I.NAME from INS_DEPARTMENT I where I.RN = RS.DEPTPERF)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' else'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TO_CHAR(NULL)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' end SPLACE_REPAIR'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from DOCLINKS DL,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQRPSHEETS RS,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DOCTYPES DT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where DL.IN_UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('EquipDamageControl')); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and DL.OUT_UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('EquipRepairSheets')); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and RS.RN = DL.OUT_DOCUMENT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and DT.RN = RS.DOCTYPES) RPR'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' on RPR.IN_DOCUMENT = DAM.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' group by DAM.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T_DAM.NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DAM.NOTE) D'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' on D.RN = ' || PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_EQDAMCTRL') || '(TMP.NRN, :DDATE)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ) F'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ((:NSTATE is null) or ((:NSTATE is not null) and (F.NSTATE = :NSTATE)))'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ((:NSTATE is null) or ((:NSTATE is not null) and (((:NSTATE = 0) and (F.NSTATE in (0, 2))) or (((:NSTATE <> 0) and (F.NSTATE = :NSTATE))))))'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) R'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where R.NROW between :NROW_FROM and :NROW_TO'); + /*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 F.NRN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SDICCMRKS_CODE_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SSTATE_NUMB_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SDICCMRKS_CODE_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SSTATE_NUMB_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.NTONNAGE_NORMAL,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.NSTATE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when F.NSTATE = 2 then F.SDAMTYPE_NAME else null end SDAMTYPE_NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when F.NSTATE = 2 then F.SEQDAMCTRL_NOTE else null end SEQDAMCTRL_NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.SDRIVER,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when F.NSTATE = 1 then F.SREPAIR_DOC else null end SREPAIR_DOC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' F.NKOA'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select TMP.NRN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SDICCMRKS_CODE_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SSTATE_NUMB_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SDICCMRKS_CODE_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SSTATE_NUMB_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.NTONNAGE_NORMAL,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.NSTATE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE') || '(TMP.NJURPERSONS, TMP.NRN, :DDATE) NSTATE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' LISTAGG(TMP.SDAMTYPE_NAME, ''<|>'') SDAMTYPE_NAME,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' '''' SDAMTYPE_NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' LISTAGG(TMP.SEQDAMCTRL_NOTE, ''<|>'') SEQDAMCTRL_NOTE,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' '''' SEQDAMCTRL_NOTE,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' LISTAGG(TMP.SDRIVER, '';'') SDRIVER,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_DRIVERS') || '(TMP.NRN, :DDATE) SDRIVER,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' LISTAGG(TMP.SREPAIR_DOC, ''<|>'') SREPAIR_DOC,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' '''' SREPAIR_DOC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_KOA_BY_PERIOD') || '(TMP.NJURPERSONS, TMP.NRN, :DKOA_FROM, :DKOA_TO) NKOA'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select T.RN NRN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.JURPERSONS NJURPERSONS,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HT.CODE SDICCMRKS_CODE_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.STATE_NUMB SSTATE_NUMB_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' CP_HT.CODE SDICCMRKS_CODE_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' CP_C.STATE_NUMB SSTATE_NUMB_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TR2.TONNAGE_NORMAL NTONNAGE_NORMAL,'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.PKG_NAME('UDO_PKG_P8PANELS_HAULER_ANL.GET_ATC_STATE') || '(T.JURPERSONS, T.RN, :DDATE) NSTATE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQ_DAM.NAME SDAMTYPE_NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQ_DAM.NOTE SEQDAMCTRL_NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DECODE(RPR.SDOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.NULL_STR() || ','); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.NULL_STR() || ','); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (RPR.SDOCUMENT || '', '' || RPR.SPLACE_REPAIR)) SREPAIR_DOC'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from HLUNITSCARD T'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join (select DL.IN_DOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DAM.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T_DAM.NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DAM.NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' row_number() over (partition by DL.IN_DOCUMENT order by DAM.DAMAGE_DATE desc) RNUM'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from DOCLINKS DL,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQDAMCTRL DAM'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join (select G.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DT.NAME'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQCONFIGDM G,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQUIPWORKDAMTYPE DT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where DT.RN = G.DAMTYPE) T_DAM'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' on DAM.EQUIPWORKDAMTYPE = T_DAM.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where DL.IN_UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('HaulerUnitsCards')); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and DL.OUT_UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('EquipDamageControl')); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and DAM.RN = DL.OUT_DOCUMENT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and TRUNC(DAM.DAMAGE_DATE) <= :DDATE'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' group by DL.IN_DOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DAM.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T_DAM.NAME,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DAM.NOTE,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DAM.DAMAGE_DATE) EQ_DAM'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' on T.RN = EQ_DAM.IN_DOCUMENT and EQ_DAM.RNUM = 1'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join (select DL.IN_DOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DECODE(RS.DOCTYPES,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.NULL_STR() || ','); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.NULL_STR() || ','); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (''<'' || TO_CHAR(RS.RN) || ''>'' || '); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.TRIM_() || '(DT.DOCCODE) || '','' || '); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.TRIM_() || '(RS.PREF) || ''-'' || '); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.TRIM_() || '(RS.NUMB) || '','' || '); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TO_CHAR(RS.DOCDATE, ''dd/mm/yyyy''))) SDOCUMENT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' when (RS.PERFORM_AGN is not null) then'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select AG.AGNNAME from AGNLIST AG where AG.RN = RS.PERFORM_AGN)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' when (RS.DEPTPERF is not null) then'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select I.NAME from INS_DEPARTMENT I where I.RN = RS.DEPTPERF)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' else'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.NULL_STR()); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' end SPLACE_REPAIR'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from DOCLINKS DL,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQRPSHEETS RS,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DOCTYPES DT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where DL.IN_UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('EquipDamageControl')); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and DL.OUT_UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('EquipRepairSheets')); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and RS.RN = DL.OUT_DOCUMENT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and DT.RN = RS.DOCTYPES) RPR'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' on RPR.IN_DOCUMENT = EQ_DAM.RN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DICCMRKS TR2,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLTYPE HT,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLUNITSCARDPART CP,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLUNITSCARD CP_C,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DICCMRKS CP_TR2,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' HLTYPE CP_HT'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where T.COMPANY = :NCOMPANY'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and ((:NDEPARTMENT is null) or ((:NDEPARTMENT is not null) and (T.DEPARTMENT = :NDEPARTMENT)))'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.DEPARTMENT in (23218545348, 23218545435, 23218547825, 28176212241, 24286125541, 24597391278, 24984694945, 23254086198)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT)'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.DICCMRKS = TR2.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and TR2.HLTYPE = HT.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and HT.CODE = :HLTYPE_CEMENTOVOZ'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP.PRN = T.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_C.RN = CP.HLUNITSCARD_PART'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_C.DICCMRKS = CP_TR2.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_TR2.HLTYPE = CP_HT.RN'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and CP_HT.CODE in (:HLTYPE_PRICEP, :HLTYPE_POLUPRICEP)) TMP'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' group by TMP.NRN,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.NJURPERSONS,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SDICCMRKS_CODE_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SSTATE_NUMB_TG,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SDICCMRKS_CODE_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.SSTATE_NUMB_PC,'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TMP.NTONNAGE_NORMAL) F'); + --PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ((:NSTATE is null) or ((:NSTATE is not null) and (F.NSTATE = :NSTATE)))'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ((:NSTATE is null) or ((:NSTATE is not null) and (((:NSTATE = 0) and (F.NSTATE in (0, 2))) or (((:NSTATE <> 0) and (F.NSTATE = :NSTATE))))))'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) R'); + PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where R.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 => 'HaulerUnitsCards', + SPROCEDURE => 'UDO_PKG_P8PANELS_HAULER_ANL.HLUNITSCARD_BASE_COND', + RDATA_GRID => RDG, + RFILTERS => RF); + /* */ + 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 => 'NDEPARTMENT', NVALUE => NDEPARTMENT); + PKG_SQL_DML.BIND_VARIABLE_STR(ICURSOR => ICURSOR, SNAME => 'HLTYPE_CEMENTOVOZ', SVALUE => SHLTYPE_CEMENTOVOZ); + PKG_SQL_DML.BIND_VARIABLE_STR(ICURSOR => ICURSOR, SNAME => 'HLTYPE_PRICEP', SVALUE => SHLTYPE_PRICEP); + PKG_SQL_DML.BIND_VARIABLE_STR(ICURSOR => ICURSOR, SNAME => 'HLTYPE_POLUPRICEP', SVALUE => SHLTYPE_POLUPRICEP); + PKG_SQL_DML.BIND_VARIABLE_DATE(ICURSOR => ICURSOR, SNAME => 'DDATE', DVALUE => DWORK_DATE); + PKG_SQL_DML.BIND_VARIABLE_DATE(ICURSOR => ICURSOR, SNAME => 'DKOA_FROM', DVALUE => DKOA_FROM); + PKG_SQL_DML.BIND_VARIABLE_DATE(ICURSOR => ICURSOR, SNAME => 'DKOA_TO', DVALUE => DKOA_TO); + PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NSTATE', NVALUE => NSTATE); + 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_STR(ICURSOR => ICURSOR, IPOSITION => 5); + PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 6); + PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 7); + PKG_SQL_DML.DEFINE_COLUMN_STR(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_NUM(ICURSOR => ICURSOR, IPOSITION => 12); + PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 13); + /* */ + 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 => 'SDICCMRKS_CODE_TG', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSTATE_NUMB_TG', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDICCMRKS_CODE_PC', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSTATE_NUMB_PC', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NTONNAGE_NORMAL', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NSTATE', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDAMTYPE_NAME', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SEQDAMCTRL_NOTE', + ICURSOR => ICURSOR, + NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDRIVER', + ICURSOR => ICURSOR, + NPOSITION => 10); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SREPAIR_DOC', + ICURSOR => ICURSOR, + NPOSITION => 11); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NKOA', + ICURSOR => ICURSOR, + NPOSITION => 12); + /* */ + 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_ATC; + + /* */ + procedure HLUNITSCARD_BASE_COND + is + SSTATE_NUMB PKG_STD.TSTRING; -- . + SSTATE_NUMB_PRICEP PKG_STD.TSTRING; -- . + SCLAUSE PKG_STD.TSTRING; -- . + begin + /* */ + PKG_COND_BROKER.SET_TABLE( 'HLUNITSCARD' ); + -- + PKG_COND_BROKER.SET_GROUP( 'PART','HLUNITSCARDPART','PRN','RN' ); + -- + PKG_COND_BROKER.SET_GROUP('PART_CARD', 'HLUNITSCARD', 'RN', 'PART', 'HLUNITSCARD_PART'); + + /* */ + -- // + PKG_COND_BROKER.ADD_CONDITION_CODE( 'CODE','EDHLTYPE','DICCMRKS <- RN;DICCMRKS;HLTYPE <- RN;HLTYPE' ); + -- . + if (PKG_COND_BROKER.CONDITION_EXISTS('EDSTATE_NUMBFrom') = 1) then + /* */ + SSTATE_NUMB := PKG_COND_BROKER.GET_CONDITION_STR('EDSTATE_NUMBFrom'); + /* . */ + SCLAUSE := 'T.STATE_NUMB like ''' || SSTATE_NUMB || '%'''; + /* */ + PKG_COND_BROKER.ADD_CLAUSE(SCLAUSE); + end if; + + /* */ + -- // + PKG_COND_BROKER.ADD_GROUP_CONDITION_CODE('PART_CARD', 'CODE', 'EDHLTYPE_PRICEP','DICCMRKS <- RN;DICCMRKS;HLTYPE <- RN;HLTYPE' ); + -- . + if (PKG_COND_BROKER.CONDITION_EXISTS('EDSTATE_NUMBFrom_PRICEP') = 1) then + /* */ + SSTATE_NUMB_PRICEP := PKG_COND_BROKER.GET_CONDITION_STR('EDSTATE_NUMBFrom_PRICEP'); + /* . */ + SCLAUSE := 'STATE_NUMB like ''' || SSTATE_NUMB_PRICEP || '%'''; + /* */ + PKG_COND_BROKER.ADD_GROUP_CLAUSE('PART_CARD', SCLAUSE); + end if; + end HLUNITSCARD_BASE_COND; + +end UDO_PKG_P8PANELS_HAULER_ANL; +/ diff --git a/db/UDO_PKG_P8PANELS_RPR_ANL.pck b/db/UDO_PKG_P8PANELS_RPR_ANL.pck new file mode 100644 index 0000000..52687d8 --- /dev/null +++ b/db/UDO_PKG_P8PANELS_RPR_ANL.pck @@ -0,0 +1,881 @@ +create or replace package UDO_PKG_P8PANELS_RPR_ANL as + + /* */ + procedure GET_INS_DEPARTMENT_NAME + ( + SCODE in varchar2, -- + SNAME out varchar2 -- + ); + + /* */ + 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, -- ( NPAGE_SIZE=0) + NPAGE_SIZE in number, -- (0 - ) + CFILTERS in clob, -- + CORDERS in clob, -- + NINCLUDE_DEF in number, -- + COUT out clob -- + ); + + /* */ + 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 -- + ) + 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 := ' '; + end; + end GET_INS_DEPARTMENT_NAME; + + /* */ + procedure PARAMS_JOINS + ( + NCOMPANY in number, -- . + SINS_DEPARTMENT in varchar2, -- + SEQTYPEWRK in varchar2, -- + SEQWRKKIND in varchar2, -- + NDEPTCUSTOMER out number, -- . - + NTYPEWRK out number, -- . + NEQWRKKIND out number -- . + ) + is + begin + /* . - */ + FIND_SUBDIVS_CODE_EX(NFLAG_SMART => 0, + NFLAG_OPTION => 1, + NCOMPANY => NCOMPANY, + SCODE => SINS_DEPARTMENT, + NRN => NDEPTCUSTOMER); + /* . */ + FIND_EQTYPEWRK_CODE(NFLAG_SMART => 0, + NFLAG_OPTION => 1, + NCOMPANY => NCOMPANY, + SCODE => SEQTYPEWRK, + NRN => NTYPEWRK); + /* . */ + 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, -- . + 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(); + /* - */ + 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); + /* - */ + 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); + + /* - */ + 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; -- + 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 => '', + SLGND_POS => PKG_P8PANELS_VISUAL.SCHART_LGND_POS_RIGHT); + /* */ + RCH_DS := 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.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 => ' (' || 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; -- + RCH_DS_LABOR PKG_P8PANELS_VISUAL.TCHART_DATASET; -- + RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- + NINTERNAL_MTR PKG_STD.TLNUMBER; -- () + NINTERNAL_LABOR PKG_STD.TLNUMBER; -- () + NEXTERNAL_MTR PKG_STD.TLNUMBER; -- () + 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, -- + RCH_DS_LABOR in out nocopy PKG_P8PANELS_VISUAL.TCHART_DATASET, -- + SELEMENT_NAME in varchar2, -- + NTYPE in number, -- + NMTR_VALUE in number, -- + 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); + /* */ + RCH_DS_MTR := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => ' '); + /* */ + 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*/ + /* */ + 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, -- ( NPAGE_SIZE=0) + NPAGE_SIZE in number, -- (0 - ) + CFILTERS in clob, -- + CORDERS in clob, -- + NINCLUDE_DEF in number, -- + 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; -- + NROW_TO PKG_STD.TREF; -- + CSQL clob; -- + ICURSOR integer; -- + begin + /* */ + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); + /* */ + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML(CORDERS => CORDERS); + /* */ + 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 => '. ', + 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 => ' ', + 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 => ' ', + 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 => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDEPTCUSTOMER_NAME', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDEPTPERF_CODE', + SCAPTION => ' ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDEPTPERF_NAME', + SCAPTION => ' ', + 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 => ' ', + 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 => ' ()', + 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); + /* */ + 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; + + /* */ + 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' ); + + /* */ + -- // + PKG_COND_BROKER.ADD_CONDITION_CODE( 'DOCCODE','EDDOCTYPE','DOCTYPES <- RN;DOCTYPES' ); + -- // + 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; + -- // + 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; + -- // .. + 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 + /* " ", "" */ + 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; + + /* */ + -- /, /- + PKG_COND_BROKER.ADD_CONDITION_CODE( 'CODE','CUSTOMERDEPTEDIT','DEPTCUSTOMER <- RN;INS_DEPARTMENT' ); + -- / / .. + 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; +/ diff --git a/db/UDO_PKG_P8PANELS_USETTINGS.pck b/db/UDO_PKG_P8PANELS_USETTINGS.pck new file mode 100644 index 0000000..e9d2654 --- /dev/null +++ b/db/UDO_PKG_P8PANELS_USETTINGS.pck @@ -0,0 +1,233 @@ +create or replace package UDO_PKG_P8PANELS_USETTINGS as + + /* */ + procedure SETTINGS_SET + ( + SPANEL in varchar2, -- + CSETTINGS in clob -- + ); + + /* */ + procedure SETTINGS_GET + ( + SPANEL in varchar2, -- + COUT out clob -- + ); + +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, -- . + SAUTHID in varchar2, -- + SPANEL in varchar2, -- + CPANEL_SETTINGS in clob, -- + NRN out number -- . + ) + 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, -- . + NCOMPANY in number, -- . + SAUTHID in varchar2, -- + SPANEL in varchar2, -- + CPANEL_SETTINGS in clob -- + ) + 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, -- . + NCOMPANY in number -- . + ) + 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, -- + NRN in number, -- . + NCOMPANY in number -- . + ) 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, -- (0 - , 1 - ) + NCOMPANY in number, -- . + SAUTHID in varchar2, -- + SPANEL in varchar2, -- + NRN out number -- . + ) + is + begin + /* */ + if (RTRIM(SPANEL) is null) then + /* */ + P_EXCEPTION(NFLAG_SMART, ' .'); + /* */ + return; + end if; + /* */ + if (RTRIM(SAUTHID) is null) then + /* */ + P_EXCEPTION(NFLAG_SMART, ' .'); + /* */ + return; + end if; + /* */ + 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, + ' "%s" .', + SPANEL); + end; + end P8PANELS_USETTING_FIND; + + /* */ + procedure SETTINGS_SET + ( + SPANEL in varchar2, -- + CSETTINGS in clob -- + ) + is + NUDO_P8PANELS_USETTING PKG_STD.TREF; -- . + NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- + SAUTHID PKG_STD.TSTRING := UTILIZER(); -- + CDATA clob; -- + begin + /* */ + if (RTRIM(SPANEL) is null) then + P_EXCEPTION(0, + ' .'); + end if; + /* */ + CDATA := '<' || XRQ_SETTINGS || '>' || + BLOB2CLOB(LBDATA => BASE64_DECODE(LCSRCE => CSETTINGS), SCHARSET => PKG_CHARSET.CHARSET_UTF_()) || ''; + /* */ + 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, -- + COUT out clob -- + ) + is + NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- + SAUTHID PKG_STD.TSTRING := UTILIZER(); -- + NUDO_P8PANELS_USETTING PKG_STD.TREF; -- . + RUDO_P8PANELS_USETTING UDO_P8PANELS_USETTING%rowtype; -- + begin + /* */ + 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 + /* */ + COUT := ''; + end if; + end SETTINGS_GET; + +end UDO_PKG_P8PANELS_USETTINGS; +/ diff --git a/db/grants.sql b/db/grants.sql new file mode 100644 index 0000000..924d063 --- /dev/null +++ b/db/grants.sql @@ -0,0 +1,4 @@ +grant select on UDO_P8PANELS_USETTING to public; +grant execute on UDO_PKG_P8PANELS_USETTINGS to public; +grant execute on UDO_PKG_P8PANELS_HAULER_ANL to public; +grant execute on UDO_PKG_P8PANELS_RPR_ANL to public; \ No newline at end of file diff --git a/p8-panels.js b/p8-panels.js index ff7d56b..25c32f0 100644 --- a/p8-panels.js +++ b/p8-panels.js @@ -214,7 +214,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PChart: () => (/* binding */ P8PChart),\n/* harmony export */ P8P_CHART_TYPE: () => (/* binding */ P8P_CHART_TYPE)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var chart_js_auto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! chart.js/auto */ \"./node_modules/chart.js/auto/auto.js\");\n/*\n Парус 8 - Панели мониторинга\n Компонент: График\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Диаграммы и графики\n\n//---------\n//Константы\n//---------\n\n//Виды графиков\nconst P8P_CHART_TYPE = {\n BAR: \"bar\",\n LINE: \"line\",\n PIE: \"pie\",\n DOUGHNUT: \"doughnut\"\n};\n\n//Структура элемента набора данных\nconst P8P_CHART_DATASET_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n label: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n borderColor: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_2___default().string), prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().string))]),\n backgroundColor: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_2___default().string), prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().string))]),\n data: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().number)),\n items: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().object))\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//График\nconst P8PChart = ({\n type,\n title,\n legendPosition,\n options = {},\n labels = [],\n datasets = [],\n onClick,\n style\n}) => {\n //Ссылки на DOM\n const chartCanvasRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const chartRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Обработка нажатия на элемент графика\n const handleClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {\n const bar = chartRef.current.getElementsAtEventForMode(e, \"nearest\", {\n intersect: true\n }, true)[0];\n if (onClick && bar) onClick({\n datasetIndex: bar.datasetIndex,\n itemIndex: bar.index,\n item: chartRef.current.data.datasets[bar.datasetIndex].items ? chartRef.current.data.datasets[bar.datasetIndex].items[bar.index] : null\n });\n }, [onClick]);\n\n //При подключении к старнице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!chartRef.current) {\n const ctx = chartCanvasRef.current.getContext(\"2d\");\n chartRef.current = new chart_js_auto__WEBPACK_IMPORTED_MODULE_1__[\"default\"](ctx, {\n type,\n data: {\n labels: [...labels],\n datasets: [...datasets]\n },\n options: {\n ...options,\n labels: {\n render: \"label\"\n },\n ...{\n responsive: true,\n plugins: {\n legend: {\n display: legendPosition ? true : false,\n position: legendPosition,\n usePointStyle: true\n },\n title: {\n display: title ? true : false,\n text: title\n }\n }\n },\n onClick: handleClick\n }\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //При обновлении данных\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (chartRef.current) {\n chartRef.current.data.labels = [...labels];\n chartRef.current.data.datasets = [...datasets];\n chartRef.current.options.onClick = handleClick;\n chartRef.current.update();\n }\n }, [datasets, labels, handleClick]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: {\n ...style\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"canvas\", {\n ref: chartCanvasRef\n }));\n};\n\n//Контроль свойств - График\nP8PChart.propTypes = {\n type: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n legendPosition: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n options: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n labels: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)),\n datasets: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_CHART_DATASET_SHAPE),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n style: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_chart.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PChart: () => (/* binding */ P8PChart),\n/* harmony export */ P8P_CHART_TYPE: () => (/* binding */ P8P_CHART_TYPE)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var chart_js_auto__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! chart.js/auto */ \"./node_modules/chart.js/auto/auto.js\");\n/*\n Парус 8 - Панели мониторинга\n Компонент: График\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Диаграммы и графики\n\n//---------\n//Константы\n//---------\n\n//Виды графиков\nconst P8P_CHART_TYPE = {\n BAR: \"bar\",\n LINE: \"line\",\n PIE: \"pie\",\n DOUGHNUT: \"doughnut\"\n};\n\n//Структура элемента набора данных\nconst P8P_CHART_DATASET_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n label: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n borderColor: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_2___default().string), prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().string))]),\n backgroundColor: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_2___default().string), prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().string))]),\n data: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().number)),\n items: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().object))\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//График\nconst P8PChart = ({\n type,\n title,\n legendPosition,\n options = {},\n labels = [],\n datasets = [],\n onClick,\n style\n}) => {\n //Ссылки на DOM\n const chartCanvasRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const chartRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Обработка нажатия на элемент графика\n const handleClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {\n const bar = chartRef.current.getElementsAtEventForMode(e, \"nearest\", {\n intersect: true\n }, true)[0];\n if (onClick && bar) onClick({\n datasetIndex: bar.datasetIndex,\n itemIndex: bar.index,\n item: chartRef.current.data.datasets[bar.datasetIndex].items ? chartRef.current.data.datasets[bar.datasetIndex].items[bar.index] : null\n });\n }, [onClick]);\n\n //При подключении к старнице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!chartRef.current) {\n const ctx = chartCanvasRef.current.getContext(\"2d\");\n chartRef.current = new chart_js_auto__WEBPACK_IMPORTED_MODULE_1__[\"default\"](ctx, {\n type,\n data: {\n labels: [...labels],\n datasets: [...datasets]\n },\n options: {\n ...options,\n labels: {\n render: \"label\"\n },\n ...{\n responsive: true,\n plugins: {\n legend: {\n display: legendPosition ? true : false,\n position: legendPosition,\n usePointStyle: true\n },\n title: {\n display: title ? true : false,\n text: title\n }\n }\n },\n onClick: handleClick\n }\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //При обновлении данных\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (chartRef.current) {\n chartRef.current.data.labels = [...labels];\n chartRef.current.data.datasets = [...datasets];\n chartRef.current.options.onClick = handleClick;\n //chartRef.current.options.plugins.title.text = title;\n chartRef.current.update();\n }\n }, [datasets, labels, handleClick]);\n //}, [title, datasets, labels, handleClick]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: {\n ...style\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"canvas\", {\n ref: chartCanvasRef\n }));\n};\n\n//Контроль свойств - График\nP8PChart.propTypes = {\n type: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n legendPosition: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n options: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n labels: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)),\n datasets: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_CHART_DATASET_SHAPE),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n style: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_chart.js?"); /***/ }), @@ -829,7 +829,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FilterDialog: () => (/* binding */ FilterDialog)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks/dict_hooks */ \"./app/panels/hauler_anl/hooks/dict_hooks.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Гаражка\r\n Компонент: Диалоговое окно фильтра отбора\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Хуки открытий разделов\n //Вспомогательные функции\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIALOG_ACTIONS: {\n justifyContent: \"flex-end\"\n },\n CLOSE_BUTTON: {\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500]\n },\n BOX_WITH_LEGEND: {\n border: \"1px solid #939393\",\n marginBottom: \"1px\"\n },\n LEGEND: {\n textAlign: \"left\"\n }\n};\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//Проверка возможности выполнения действия\nconst isActionAllow = (filter, isFiltersInit = false) => {\n //Если указана \"На дату\", а также это не инициализация\n return (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.dDate) && !isFiltersInit;\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалоговое окно фильтра отбора\nconst FilterDialog = ({\n initial,\n isFiltersInit,\n onCancel,\n onOk\n}) => {\n //Собственное состояние\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ...initial\n });\n\n //Вспомогательные функции открытия раздела\n const {\n handleInsDepartmentOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_1__.useDictionary)();\n\n //Вспомогательные функции\n const {\n handleInsDepartmentNameGet\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_1__.useProcedures)();\n\n //Отработка воода значения в фильтр\n const handleValueChanged = e => {\n setFilter(pv => ({\n ...pv,\n [e.target.name]: e.target.value,\n ...(e.target.name === \"sCustomerDept\" ? {\n sCustomerDeptName: \"\"\n } : {})\n }));\n };\n\n //При изменении каталога фильтра\n const handleCustomerDeptSelect = () => handleInsDepartmentOpen({\n sCode: filter.sCustomerDept,\n callBack: res => {\n setFilter(pv => ({\n ...pv,\n sCustomerDept: res.outParameters.out_CODE,\n sCustomerDeptName: res.outParameters.out_NAME\n }));\n }\n });\n\n //При загрузке текущей даты\n const handleLoadCurrentDate = () => {\n //Определяем текущую дату\n const currentDate = (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.formatDateJSONDateOnly)(new Date());\n //Устанавливаем\n setFilter(pv => ({\n ...pv,\n dDate: currentDate\n }));\n };\n\n //При очистке фильтра\n const handleClear = () => {\n setFilter({\n dDate: \"\",\n sCustomerDept: \"\",\n sCustomerDeptName: \"\",\n dDateKOAFrom: \"\",\n dDateKOATo: \"\"\n });\n };\n\n //При закрытии диалога без изменения фильтра\n const handleCancel = () => isActionAllow(initial, isFiltersInit) ? onCancel && onCancel() : null;\n\n //При закрытии диалога с изменением фильтра\n const handleOK = async () => {\n let filterRes = {\n ...filter\n };\n //Если наименование подразделения пустое\n if (!filterRes.sCustomerDeptName) {\n //Если мнемокоды подразделений совпадают\n filterRes.sCustomerDeptName = filterRes.sCustomerDept === initial.sCustomerDept ? initial.sCustomerDeptName : await handleInsDepartmentNameGet({\n code: filterRes.sCustomerDept\n });\n }\n isActionAllow(filterRes) && onOk ? onOk(filterRes) : null;\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n open: true,\n onClose: handleCancel,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440 \\u043E\\u0442\\u0431\\u043E\\u0440\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: handleCancel,\n sx: STYLES.CLOSE_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"dDate\",\n type: \"date\",\n InputLabelProps: {\n shrink: true\n },\n value: filter.dDate,\n onChange: handleValueChanged,\n label: \"\\u041D\\u0430 \\u0434\\u0430\\u0442\\u0443\",\n variant: \"standard\",\n fullWidth: true,\n required: true,\n error: !filter.dDate,\n InputProps: {\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"aria-label\": `dDate currentDate`,\n onClick: handleLoadCurrentDate,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"refresh\")))\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"sCustomerDept\",\n value: filter.sCustomerDept,\n onChange: handleValueChanged,\n label: \"\\u0422\\u0440\\u0430\\u043D\\u0441\\u043F\\u043E\\u0440\\u0442\\u043D\\u044B\\u0439 \\u0443\\u0447\\u0430\\u0441\\u0442\\u043E\\u043A\",\n variant: \"standard\",\n InputProps: {\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"aria-label\": `sCustomerDept select`,\n onClick: handleCustomerDeptSelect,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"list\")))\n },\n fullWidth: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.BOX_WITH_LEGEND,\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: STYLES.LEGEND\n }, \"\\u0420\\u0430\\u0441\\u0447\\u0435\\u0442 \\u041A\\u041E\\u0410\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"dDateKOAFrom\",\n type: \"datetime-local\",\n InputLabelProps: {\n shrink: true\n },\n value: filter.dDateKOAFrom,\n onChange: handleValueChanged,\n label: \"\\u0414\\u0430\\u0442\\u0430 \\u0441\",\n variant: \"standard\",\n fullWidth: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"dDateKOATo\",\n type: \"datetime-local\",\n InputLabelProps: {\n shrink: true\n },\n value: filter.dDateKOATo,\n onChange: handleValueChanged,\n label: \"\\u0414\\u0430\\u0442\\u0430 \\u043F\\u043E\",\n variant: \"standard\",\n fullWidth: true\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n disabled: !isActionAllow(filter),\n onClick: handleOK\n }, \"\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n onClick: handleClear\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n disabled: !isActionAllow(initial, isFiltersInit),\n onClick: handleCancel\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\"))));\n};\n\n//Контроль свойств компонента - Диалоговое окно фильтра отбора\nFilterDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object).isRequired,\n isFiltersInit: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/hauler_anl/filter_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FilterDialog: () => (/* binding */ FilterDialog)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks/dict_hooks */ \"./app/panels/hauler_anl/hooks/dict_hooks.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Гаражка\r\n Компонент: Диалоговое окно фильтра отбора\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Хуки открытий разделов\n //Вспомогательные функции\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIALOG_ACTIONS: {\n justifyContent: \"flex-end\"\n },\n CLOSE_BUTTON: {\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500]\n },\n BOX_WITH_LEGEND: {\n border: \"1px solid #939393\",\n marginBottom: \"1px\"\n },\n LEGEND: {\n textAlign: \"left\"\n }\n};\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//Проверка возможности выполнения действия\nconst isActionAllow = (filter, isFiltersInit = false) => {\n //Если указана \"На дату\", а также это не инициализация\n return (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.dDate) && !isFiltersInit;\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалоговое окно фильтра отбора\nconst FilterDialog = ({\n initial,\n isFiltersInit,\n onCancel,\n onOk\n}) => {\n //Собственное состояние\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ...initial\n });\n\n //Вспомогательные функции открытия раздела\n const {\n handleInsDepartmentOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_1__.useDictionary)();\n\n //Вспомогательные функции\n const {\n handleInsDepartmentNameGet\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_1__.useProcedures)();\n\n //Отработка воода значения в фильтр\n const handleValueChanged = e => {\n setFilter(pv => ({\n ...pv,\n [e.target.name]: e.target.value,\n ...(e.target.name === \"sCustomerDept\" ? {\n sCustomerDeptName: \"\"\n } : {})\n }));\n };\n\n //При изменении каталога фильтра\n const handleCustomerDeptSelect = () => handleInsDepartmentOpen({\n sCode: filter.sCustomerDept,\n callBack: res => {\n setFilter(pv => ({\n ...pv,\n sCustomerDept: res.outParameters.out_CODE,\n sCustomerDeptName: res.outParameters.out_NAME\n }));\n }\n });\n\n //При загрузке текущей даты\n const handleLoadCurrentDate = () => {\n //Определяем текущую дату\n const currentDate = (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.formatDateJSONDateOnly)(new Date());\n //Устанавливаем\n setFilter(pv => ({\n ...pv,\n dDate: currentDate\n }));\n };\n\n //При очистке фильтра\n const handleClear = () => {\n setFilter({\n dDate: \"\",\n sCustomerDept: \"\",\n sCustomerDeptName: \"\",\n dDateKOAFrom: \"\",\n dDateKOATo: \"\"\n });\n };\n\n //При закрытии диалога без изменения фильтра\n const handleCancel = () => isActionAllow(initial, isFiltersInit) ? onCancel && onCancel() : null;\n\n //При закрытии диалога с изменением фильтра\n const handleOK = async () => {\n let filterRes = {\n ...filter\n };\n //Если наименование подразделения пустое\n if (!filterRes.sCustomerDeptName) {\n //Если мнемокоды подразделений совпадают\n filterRes.sCustomerDeptName = filterRes.sCustomerDept === initial.sCustomerDept ? initial.sCustomerDeptName : await handleInsDepartmentNameGet({\n code: filterRes.sCustomerDept\n });\n }\n isActionAllow(filterRes) && onOk ? onOk(filterRes) : null;\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n open: true,\n onClose: handleCancel,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440 \\u043E\\u0442\\u0431\\u043E\\u0440\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: handleCancel,\n sx: STYLES.CLOSE_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"dDate\",\n type: \"date\",\n InputLabelProps: {\n shrink: true\n },\n value: filter.dDate,\n onChange: handleValueChanged,\n label: \"\\u041D\\u0430 \\u0434\\u0430\\u0442\\u0443\",\n variant: \"standard\",\n fullWidth: true,\n required: true,\n error: !filter.dDate,\n InputProps: {\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"aria-label\": `dDate currentDate`,\n onClick: handleLoadCurrentDate,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"refresh\")))\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"sCustomerDept\",\n value: filter.sCustomerDept,\n onChange: handleValueChanged,\n label: \"\\u0422\\u0440\\u0430\\u043D\\u0441\\u043F\\u043E\\u0440\\u0442\\u043D\\u044B\\u0439 \\u0443\\u0447\\u0430\\u0441\\u0442\\u043E\\u043A\",\n variant: \"standard\",\n InputProps: {\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"aria-label\": `sCustomerDept select`,\n onClick: handleCustomerDeptSelect,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"list\")))\n },\n fullWidth: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.BOX_WITH_LEGEND,\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: STYLES.LEGEND\n }, \"\\u0420\\u0430\\u0441\\u0447\\u0435\\u0442 \\u041A\\u0422\\u0413/\\u041A\\u041E\\u0410\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"dDateKOAFrom\",\n type: \"datetime-local\",\n InputLabelProps: {\n shrink: true\n },\n value: filter.dDateKOAFrom,\n onChange: handleValueChanged,\n label: \"\\u0414\\u0430\\u0442\\u0430 \\u0441\",\n variant: \"standard\",\n fullWidth: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"dDateKOATo\",\n type: \"datetime-local\",\n InputLabelProps: {\n shrink: true\n },\n value: filter.dDateKOATo,\n onChange: handleValueChanged,\n label: \"\\u0414\\u0430\\u0442\\u0430 \\u043F\\u043E\",\n variant: \"standard\",\n fullWidth: true\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n disabled: !isActionAllow(filter),\n onClick: handleOK\n }, \"\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n onClick: handleClear\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n disabled: !isActionAllow(initial, isFiltersInit),\n onClick: handleCancel\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\"))));\n};\n\n//Контроль свойств компонента - Диалоговое окно фильтра отбора\nFilterDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object).isRequired,\n isFiltersInit: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/hauler_anl/filter_dialog.js?"); /***/ }), @@ -840,7 +840,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HaulerAnl: () => (/* binding */ HaulerAnl)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_p8p_chart__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_chart */ \"./app/components/p8p_chart.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _filter_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./filter_dialog */ \"./app/panels/hauler_anl/filter_dialog.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./filter */ \"./app/panels/hauler_anl/filter.js\");\n/* harmony import */ var _hooks_filter_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./hooks/filter_hooks */ \"./app/panels/hauler_anl/hooks/filter_hooks.js\");\n/* harmony import */ var _hooks_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hooks/hooks */ \"./app/panels/hauler_anl/hooks/hooks.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./layouts */ \"./app/panels/hauler_anl/layouts.js\");\n/* harmony import */ var _chart_filter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./chart_filter */ \"./app/panels/hauler_anl/chart_filter.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./hooks/dict_hooks */ \"./app/panels/hauler_anl/hooks/dict_hooks.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Гаражка\r\n Панель мониторинга: Корневая панель гаражки\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Заголовок страницы\n //График\n //Типовые стили\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Диалог фильтра\n //Фильтры\n //Хуки фильтров\n\n //Вспомогательные функции верстки\n //Фильтр графика\n //Вспомогательные функции\n //Хуки для открытия раздела\n\n//---------\n//Константы\n//---------\n\n//Высота графиков\nconst CHART_HEIGHT = \"300px\";\n\n//Стили\nconst STYLES = {\n TABLE_PROJECTS: (showCharts, morePages, filters, isChartsFiltered) => ({\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_1__.APP_BAR_HEIGHT} - ${showCharts ? CHART_HEIGHT : \"0px\"} - ${morePages ? _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_MORE_HEIGHT : \"0px\"} - ${filters ? _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_FILTERS_HEIGHT : \"0px\"} - ${showCharts && isChartsFiltered ? \"53px\" : \"0px\"} - 90px)`,\n maxWidth: `calc(100vw - 16px)`,\n ..._app_styles__WEBPACK_IMPORTED_MODULE_3__.APP_STYLES.SCROLL\n }),\n CHART: {\n maxHeight: CHART_HEIGHT,\n display: \"flex\",\n justifyContent: \"center\"\n },\n CHART_PAPER: {\n height: \"100%\",\n paddingBottom: \"5px\"\n },\n CHART_FAB: {\n position: \"absolute\",\n top: 80,\n left: 16\n }\n};\n\n//Графики страницы\nconst CHART_NAMES = {\n info: \"INFO\",\n calcs: \"CALCS\"\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель гаражки\nconst HaulerAnl = () => {\n //Вспомогательные функции открытия раздела\n const {\n handleEquipRepairSheetsOpen,\n handleHaulerUnitsCardsOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_13__.useDictionary)();\n\n //Собственное состояние - признак отображения фильтров\n const [isFilterOpen, setIsFilterOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Состояния графиков\n const [showCharts, setShowCharts] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - общие фильтры\n const [filterValues, isFiltersLoaded, filtersInit, handleFilterChange] = (0,_hooks_filter_hooks__WEBPACK_IMPORTED_MODULE_8__.useFilters)();\n\n //Собственное состояние - фильтры информации\n const [filterInfo, setFilterInfo] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n nState: null\n });\n\n //Собственное состояние - фильтры расчетов\n const [filterCalcs, setFilterCalcs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n sDepartment: null\n });\n\n //Общие фильтры панели\n const allFilters = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n return {\n ...filterValues,\n nState: filterInfo.nState,\n sDepartment: filterCalcs.sDepartment\n };\n }, [filterValues, filterInfo, filterCalcs]);\n\n //Состояние графика информации АТС\n const {\n chartInfo,\n handleReload: handleChartInfoReload\n } = (0,_hooks_hooks__WEBPACK_IMPORTED_MODULE_9__.useChartInfo)({\n storedArgs: allFilters\n });\n\n //Состояние графика расчетов\n const {\n chartCalcs,\n handleReload: handleChartCalcsReload\n } = (0,_hooks_hooks__WEBPACK_IMPORTED_MODULE_9__.useChartCalcs)({\n storedArgs: allFilters\n });\n\n //Состояние таблицы ремонтных ведомостей\n const {\n dataGrid,\n handleReload: handleTableATCReload,\n handleFilterChanged,\n handleOrderChanged,\n handlePagesCountChanged\n } = (0,_hooks_hooks__WEBPACK_IMPORTED_MODULE_9__.useTableATC)({\n storedArgs: allFilters\n });\n\n //При изменении фильтра в диалоге\n const handleFilterOk = async filter => {\n //Обновляем фильтры\n await handleFilterChange({\n filter\n });\n //Если указан общий и внутренний фильтр по подразделению\n if (filter.sCustomerDept && filterCalcs.sDepartment) {\n //Очищаем внутренний\n setFilterCalcs({\n sDepartment: null,\n ignoreReload: true\n });\n }\n //Закрываем диалог фильтра\n setIsFilterOpen(false);\n };\n\n //При закрытии диалога фильтра\n const handleFilterCancel = () => setIsFilterOpen(false);\n\n //При открытии диалога фильтра\n const handleFilterDialogOpen = () => setIsFilterOpen(true);\n\n //При нажатии на элемент графика \"Информация АТС\"\n const handleChartInfoClick = ({\n item\n }) => {\n setFilterInfo({\n nState: item.NSTATE\n });\n };\n\n //При нажатии на элемент графика расчетов\n const handleChartCalcsClick = ({\n item\n }) => {\n //Если подразделение не соответствует текущему\n if (item.SCODE !== filterCalcs.sDepartment && !filterValues.sCustomerDept) setFilterCalcs({\n sDepartment: item.SCODE\n });\n };\n\n //При изменении фильтра графика\n const handleChartFilterChange = ({\n chartName,\n filter\n }) => {\n //При изменении фильтров графика \"Информация АТС\"\n if (chartName === CHART_NAMES.info) {\n setFilterInfo({\n ...filter\n });\n }\n //При изменении фильтров графика расчетов\n if (chartName === CHART_NAMES.calcs) setFilterCalcs({\n ...filter\n });\n };\n\n //При изменении фильтра\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если фильтр установлен\n if (!filtersInit) {\n handleChartInfoReload();\n handleChartCalcsReload();\n handleTableATCReload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allFilters, filtersInit]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n p: 1\n }, !filtersInit ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter__WEBPACK_IMPORTED_MODULE_7__.Filter, {\n filter: filterValues,\n onFilterOpen: handleFilterDialogOpen\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n container: true,\n spacing: 1\n }, showCharts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n item: true,\n xs: 6\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterInfo.nState) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_chart_filter__WEBPACK_IMPORTED_MODULE_11__.ChartFilter, {\n chartName: CHART_NAMES.info,\n filter: filterInfo,\n onFilterChange: handleChartFilterChange\n }) : null, chartInfo.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_2__.P8PChart, _extends({}, chartInfo, {\n style: STYLES.CHART,\n onClick: handleChartInfoClick,\n legendPosition: \"top\"\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n item: true,\n xs: 6\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterCalcs.sDepartment) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_chart_filter__WEBPACK_IMPORTED_MODULE_11__.ChartFilter, {\n chartName: CHART_NAMES.calcs,\n filter: filterCalcs,\n onFilterChange: handleChartFilterChange\n }) : null, chartCalcs.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_2__.P8PChart, _extends({}, chartCalcs, {\n style: STYLES.CHART,\n options: {\n scales: {\n x: {\n stacked: true\n },\n y: {\n stacked: true\n }\n }\n },\n legendPosition: \"top\",\n onClick: handleChartCalcsClick\n })) : null))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n item: true,\n xs: 12\n }, dataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_5__.P8P_DATA_GRID_CONFIG_PROPS, dataGrid, {\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_SIZE.LARGE,\n containerComponentProps: {\n sx: STYLES.TABLE_PROJECTS(showCharts, dataGrid.morePages, (dataGrid.filters || []).length > 0, (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterInfo.nState) || (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterCalcs.sDepartment))\n },\n filtersInitial: dataGrid.filters,\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.dataCellRender)({\n ...prms,\n showHaulerUnitsCards: handleHaulerUnitsCardsOpen\n }),\n valueFormatter: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.valueFormatter)({\n ...prms,\n onRepairSheetOpen: handleEquipRepairSheetsOpen\n })\n })) : null)), chartInfo.loaded && chartCalcs.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n size: \"small\",\n color: \"secondary\",\n sx: STYLES.CHART_FAB,\n onClick: () => setShowCharts(!showCharts)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], null, showCharts ? \"expand_less\" : \"expand_more\")) : null, isFilterOpen && isFiltersLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter_dialog__WEBPACK_IMPORTED_MODULE_6__.FilterDialog, {\n initial: filterValues,\n isFiltersInit: filtersInit,\n onOk: handleFilterOk,\n onCancel: handleFilterCancel\n }) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/hauler_anl/hauler_anl.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HaulerAnl: () => (/* binding */ HaulerAnl)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_p8p_chart__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_chart */ \"./app/components/p8p_chart.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _filter_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./filter_dialog */ \"./app/panels/hauler_anl/filter_dialog.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./filter */ \"./app/panels/hauler_anl/filter.js\");\n/* harmony import */ var _hooks_filter_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./hooks/filter_hooks */ \"./app/panels/hauler_anl/hooks/filter_hooks.js\");\n/* harmony import */ var _hooks_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hooks/hooks */ \"./app/panels/hauler_anl/hooks/hooks.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./layouts */ \"./app/panels/hauler_anl/layouts.js\");\n/* harmony import */ var _chart_filter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./chart_filter */ \"./app/panels/hauler_anl/chart_filter.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./hooks/dict_hooks */ \"./app/panels/hauler_anl/hooks/dict_hooks.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Гаражка\r\n Панель мониторинга: Корневая панель гаражки\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Заголовок страницы\n //График\n //Типовые стили\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Диалог фильтра\n //Фильтры\n //Хуки фильтров\n\n //Вспомогательные функции верстки\n //Фильтр графика\n //Вспомогательные функции\n //Хуки для открытия раздела\n\n//---------\n//Константы\n//---------\n\n//Высота графиков\nconst CHART_HEIGHT = \"300px\";\n\n//Стили\nconst STYLES = {\n TABLE_PROJECTS: (showCharts, morePages, filters, isChartsFiltered) => ({\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_1__.APP_BAR_HEIGHT} - ${showCharts ? CHART_HEIGHT : \"0px\"} - ${morePages ? _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_MORE_HEIGHT : \"0px\"} - ${filters ? _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_FILTERS_HEIGHT : \"0px\"} - ${showCharts && isChartsFiltered ? \"53px\" : \"0px\"} - 90px)`,\n maxWidth: `calc(100vw - 16px)`,\n ..._app_styles__WEBPACK_IMPORTED_MODULE_3__.APP_STYLES.SCROLL\n }),\n CHART: {\n maxHeight: CHART_HEIGHT,\n display: \"flex\",\n justifyContent: \"center\"\n },\n CHART_PAPER: {\n height: \"100%\",\n paddingBottom: \"5px\"\n },\n CHART_FAB: {\n position: \"absolute\",\n top: 80,\n left: 16\n }\n};\n\n//Графики страницы\nconst CHART_NAMES = {\n info: \"INFO\",\n calcs: \"CALCS\"\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель гаражки\nconst HaulerAnl = () => {\n //Вспомогательные функции открытия раздела\n const {\n handleEquipRepairSheetsOpen,\n handleHaulerUnitsCardsOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_13__.useDictionary)();\n\n //Собственное состояние - признак отображения фильтров\n const [isFilterOpen, setIsFilterOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Состояния графиков\n const [showCharts, setShowCharts] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - общие фильтры\n const [filterValues, isFiltersLoaded, filtersInit, handleFilterChange] = (0,_hooks_filter_hooks__WEBPACK_IMPORTED_MODULE_8__.useFilters)();\n\n //Собственное состояние - фильтры информации\n const [filterInfo, setFilterInfo] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n nState: null\n });\n\n //Собственное состояние - фильтры расчетов\n const [filterCalcs, setFilterCalcs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n sDepartment: null\n });\n\n //Общие фильтры панели\n const allFilters = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n return {\n ...filterValues,\n nState: filterInfo.nState,\n sDepartment: filterCalcs.sDepartment\n };\n }, [filterValues, filterInfo, filterCalcs]);\n\n //Состояние графика информации АТС\n const {\n chartInfo,\n handleReload: handleChartInfoReload,\n loading: chartInfoLoading\n } = (0,_hooks_hooks__WEBPACK_IMPORTED_MODULE_9__.useChartInfo)({\n storedArgs: allFilters\n });\n\n //Состояние графика расчетов\n const {\n chartCalcs,\n handleReload: handleChartCalcsReload\n } = (0,_hooks_hooks__WEBPACK_IMPORTED_MODULE_9__.useChartCalcs)({\n storedArgs: allFilters\n });\n\n //Состояние таблицы ремонтных ведомостей\n const {\n dataGrid,\n handleReload: handleTableATCReload,\n handleFilterChanged,\n handleOrderChanged,\n handlePagesCountChanged\n } = (0,_hooks_hooks__WEBPACK_IMPORTED_MODULE_9__.useTableATC)({\n storedArgs: allFilters\n });\n\n //При изменении фильтра в диалоге\n const handleFilterOk = async filter => {\n //Обновляем фильтры\n await handleFilterChange({\n filter\n });\n //Если указан общий и внутренний фильтр по подразделению\n if (filter.sCustomerDept && filterCalcs.sDepartment) {\n //Очищаем внутренний\n setFilterCalcs({\n sDepartment: null,\n ignoreReload: true\n });\n }\n //Закрываем диалог фильтра\n setIsFilterOpen(false);\n };\n\n //При закрытии диалога фильтра\n const handleFilterCancel = () => setIsFilterOpen(false);\n\n //При открытии диалога фильтра\n const handleFilterDialogOpen = () => setIsFilterOpen(true);\n\n //При нажатии на элемент графика \"Информация АТС\"\n const handleChartInfoClick = ({\n item\n }) => {\n setFilterInfo({\n nState: item.NSTATE\n });\n };\n\n //При нажатии на элемент графика расчетов\n const handleChartCalcsClick = ({\n item\n }) => {\n //Если подразделение не соответствует текущему\n if (item.SCODE !== filterCalcs.sDepartment && !filterValues.sCustomerDept) setFilterCalcs({\n sDepartment: item.SCODE\n });\n };\n\n //При изменении фильтра графика\n const handleChartFilterChange = ({\n chartName,\n filter\n }) => {\n //При изменении фильтров графика \"Информация АТС\"\n if (chartName === CHART_NAMES.info) {\n setFilterInfo({\n ...filter\n });\n }\n //При изменении фильтров графика расчетов\n if (chartName === CHART_NAMES.calcs) setFilterCalcs({\n ...filter\n });\n };\n\n //При изменении фильтра\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если фильтр установлен\n if (!filtersInit) {\n handleChartInfoReload();\n handleChartCalcsReload();\n handleTableATCReload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allFilters, filtersInit]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n p: 1\n }, !filtersInit ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter__WEBPACK_IMPORTED_MODULE_7__.Filter, {\n filter: filterValues,\n onFilterOpen: handleFilterDialogOpen\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n container: true,\n spacing: 1\n }, showCharts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n item: true,\n xs: 6\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterInfo.nState) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_chart_filter__WEBPACK_IMPORTED_MODULE_11__.ChartFilter, {\n chartName: CHART_NAMES.info,\n filter: filterInfo,\n onFilterChange: handleChartFilterChange\n }) : null, chartInfo.loaded && !chartInfoLoading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_2__.P8PChart, _extends({}, chartInfo, {\n style: STYLES.CHART,\n onClick: handleChartInfoClick,\n legendPosition: \"top\"\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n item: true,\n xs: 6\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterCalcs.sDepartment) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_chart_filter__WEBPACK_IMPORTED_MODULE_11__.ChartFilter, {\n chartName: CHART_NAMES.calcs,\n filter: filterCalcs,\n onFilterChange: handleChartFilterChange\n }) : null, chartCalcs.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_2__.P8PChart, _extends({}, chartCalcs, {\n style: STYLES.CHART,\n options: {\n scales: {\n x: {\n stacked: true\n },\n y: {\n stacked: true\n }\n }\n },\n legendPosition: \"top\",\n onClick: handleChartCalcsClick\n })) : null))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n item: true,\n xs: 12\n }, dataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_5__.P8P_DATA_GRID_CONFIG_PROPS, dataGrid, {\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_SIZE.LARGE,\n containerComponentProps: {\n sx: STYLES.TABLE_PROJECTS(showCharts, dataGrid.morePages, (dataGrid.filters || []).length > 0, (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterInfo.nState) || (0,_core_utils__WEBPACK_IMPORTED_MODULE_12__.hasValue)(filterCalcs.sDepartment))\n },\n filtersInitial: dataGrid.filters,\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.dataCellRender)({\n ...prms,\n showHaulerUnitsCards: handleHaulerUnitsCardsOpen\n }),\n valueFormatter: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.valueFormatter)({\n ...prms,\n onRepairSheetOpen: handleEquipRepairSheetsOpen\n })\n })) : null)), chartInfo.loaded && chartCalcs.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n size: \"small\",\n color: \"secondary\",\n sx: STYLES.CHART_FAB,\n onClick: () => setShowCharts(!showCharts)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], null, showCharts ? \"expand_less\" : \"expand_more\")) : null, isFilterOpen && isFiltersLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter_dialog__WEBPACK_IMPORTED_MODULE_6__.FilterDialog, {\n initial: filterValues,\n isFiltersInit: filtersInit,\n onOk: handleFilterOk,\n onCancel: handleFilterCancel\n }) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/hauler_anl/hauler_anl.js?"); /***/ }), @@ -873,7 +873,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useChartCalcs: () => (/* binding */ useChartCalcs),\n/* harmony export */ useChartInfo: () => (/* binding */ useChartInfo),\n/* harmony export */ useTableATC: () => (/* binding */ useTableATC)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../core/utils */ \"./app/core/utils.js\");\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Гаражка\r\n Пользовательские хуки: Хуки основных компонентов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук графика АТС\nconst useChartInfo = ({\n storedArgs = {}\n}) => {\n //Собственное состояние - график\n const [chartInfo, setChartInfo] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n reload: false\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При необходимости перезагрузки графика\n const handleReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => setChartInfo(pv => ({\n ...pv,\n reload: true\n })), []);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных графика с сервера\n const loadChart = async () => {\n try {\n const chart = await executeStored({\n stored: \"UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_INFO\",\n args: {\n DDATE: storedArgs.dDate ? new Date(storedArgs.dDate) : null,\n SDEPARTMENT: storedArgs.sCustomerDept || storedArgs.sDepartment,\n NSTATE: storedArgs.nState\n },\n respArg: \"COUT\"\n });\n setChartInfo(pv => ({\n ...pv,\n loaded: true,\n reload: false,\n ...chart.XCHART\n }));\n } catch (e) {\n setChartInfo(pv => ({\n ...pv,\n loaded: false,\n reload: false\n }));\n }\n };\n //При необходимости перезагрузить\n if (chartInfo.reload) loadChart();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartInfo.reload, executeStored]);\n\n //Возвращаем график\n return {\n chartInfo,\n handleReload\n };\n};\n\n//Хук графика КГТ/КОА\nconst useChartCalcs = ({\n storedArgs = {}\n}) => {\n //Собственное состояние - график\n const [chartCalcs, setChartCalcs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n reload: false\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При необходимости перезагрузки графика\n const handleReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => setChartCalcs(pv => ({\n ...pv,\n reload: true\n })), []);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных графика с сервера\n const loadChart = async () => {\n try {\n const chart = await executeStored({\n stored: \"UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_KTG_KOA\",\n args: {\n SDEPARTMENT: storedArgs.sCustomerDept || storedArgs.sDepartment,\n DDATE_KOA_FROM: storedArgs.dDateKOAFrom ? new Date(storedArgs.dDateKOAFrom) : null,\n DDATE_KOA_TO: storedArgs.dDateKOATo ? new Date(storedArgs.dDateKOATo) : null,\n DDATE: storedArgs.dDate ? new Date(storedArgs.dDate) : null,\n NSTATE: storedArgs.nState\n },\n respArg: \"COUT\"\n });\n setChartCalcs(pv => ({\n ...pv,\n loaded: true,\n reload: false,\n labels: chart.XCHART?.labels ? [...chart.XCHART.labels] : [],\n ...chart.XCHART\n }));\n } catch (e) {\n setChartCalcs(pv => ({\n ...pv,\n loaded: false,\n reload: false\n }));\n }\n };\n //При необходимости перезагрузить\n if (chartCalcs.reload) loadChart();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartCalcs.reload, executeStored]);\n\n //Возвращаем график\n return {\n chartCalcs,\n handleReload\n };\n};\n\n//Хук таблицы АТС\nconst useTableATC = ({\n storedArgs = {}\n}) => {\n //Собственное состояние - таблица\n const [dataGrid, setDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n filters: [],\n orders: null,\n pageNumber: 1,\n morePages: true,\n reloading: false\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setDataGrid(pv => ({\n ...pv,\n filters: [...filters],\n pageNumber: 1,\n reloading: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setDataGrid(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reloading: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reloading: true\n }));\n\n //При необходимости перезагрузки таблицы\n const handleReload = () => setDataGrid(pv => ({\n ...pv,\n pageNumber: 1,\n reloading: true\n }));\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных графика с сервера\n const loadDataGrid = async () => {\n try {\n const data = await executeStored({\n stored: \"UDO_PKG_P8PANELS_HAULER_ANL.DATA_GRID_ATC\",\n args: {\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.object2Base64XML)(dataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.object2Base64XML)(dataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: dataGrid.pageNumber,\n NPAGE_SIZE: 10,\n NINCLUDE_DEF: dataGrid.dataLoaded ? 0 : 1,\n DDATE: storedArgs.dDate ? new Date(storedArgs.dDate) : null,\n DDATE_KOA_FROM: storedArgs.dDateKOAFrom ? new Date(storedArgs.dDateKOAFrom) : null,\n DDATE_KOA_TO: storedArgs.dDateKOATo ? new Date(storedArgs.dDateKOATo) : null,\n SDEPARTMENT: storedArgs.sCustomerDept || storedArgs.sDepartment,\n NSTATE: storedArgs.nState\n },\n attributeValueProcessor: (name, val) => [\"DDOCDATE\", \"DDATEFACT_BEG\", \"DDATEFACT_END\"].includes(name) ? (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.formatDateRF)(val) : val,\n respArg: \"COUT\"\n });\n setDataGrid(pv => ({\n ...pv,\n ...data.XDATA_GRID,\n columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef || [],\n rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...(pv.rows || []), ...(data.XDATA_GRID.rows || [])],\n dataLoaded: true,\n reloading: false,\n morePages: (data.XDATA_GRID.rows || []).length >= 10\n }));\n } catch (e) {\n setDataGrid(pv => ({\n ...pv,\n loaded: false,\n reload: false\n }));\n }\n };\n //При необходимости перезагрузить\n if (dataGrid.reloading) loadDataGrid();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataGrid.reloading, executeStored]);\n\n //Возвращаем график\n return {\n dataGrid,\n handleReload,\n handleFilterChanged,\n handleOrderChanged,\n handlePagesCountChanged\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/hauler_anl/hooks/hooks.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useChartCalcs: () => (/* binding */ useChartCalcs),\n/* harmony export */ useChartInfo: () => (/* binding */ useChartInfo),\n/* harmony export */ useTableATC: () => (/* binding */ useTableATC)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../core/utils */ \"./app/core/utils.js\");\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Гаражка\r\n Пользовательские хуки: Хуки основных компонентов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n //Вспомогательные функции\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук графика АТС\nconst useChartInfo = ({\n storedArgs = {}\n}) => {\n //Собственное состояние - график\n const [chartInfo, setChartInfo] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n reload: false\n });\n\n //Собственное состояние - загрузка данных\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При необходимости перезагрузки графика\n const handleReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => setChartInfo(pv => ({\n ...pv,\n reload: true\n })), []);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных графика с сервера\n const loadChart = async () => {\n try {\n setLoading(true);\n const chart = await executeStored({\n stored: \"UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_INFO\",\n args: {\n DDATE: storedArgs.dDate ? new Date(storedArgs.dDate) : null,\n SDEPARTMENT: storedArgs.sCustomerDept || storedArgs.sDepartment,\n NSTATE: storedArgs.nState\n },\n respArg: \"COUT\"\n });\n setChartInfo(pv => ({\n ...pv,\n loaded: true,\n reload: false,\n ...chart.XCHART\n }));\n } catch (e) {\n setChartInfo(pv => ({\n ...pv,\n loaded: false,\n reload: false\n }));\n } finally {\n setLoading(false);\n }\n };\n //При необходимости перезагрузить\n if (chartInfo.reload) loadChart();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartInfo.reload, executeStored]);\n\n //Возвращаем график\n return {\n chartInfo,\n handleReload,\n loading\n };\n};\n\n//Хук графика КГТ/КОА\nconst useChartCalcs = ({\n storedArgs = {}\n}) => {\n //Собственное состояние - график\n const [chartCalcs, setChartCalcs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n reload: false\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При необходимости перезагрузки графика\n const handleReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => setChartCalcs(pv => ({\n ...pv,\n reload: true\n })), []);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных графика с сервера\n const loadChart = async () => {\n try {\n const chart = await executeStored({\n stored: \"UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_KTG_KOA\",\n args: {\n SDEPARTMENT: storedArgs.sCustomerDept || storedArgs.sDepartment,\n DDATE_KOA_FROM: storedArgs.dDateKOAFrom ? new Date(storedArgs.dDateKOAFrom) : null,\n DDATE_KOA_TO: storedArgs.dDateKOATo ? new Date(storedArgs.dDateKOATo) : null,\n DDATE: storedArgs.dDate ? new Date(storedArgs.dDate) : null,\n NSTATE: storedArgs.nState\n },\n respArg: \"COUT\"\n });\n setChartCalcs(pv => ({\n ...pv,\n loaded: true,\n reload: false,\n labels: chart.XCHART?.labels ? [...chart.XCHART.labels] : [],\n ...chart.XCHART\n }));\n } catch (e) {\n setChartCalcs(pv => ({\n ...pv,\n loaded: false,\n reload: false\n }));\n }\n };\n //При необходимости перезагрузить\n if (chartCalcs.reload) loadChart();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartCalcs.reload, executeStored]);\n\n //Возвращаем график\n return {\n chartCalcs,\n handleReload\n };\n};\n\n//Хук таблицы АТС\nconst useTableATC = ({\n storedArgs = {}\n}) => {\n //Собственное состояние - таблица\n const [dataGrid, setDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n filters: [],\n orders: null,\n pageNumber: 1,\n morePages: true,\n reloading: false\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setDataGrid(pv => ({\n ...pv,\n filters: [...filters],\n pageNumber: 1,\n reloading: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setDataGrid(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reloading: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reloading: true\n }));\n\n //При необходимости перезагрузки таблицы\n const handleReload = () => setDataGrid(pv => ({\n ...pv,\n pageNumber: 1,\n reloading: true\n }));\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных графика с сервера\n const loadDataGrid = async () => {\n try {\n const data = await executeStored({\n stored: \"UDO_PKG_P8PANELS_HAULER_ANL.DATA_GRID_ATC\",\n args: {\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.object2Base64XML)(dataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.object2Base64XML)(dataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: dataGrid.pageNumber,\n NPAGE_SIZE: 10,\n NINCLUDE_DEF: dataGrid.dataLoaded ? 0 : 1,\n DDATE: storedArgs.dDate ? new Date(storedArgs.dDate) : null,\n DDATE_KOA_FROM: storedArgs.dDateKOAFrom ? new Date(storedArgs.dDateKOAFrom) : null,\n DDATE_KOA_TO: storedArgs.dDateKOATo ? new Date(storedArgs.dDateKOATo) : null,\n SDEPARTMENT: storedArgs.sCustomerDept || storedArgs.sDepartment,\n NSTATE: storedArgs.nState\n },\n attributeValueProcessor: (name, val) => [\"DDOCDATE\", \"DDATEFACT_BEG\", \"DDATEFACT_END\"].includes(name) ? (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.formatDateRF)(val) : val,\n respArg: \"COUT\"\n });\n setDataGrid(pv => ({\n ...pv,\n ...data.XDATA_GRID,\n columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef || [],\n rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...(pv.rows || []), ...(data.XDATA_GRID.rows || [])],\n dataLoaded: true,\n reloading: false,\n morePages: (data.XDATA_GRID.rows || []).length >= 10\n }));\n } catch (e) {\n setDataGrid(pv => ({\n ...pv,\n loaded: false,\n reload: false\n }));\n }\n };\n //При необходимости перезагрузить\n if (dataGrid.reloading) loadDataGrid();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataGrid.reloading, executeStored]);\n\n //Возвращаем график\n return {\n dataGrid,\n handleReload,\n handleFilterChanged,\n handleOrderChanged,\n handlePagesCountChanged\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/hauler_anl/hooks/hooks.js?"); /***/ }), diff --git a/p8panels.config b/p8panels.config index 4fba77d..7acc403 100644 --- a/p8panels.config +++ b/p8panels.config @@ -17,7 +17,7 @@ - + @@ -205,18 +205,18 @@ showInPanelsList="true" preview="./img/clnt_task_board.jpg"/> { fullWidth /> - Расчет КОА + Расчет КТГ/КОА { }, [filterValues, filterInfo, filterCalcs]); //Состояние графика информации АТС - const { chartInfo, handleReload: handleChartInfoReload } = useChartInfo({ storedArgs: allFilters }); + const { chartInfo, handleReload: handleChartInfoReload, loading: chartInfoLoading } = useChartInfo({ storedArgs: allFilters }); //Состояние графика расчетов const { chartCalcs, handleReload: handleChartCalcsReload } = useChartCalcs({ storedArgs: allFilters }); @@ -159,7 +159,7 @@ const HaulerAnl = () => { {hasValue(filterInfo.nState) ? ( ) : null} - {chartInfo.loaded ? ( + {chartInfo.loaded && !chartInfoLoading ? ( ) : null} diff --git a/hauler_anl/hooks/dict_hooks.js b/panels/hauler_anl/hooks/dict_hooks.js similarity index 100% rename from hauler_anl/hooks/dict_hooks.js rename to panels/hauler_anl/hooks/dict_hooks.js diff --git a/hauler_anl/hooks/filter_hooks.js b/panels/hauler_anl/hooks/filter_hooks.js similarity index 100% rename from hauler_anl/hooks/filter_hooks.js rename to panels/hauler_anl/hooks/filter_hooks.js diff --git a/hauler_anl/hooks/hooks.js b/panels/hauler_anl/hooks/hooks.js similarity index 96% rename from hauler_anl/hooks/hooks.js rename to panels/hauler_anl/hooks/hooks.js index 8074f0f..d6f85b1 100644 --- a/hauler_anl/hooks/hooks.js +++ b/panels/hauler_anl/hooks/hooks.js @@ -9,7 +9,7 @@ import { useState, useContext, useCallback, useEffect } from "react"; //Классы React import { BackEndСtx } from "../../../context/backend"; //Контекст взаимодействия с сервером -import { object2Base64XML, formatDateRF } from "../../../core/utils"; +import { object2Base64XML, formatDateRF } from "../../../core/utils"; //Вспомогательные функции //-------------------------- //Вспомогательные компоненты @@ -24,6 +24,9 @@ const useChartInfo = ({ storedArgs = {} }) => { //Собственное состояние - график const [chartInfo, setChartInfo] = useState({ loaded: false, reload: false }); + //Собственное состояние - загрузка данных + const [loading, setLoading] = useState(false); + //Подключение к контексту взаимодействия с сервером const { executeStored } = useContext(BackEndСtx); @@ -35,6 +38,7 @@ const useChartInfo = ({ storedArgs = {} }) => { //Загрузка данных графика с сервера const loadChart = async () => { try { + setLoading(true); const chart = await executeStored({ stored: "UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_INFO", args: { @@ -47,6 +51,8 @@ const useChartInfo = ({ storedArgs = {} }) => { setChartInfo(pv => ({ ...pv, loaded: true, reload: false, ...chart.XCHART })); } catch (e) { setChartInfo(pv => ({ ...pv, loaded: false, reload: false })); + } finally { + setLoading(false); } }; //При необходимости перезагрузить @@ -55,7 +61,7 @@ const useChartInfo = ({ storedArgs = {} }) => { }, [chartInfo.reload, executeStored]); //Возвращаем график - return { chartInfo, handleReload }; + return { chartInfo, handleReload, loading }; }; //Хук графика КГТ/КОА diff --git a/hauler_anl/index.js b/panels/hauler_anl/index.js similarity index 100% rename from hauler_anl/index.js rename to panels/hauler_anl/index.js diff --git a/hauler_anl/layouts.js b/panels/hauler_anl/layouts.js similarity index 100% rename from hauler_anl/layouts.js rename to panels/hauler_anl/layouts.js diff --git a/repair_anl_atc/chart_filter.js b/panels/repair_anl_atc/chart_filter.js similarity index 100% rename from repair_anl_atc/chart_filter.js rename to panels/repair_anl_atc/chart_filter.js diff --git a/repair_anl_atc/filter.js b/panels/repair_anl_atc/filter.js similarity index 100% rename from repair_anl_atc/filter.js rename to panels/repair_anl_atc/filter.js diff --git a/repair_anl_atc/filter_dialog.js b/panels/repair_anl_atc/filter_dialog.js similarity index 100% rename from repair_anl_atc/filter_dialog.js rename to panels/repair_anl_atc/filter_dialog.js diff --git a/repair_anl_atc/hooks/dict_hooks.js b/panels/repair_anl_atc/hooks/dict_hooks.js similarity index 100% rename from repair_anl_atc/hooks/dict_hooks.js rename to panels/repair_anl_atc/hooks/dict_hooks.js diff --git a/repair_anl_atc/hooks/filter_hooks.js b/panels/repair_anl_atc/hooks/filter_hooks.js similarity index 100% rename from repair_anl_atc/hooks/filter_hooks.js rename to panels/repair_anl_atc/hooks/filter_hooks.js diff --git a/repair_anl_atc/hooks/hooks.js b/panels/repair_anl_atc/hooks/hooks.js similarity index 100% rename from repair_anl_atc/hooks/hooks.js rename to panels/repair_anl_atc/hooks/hooks.js diff --git a/repair_anl_atc/index.js b/panels/repair_anl_atc/index.js similarity index 100% rename from repair_anl_atc/index.js rename to panels/repair_anl_atc/index.js diff --git a/repair_anl_atc/layouts.js b/panels/repair_anl_atc/layouts.js similarity index 100% rename from repair_anl_atc/layouts.js rename to panels/repair_anl_atc/layouts.js diff --git a/repair_anl_atc/repair_anl_atc.js b/panels/repair_anl_atc/repair_anl_atc.js similarity index 100% rename from repair_anl_atc/repair_anl_atc.js rename to panels/repair_anl_atc/repair_anl_atc.js