P8PanelsCEMROS/db/UDO_PKG_P8PANELS_HAULER_ANL.pck

1530 lines
95 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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

create or replace package UDO_PKG_P8PANELS_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;
/