1530 lines
95 KiB
Plaintext
1530 lines
95 KiB
Plaintext
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;
|
||
/
|