forked from CITKParus/P8-Panels
ЦИТК-835, ЦИТК-842 - Производственная программа - рефакторинг, ограничение уровней отображения программы
This commit is contained in:
commit
852a083a3b
@ -79,6 +79,23 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
NFCPRODPLAN_CATEGORY constant PKG_STD.TNUMBER := 1; -- Категория планов "Производственная программа"
|
||||
NFCPRODPLAN_STATUS constant PKG_STD.TNUMBER := 2; -- Статус планов "Утвержден"
|
||||
SFCPRODPLAN_TYPE constant PKG_STD.TSTRING := 'План'; -- Тип планов (мнемокод состояния)
|
||||
NMAX_TASKS constant PKG_STD.TNUMBER := 10000; -- Максимальное количество отображаемых задач
|
||||
|
||||
/* Константы - классы задач плана ("Производственная программа") */
|
||||
NCLASS_WO_DEFICIT constant PKG_STD.TNUMBER := 0; -- Без дефицита выпуска
|
||||
NCLASS_PART_DEFICIT constant PKG_STD.TNUMBER := 1; -- С частичным дефицитом выпуска
|
||||
NCLASS_FULL_DEFICIT constant PKG_STD.TNUMBER := 2; -- С полным дефицитом выпуска
|
||||
NCLASS_WITH_DEFICIT constant PKG_STD.TNUMBER := 3; -- С дефицитом запуска или датой меньше текущей
|
||||
NCLASS_FUTURE_DATE constant PKG_STD.TNUMBER := 4; -- Дата анализа еще не наступила
|
||||
NCLASS_WO_LINKS constant PKG_STD.TNUMBER := 5; -- Задача без связи
|
||||
|
||||
/* Константы - типы задач плана, содержание детализации ("Производственная программа") */
|
||||
NTASK_TYPE_RL_WITH_GP constant PKG_STD.TNUMBER := 0; -- Маршрутные листы с развертыванием товарных запасов
|
||||
NTASK_TYPE_RL_WITH_DL constant PKG_STD.TNUMBER := 1; -- Маршрутные листы с развертыванием комплектаций
|
||||
NTASK_TYPE_INC_DEPS constant PKG_STD.TNUMBER := 2; -- Приход из подразделений
|
||||
NTASK_TYPE_INC_DEPS_RL constant PKG_STD.TNUMBER := 3; -- Приход из подразделений и маршрутные листы
|
||||
NTASK_TYPE_RL constant PKG_STD.TNUMBER := 4; -- Маршрутные листы
|
||||
NTASK_TYPE_EMPTY constant PKG_STD.TNUMBER := null; -- Нет детализации
|
||||
|
||||
/* Константы - дополнительные атрибуты */
|
||||
STASK_ATTR_START_FACT constant PKG_STD.TSTRING := 'start_fact'; -- Запущено
|
||||
@ -272,7 +289,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||
BVISIBLE => true);
|
||||
/* Если тип = 3, то необходимо включать состояние */
|
||||
if (NTYPE = 3) then
|
||||
if (NTYPE = NTASK_TYPE_INC_DEPS_RL) then
|
||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'SDOC_STATE',
|
||||
SCAPTION => 'Состояние',
|
||||
@ -403,7 +420,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
ICURSOR => ICURSOR,
|
||||
NPOSITION => 2);
|
||||
/* Если тип = 3, то необходимо включать состояние */
|
||||
if (NTYPE = 3) then
|
||||
if (NTYPE = NTASK_TYPE_INC_DEPS_RL) then
|
||||
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW,
|
||||
SNAME => 'SDOC_STATE',
|
||||
ICURSOR => ICURSOR,
|
||||
@ -1329,7 +1346,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.DREL_DATE,');
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.NREL_QUANT,');
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.NQUANT_FACT,');
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when (P.NT_SHT_PLAN <> 0) then P.NLABOUR_FACT / P.NT_SHT_PLAN * 100 else 0 end NPROCENT');
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' case when (P.NT_SHT_PLAN <> 0) then ROUND(P.NLABOUR_FACT / P.NT_SHT_PLAN * 100, 3) else 0 end NPROCENT');
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select T.RN NRN,');
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.DOCPREF SDOCPREF,');
|
||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.DOCNUMB SDOCNUMB,');
|
||||
@ -1454,7 +1471,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
procedure FCROUTLST_DG_GET
|
||||
(
|
||||
NFCPRODPLANSP in number, -- Рег. номер связанной спецификации плана
|
||||
NTYPE in number, -- Тип спецификации плана (0 - Деталь, 1 - Изделие/сборочная единица, 3/4 - ПиП)
|
||||
NTYPE in number, -- Тип спецификации плана (см. константы NTASK_TYPE_*)
|
||||
NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
|
||||
NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
|
||||
CORDERS in clob, -- Сортировки
|
||||
@ -1466,7 +1483,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
/* Выбираем сборку таблицы, исходя из типа спецификации плана */
|
||||
case
|
||||
/* Деталь */
|
||||
when (NTYPE = 0) then
|
||||
when (NTYPE = NTASK_TYPE_RL_WITH_GP) then
|
||||
/* Получаем таблицу по детали */
|
||||
FCROUTLST_DG_BY_DTL(NFCPRODPLANSP => NFCPRODPLANSP,
|
||||
NPAGE_NUMBER => NPAGE_NUMBER,
|
||||
@ -1475,7 +1492,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
NINCLUDE_DEF => NINCLUDE_DEF,
|
||||
COUT => COUT);
|
||||
/* Изделие/сборочная единица */
|
||||
when (NTYPE = 1) then
|
||||
when (NTYPE = NTASK_TYPE_RL_WITH_DL) then
|
||||
/* Получаем таблицу по изделию */
|
||||
FCROUTLST_DG_BY_PRDCT(NFCPRODPLANSP => NFCPRODPLANSP,
|
||||
NPAGE_NUMBER => NPAGE_NUMBER,
|
||||
@ -1484,7 +1501,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
NINCLUDE_DEF => NINCLUDE_DEF,
|
||||
COUT => COUT);
|
||||
/* Для приходов из подразделений */
|
||||
when ((NTYPE = 3) or (NTYPE = 4)) then
|
||||
when ((NTYPE = NTASK_TYPE_INC_DEPS_RL) or (NTYPE = NTASK_TYPE_RL)) then
|
||||
/* Получаем таблицу по приходу */
|
||||
FCROUTLST_DG_BY_DEPS(NFCPRODPLANSP => NFCPRODPLANSP,
|
||||
NPAGE_NUMBER => NPAGE_NUMBER,
|
||||
@ -1498,62 +1515,52 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
end case;
|
||||
end FCROUTLST_DG_GET;
|
||||
|
||||
/* Формирование характеристик спецификации в Ганте */
|
||||
procedure MAKE_GANT_ITEM
|
||||
/* Получение списка спецификаций планов и отчетов производства изделий для диаграммы Ганта */
|
||||
procedure FCPRODPLANSP_GET
|
||||
(
|
||||
NDEFRESLIZ in number, -- Дефицит запуска
|
||||
NREL_FACT in number, -- Выпуск факт
|
||||
NDEFSTART in number, -- Дефицит выпуска
|
||||
NMAIN_QUANT in number, -- Выпуск
|
||||
STASK_BG_COLOR out varchar2, -- Цвет заливки спецификации
|
||||
STASK_BG_PROGRESS_COLOR out varchar2, -- Цвет заливки прогресса спецификации
|
||||
STASK_TEXT_COLOR in out varchar2, -- Цвет текста
|
||||
NTASK_PROGRESS out number -- Прогресс спецификации
|
||||
NCRN in number, -- Рег. номер каталога
|
||||
NLEVEL in number := null, -- Уровень отбора
|
||||
SSORT_FIELD in varchar2 := 'DREP_DATE_TO', -- Поле сортировки
|
||||
COUT out clob, -- Список задач
|
||||
NMAX_LEVEL out number -- Максимальный уровень иерархии
|
||||
)
|
||||
is
|
||||
/* Переменные */
|
||||
RG PKG_P8PANELS_VISUAL.TGANTT; -- Описание диаграммы Ганта
|
||||
RGT PKG_P8PANELS_VISUAL.TGANTT_TASK; -- Описание задачи для диаграммы
|
||||
BREAD_ONLY_DATES boolean := false; -- Флаг доступности дат проекта только для чтения
|
||||
STASK_BG_COLOR PKG_STD.TSTRING; -- Цвет заливки задачи
|
||||
STASK_TEXT_COLOR PKG_STD.TSTRING; -- Цвет текста задачи
|
||||
STASK_BG_PROGRESS_COLOR PKG_STD.TSTRING; -- Цвет заливки прогресса задачи
|
||||
NTASK_PROGRESS PKG_STD.TNUMBER; -- Прогресс выполнения задачи
|
||||
DDATE_FROM PKG_STD.TLDATE; -- Дата запуска спецификации
|
||||
DDATE_TO PKG_STD.TLDATE; -- Дата выпуска спецификации
|
||||
STASK_CAPTION PKG_STD.TSTRING; -- Описание задачи в Ганте
|
||||
NTYPE PKG_STD.TNUMBER; -- Тип задачи (см. константы NTASK_TYPE_*)
|
||||
SDETAIL_LIST PKG_STD.TSTRING; -- Ссылки на детализацию
|
||||
SPLAN_TITLE PKG_STD.TSTRING; -- Заголовок плана
|
||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
||||
NTASK_CLASS PKG_STD.TNUMBER; -- Класс задачи (см. константы NCLASS_*)
|
||||
NLEVEL_FILTER PKG_STD.TNUMBER; -- Уровень для фильтра
|
||||
|
||||
/* Объединение значений в строковое представление */
|
||||
function MAKE_INFO
|
||||
(
|
||||
SPROD_ORDER in varchar2, -- Заказ
|
||||
SNOMEN_NAME in varchar2, -- Наименование номенклатуры
|
||||
SSUBDIV_DLVR in varchar2, -- Сдающее подразделение
|
||||
NMAIN_QUANT in number -- Выпуск
|
||||
) return varchar2 -- Описание задачи в Ганте
|
||||
is
|
||||
SRESULT PKG_STD.TSTRING; -- Описание задачи в Ганте
|
||||
begin
|
||||
/* Если дефицит запуска <> 0 */
|
||||
if (NDEFRESLIZ <> 0) then
|
||||
/* Если дефицит выпуска = 0 */
|
||||
if (NDEFSTART = 0) then
|
||||
/* Полностью зеленый */
|
||||
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
||||
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
NTASK_PROGRESS := null;
|
||||
else
|
||||
/* Полностью красный */
|
||||
STASK_BG_COLOR := SBG_COLOR_RED;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
NTASK_PROGRESS := null;
|
||||
end if;
|
||||
else
|
||||
/* Если дефицит выпуска = 0 */
|
||||
if (NDEFSTART = 0) then
|
||||
/* Полностью зеленый */
|
||||
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
||||
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
NTASK_PROGRESS := null;
|
||||
else
|
||||
/* Если дефицит запуска = 0 и выпуск факт = 0 */
|
||||
if ((NDEFRESLIZ = 0) and (NREL_FACT = 0)) then
|
||||
/* Полностью жёлтый */
|
||||
STASK_BG_COLOR := SBG_COLOR_YELLOW;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
NTASK_PROGRESS := null;
|
||||
end if;
|
||||
/* Если дефицит запуска = 0 и выпуск факт <> 0 */
|
||||
if ((NDEFRESLIZ = 0) and (NREL_FACT <> 0)) then
|
||||
/* Частично зелёный, прогресс жёлтый */
|
||||
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
||||
STASK_BG_PROGRESS_COLOR := SBG_COLOR_YELLOW;
|
||||
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
||||
NTASK_PROGRESS := ROUND(NREL_FACT / NMAIN_QUANT * 100);
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end MAKE_GANT_ITEM;
|
||||
/* Соединяем информацию */
|
||||
SRESULT := STRCOMBINE(SPROD_ORDER, SNOMEN_NAME, ', ');
|
||||
SRESULT := STRCOMBINE(SRESULT, SSUBDIV_DLVR, ', ');
|
||||
SRESULT := STRCOMBINE(SRESULT, TO_CHAR(NMAIN_QUANT), ', ');
|
||||
/* Возвращаем результат */
|
||||
return SRESULT;
|
||||
end MAKE_INFO;
|
||||
|
||||
/* Считывание максимального уровня иерархии плана по каталогу */
|
||||
function PRODPLAN_MAX_LEVEL_GET
|
||||
@ -1561,12 +1568,12 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
NCRN in number -- Рег. номер каталога планов
|
||||
) return number -- Максимальный уровень иерархии
|
||||
is
|
||||
NRESULT PKG_STD.TNUMBER; -- Максимальный уровень иерархии
|
||||
NRESULT PKG_STD.TNUMBER := 1; -- Максимальный уровень иерархии
|
||||
NTOTAL PKG_STD.TNUMBER := 0; -- Сумма документов по проверяемому уровню
|
||||
begin
|
||||
/* Считываем максимальный уровень */
|
||||
begin
|
||||
select max(level)
|
||||
into NRESULT
|
||||
/* Цикл по уровням каталога планов */
|
||||
for REC in (select level,
|
||||
count(TMP.RN) COUNT_DOCS
|
||||
from (select T.RN,
|
||||
T.UP_LEVEL
|
||||
from FCPRODPLAN P,
|
||||
@ -1596,11 +1603,20 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
and T.PRN = P.RN
|
||||
and T.MAIN_QUANT > 0) TMP
|
||||
connect by prior TMP.RN = TMP.UP_LEVEL
|
||||
start with TMP.UP_LEVEL is null;
|
||||
exception
|
||||
when others then
|
||||
NRESULT := null;
|
||||
end;
|
||||
start with TMP.UP_LEVEL is null
|
||||
group by level
|
||||
order by level)
|
||||
loop
|
||||
/* Получаем количество задач с учетом текущего уровня */
|
||||
NTOTAL := NTOTAL + REC.COUNT_DOCS;
|
||||
/* Если сумма документов по текущему уровню превышает максимальное количество задач */
|
||||
if (NTOTAL >= NMAX_TASKS) then
|
||||
/* Выходим из цикла */
|
||||
exit;
|
||||
end if;
|
||||
/* Указываем текущий уровень */
|
||||
NRESULT := REC.LEVEL;
|
||||
end loop;
|
||||
/* Возвращаем результат */
|
||||
return NRESULT;
|
||||
end PRODPLAN_MAX_LEVEL_GET;
|
||||
@ -1611,21 +1627,11 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
DREP_DATE in date, -- Дата запуска спецификации
|
||||
DREP_DATE_TO in date, -- Дата выпуска спецификации
|
||||
DINCL_DATE in date, -- Дата включения в план спецификации
|
||||
NHAVE_LINK in number := 0, -- Наличие связей с "Маршрутный лист" или "Приход из подразделения"
|
||||
DDATE_FROM out date, -- Итоговая дата запуска спецификации
|
||||
DDATE_TO out date, -- Итоговая дата выпуска спецификации
|
||||
STASK_BG_COLOR out varchar2, -- Цвет элемента
|
||||
STASK_BG_PROGRESS_COLOR out varchar2, -- Цвет прогресса элемента
|
||||
STASK_TEXT_COLOR out varchar2, -- Цвет текста элемента
|
||||
NTASK_PROGRESS out number -- Прогресс элемента
|
||||
DDATE_TO out date -- Итоговая дата выпуска спецификации
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Проициниализируем цвет и прогресс */
|
||||
STASK_BG_COLOR := null;
|
||||
STASK_TEXT_COLOR := null;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
NTASK_PROGRESS := null;
|
||||
/* Если даты запуска и выпуска пусты */
|
||||
if ((DREP_DATE is null) and (DREP_DATE_TO is null)) then
|
||||
/* Указываем дату включения в план */
|
||||
@ -1636,84 +1642,12 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
DDATE_FROM := COALESCE(DREP_DATE, DREP_DATE_TO);
|
||||
DDATE_TO := COALESCE(DREP_DATE_TO, DREP_DATE);
|
||||
end if;
|
||||
/* Если одна из дат не указана */
|
||||
if ((DREP_DATE is null) or (DREP_DATE_TO is null)) then
|
||||
/* Если спецификация также не имеет связей */
|
||||
if (NHAVE_LINK = 0) then
|
||||
/* Закрашиваем в черный */
|
||||
STASK_BG_COLOR := SBG_COLOR_BLACK;
|
||||
STASK_TEXT_COLOR := STEXT_COLOR_ORANGE;
|
||||
NTASK_PROGRESS := null;
|
||||
end if;
|
||||
end if;
|
||||
/* Если нет связанных документов */
|
||||
if (NHAVE_LINK = 0) then
|
||||
/* Если дата запуска меньше текущей даты */
|
||||
if (DREP_DATE <= sysdate) then
|
||||
/* Закрашиваем в красный */
|
||||
STASK_BG_COLOR := SBG_COLOR_RED;
|
||||
STASK_TEXT_COLOR := null;
|
||||
NTASK_PROGRESS := null;
|
||||
end if;
|
||||
/* Если дата больше текущей даты */
|
||||
if (DREP_DATE > sysdate) then
|
||||
/* Закрашиваем в серый */
|
||||
STASK_BG_COLOR := SBG_COLOR_GREY;
|
||||
STASK_TEXT_COLOR := null;
|
||||
NTASK_PROGRESS := null;
|
||||
end if;
|
||||
end if;
|
||||
end FCPRODPLANSP_DATES_GET;
|
||||
|
||||
/* Получение списка спецификаций планов и отчетов производства изделий для диаграммы Ганта */
|
||||
procedure FCPRODPLANSP_GET
|
||||
(
|
||||
NCRN in number, -- Рег. номер каталога
|
||||
NLEVEL in number := null, -- Уровень отбора
|
||||
SSORT_FIELD in varchar2 := 'DREP_DATE_TO', -- Поле сортировки
|
||||
COUT out clob, -- Список задач
|
||||
NMAX_LEVEL out number -- Максимальный уровень иерархии
|
||||
)
|
||||
is
|
||||
/* Переменные */
|
||||
RG PKG_P8PANELS_VISUAL.TGANTT; -- Описание диаграммы Ганта
|
||||
RGT PKG_P8PANELS_VISUAL.TGANTT_TASK; -- Описание задачи для диаграммы
|
||||
BREAD_ONLY_DATES boolean := false; -- Флаг доступности дат проекта только для чтения
|
||||
STASK_BG_COLOR PKG_STD.TSTRING; -- Цвет заливки задачи
|
||||
STASK_TEXT_COLOR PKG_STD.TSTRING; -- Цвет текста задачи
|
||||
STASK_BG_PROGRESS_COLOR PKG_STD.TSTRING; -- Цвет заливки прогресса задачи
|
||||
NTASK_PROGRESS PKG_STD.TNUMBER; -- Прогресс выполнения задачи
|
||||
DDATE_FROM PKG_STD.TLDATE; -- Дата запуска спецификации
|
||||
DDATE_TO PKG_STD.TLDATE; -- Дата выпуска спецификации
|
||||
STASK_CAPTION PKG_STD.TSTRING; -- Описание задачи в Ганте
|
||||
NTYPE PKG_STD.TNUMBER; -- Тип задачи (0/1 - для "Дата выпуска", 2/3/4 - для "Дата выпуска")
|
||||
SDETAIL_LIST PKG_STD.TSTRING; -- Ссылки на детализацию
|
||||
SPLAN_TITLE PKG_STD.TSTRING; -- Заголовок плана
|
||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
|
||||
|
||||
/* Объединение значений в строковое представление */
|
||||
function MAKE_INFO
|
||||
(
|
||||
SPROD_ORDER in varchar2, -- Заказ
|
||||
SNOMEN_NAME in varchar2, -- Наименование номенклатуры
|
||||
SSUBDIV_DLVR in varchar2, -- Сдающее подразделение
|
||||
NMAIN_QUANT in number -- Выпуск
|
||||
) return varchar2 -- Описание задачи в Ганте
|
||||
is
|
||||
SRESULT PKG_STD.TSTRING; -- Описание задачи в Ганте
|
||||
begin
|
||||
/* Соединяем информацию */
|
||||
SRESULT := STRCOMBINE(SPROD_ORDER, SNOMEN_NAME, ', ');
|
||||
SRESULT := STRCOMBINE(SRESULT, SSUBDIV_DLVR, ', ');
|
||||
SRESULT := STRCOMBINE(SRESULT, TO_CHAR(NMAIN_QUANT), ', ');
|
||||
/* Возвращаем результат */
|
||||
return SRESULT;
|
||||
end MAKE_INFO;
|
||||
|
||||
/* Инициализация динамических атрибутов */
|
||||
procedure TASK_ATTRS_INIT
|
||||
(
|
||||
RG in out PKG_P8PANELS_VISUAL.TGANTT -- Описание диаграммы Ганта
|
||||
RG in out nocopy PKG_P8PANELS_VISUAL.TGANTT -- Описание диаграммы Ганта
|
||||
)
|
||||
is
|
||||
begin
|
||||
@ -1739,41 +1673,8 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
SCAPTION => 'Единица измерения');
|
||||
end TASK_ATTRS_INIT;
|
||||
|
||||
/* Инициализация цветов */
|
||||
procedure TASK_COLORS_INIT
|
||||
(
|
||||
RG in out PKG_P8PANELS_VISUAL.TGANTT -- Описание диаграммы Ганта
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Добавим описание цветов */
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_RED,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит запуска» != 0 или ' ||
|
||||
'не имеющих связей с разделами «Маршрутный лист» или «Приход из подразделения», а также «Дата запуска» меньше текущей.');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_YELLOW,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит запуска» = 0 и «Выпуск факт» = 0.');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_GREEN,
|
||||
STEXT_COLOR => STEXT_COLOR_GREY,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит выпуска» = 0.');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_GREEN,
|
||||
SBG_PROGRESS_COLOR => SBG_COLOR_YELLOW,
|
||||
STEXT_COLOR => STEXT_COLOR_GREY,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит запуска» = 0 и «Выпуск факт» != 0. ');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_BLACK,
|
||||
STEXT_COLOR => STEXT_COLOR_ORANGE,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с пустыми «Дата запуска» и «Дата выпуска» и не имеющих связей с разделами «Маршрутный лист» или «Приход из подразделения».');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_GREY,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий не имеющих связей с разделами «Маршрутный лист» или «Приход из подразделения», а также «Дата запуска» больше текущей.');
|
||||
end TASK_COLORS_INIT;
|
||||
|
||||
/* Заполнение значений динамических атрибутов */
|
||||
procedure FILL_TASK_ATTRS
|
||||
procedure TASK_ATTRS_FILL
|
||||
(
|
||||
RG in PKG_P8PANELS_VISUAL.TGANTT, -- Описание диаграммы Ганта
|
||||
RGT in out nocopy PKG_P8PANELS_VISUAL.TGANTT_TASK, -- Описание задачи для диаграммы
|
||||
@ -1781,7 +1682,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
NMAIN_QUANT in number, -- Выпуск
|
||||
NREL_FACT in number, -- Выпуск факт
|
||||
DREP_DATE_TO in date, -- Дата выпуска
|
||||
NTYPE in number, -- Тип (0 - Деталь, 1 - Изделие/сборочная единица)
|
||||
NTYPE in number, -- Тип (см. константы NTASK_TYPE_*)
|
||||
SDETAIL_LIST in varchar2, -- Ссылки на детализацию
|
||||
SMEAS in varchar2 -- Единица измерения
|
||||
)
|
||||
@ -1817,7 +1718,102 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
RTASK => RGT,
|
||||
SNAME => STASK_ATTR_MEAS,
|
||||
SVALUE => SMEAS);
|
||||
end FILL_TASK_ATTRS;
|
||||
end TASK_ATTRS_FILL;
|
||||
|
||||
/* Инициализация цветов */
|
||||
procedure TASK_COLORS_INIT
|
||||
(
|
||||
RG in out nocopy PKG_P8PANELS_VISUAL.TGANTT -- Описание диаграммы Ганта
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Добавим описание цветов */
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_RED,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит запуска» != 0 или ' ||
|
||||
'не имеющих связей с разделами «Маршрутный лист» или «Приход из подразделения», а также «Дата запуска» меньше текущей.');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_YELLOW,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит запуска» = 0 и «Выпуск факт» = 0.');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_GREEN,
|
||||
STEXT_COLOR => STEXT_COLOR_GREY,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит выпуска» = 0.');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_GREEN,
|
||||
SBG_PROGRESS_COLOR => SBG_COLOR_YELLOW,
|
||||
STEXT_COLOR => STEXT_COLOR_GREY,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с «Дефицит запуска» = 0 и «Выпуск факт» != 0. ');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_BLACK,
|
||||
STEXT_COLOR => STEXT_COLOR_ORANGE,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий с пустыми «Дата запуска» и «Дата выпуска» и не имеющих связей с разделами «Маршрутный лист» или «Приход из подразделения».');
|
||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK_COLOR(RGANTT => RG,
|
||||
SBG_COLOR => SBG_COLOR_GREY,
|
||||
SDESC => 'Для спецификаций планов и отчетов производства изделий не имеющих связей с разделами «Маршрутный лист» или «Приход из подразделения», а также «Дата запуска» больше текущей.');
|
||||
end TASK_COLORS_INIT;
|
||||
|
||||
/* Опеределение класса задачи */
|
||||
function GET_TASK_CLASS
|
||||
(
|
||||
NDEFRESLIZ in number, -- Дефицит запуска
|
||||
NREL_FACT in number, -- Выпуск факт
|
||||
NDEFSTART in number, -- Дефицит выпуска
|
||||
DREP_DATE in date, -- Дата запуска спецификации
|
||||
DREP_DATE_TO in date, -- Дата выпуска спецификации
|
||||
NHAVE_LINK in number := 0 -- Наличие связей с "Маршрутный лист" или "Приход из подразделения"
|
||||
) return number -- Класс задачи
|
||||
is
|
||||
NTASK_CLASS PKG_STD.TNUMBER; -- Класс задачи (см. константы NCLASS*)
|
||||
begin
|
||||
/* Если одна из дат не указана */
|
||||
if ((DREP_DATE is null) or (DREP_DATE_TO is null)) then
|
||||
/* Если спецификация также не имеет связей */
|
||||
if (NHAVE_LINK = 0) then
|
||||
NTASK_CLASS := NCLASS_WO_LINKS;
|
||||
end if;
|
||||
else
|
||||
/* Если нет связанных документов */
|
||||
if (NHAVE_LINK = 0) then
|
||||
/* Если дата запуска меньше текущей даты */
|
||||
if (DREP_DATE <= sysdate) then
|
||||
NTASK_CLASS := NCLASS_WITH_DEFICIT;
|
||||
end if;
|
||||
/* Если дата больше текущей даты */
|
||||
if (DREP_DATE > sysdate) then
|
||||
NTASK_CLASS := NCLASS_FUTURE_DATE;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
/* Если класс не определен */
|
||||
if (NTASK_CLASS is null) then
|
||||
/* Если дефицит запуска <> 0 */
|
||||
if (NDEFRESLIZ <> 0) then
|
||||
/* Если дефицит выпуска = 0 */
|
||||
if (NDEFSTART = 0) then
|
||||
NTASK_CLASS := NCLASS_WO_DEFICIT;
|
||||
else
|
||||
NTASK_CLASS := NCLASS_WITH_DEFICIT;
|
||||
end if;
|
||||
else
|
||||
/* Если дефицит выпуска = 0 */
|
||||
if (NDEFSTART = 0) then
|
||||
NTASK_CLASS := NCLASS_WO_DEFICIT;
|
||||
else
|
||||
/* Если дефицит запуска = 0 и выпуск факт = 0 */
|
||||
if ((NDEFRESLIZ = 0) and (NREL_FACT = 0)) then
|
||||
NTASK_CLASS := NCLASS_FULL_DEFICIT;
|
||||
end if;
|
||||
/* Если дефицит запуска = 0 и выпуск факт <> 0 */
|
||||
if ((NDEFRESLIZ = 0) and (NREL_FACT <> 0)) then
|
||||
NTASK_CLASS := NCLASS_PART_DEFICIT;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
/* Возвращаем результат */
|
||||
return NTASK_CLASS;
|
||||
end GET_TASK_CLASS;
|
||||
|
||||
/* Получение типа задачи */
|
||||
procedure GET_TASK_TYPE
|
||||
@ -1826,29 +1822,19 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
SSORT_FIELD in varchar2, -- Тип сортировки
|
||||
NFCPRODPLAN in number, -- Рег. номер плана
|
||||
NFCPRODPLANSP in number, -- Рег. номер спецификации плана
|
||||
STASK_BG_COLOR in varchar2, -- Цвет заливки задачи
|
||||
STASK_BG_PROGRESS_COLOR in varchar2, -- Цвет заливки прогресса
|
||||
NTYPE out number, -- Тип задачи (0/1 - для "Дата выпуска", 2/3/4 - для "Дата выпуска")
|
||||
NTASK_CLASS in number, -- Класс задачи (см. константы NCLASS_*)
|
||||
NTYPE out number, -- Тип задачи (см. константы NTASK_TYPE_*)
|
||||
SDETAIL_LIST out varchar2 -- Ссылки на детализацию
|
||||
)
|
||||
is
|
||||
begin
|
||||
/*
|
||||
Описание типов:
|
||||
0 - Маршрутные листы с развертыванием товарных запасов
|
||||
1 - Маршрутные листы с развертыванием комплектаций
|
||||
2 - Приход из подразделений
|
||||
3 - Приход из подразделений и маршрутные листы
|
||||
4 - Маршрутные листы
|
||||
null - Нет детализации
|
||||
*/
|
||||
/* Исходим сортировка по "Дата запуска" */
|
||||
if (SSORT_FIELD = 'DREP_DATE') then
|
||||
/* Если цвет - красный */
|
||||
if (STASK_BG_COLOR = SBG_COLOR_RED) then
|
||||
/* Если класс "С дефицитом запуска или датой меньше текущей" */
|
||||
if (NTASK_CLASS = NCLASS_WITH_DEFICIT) then
|
||||
/* Проверяем деталь или изделие */
|
||||
begin
|
||||
select 1
|
||||
select NTASK_TYPE_RL_WITH_DL
|
||||
into NTYPE
|
||||
from DUAL
|
||||
where exists (select null
|
||||
@ -1857,72 +1843,119 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
and SP.UP_LEVEL = NFCPRODPLANSP);
|
||||
exception
|
||||
when others then
|
||||
NTYPE := 0;
|
||||
NTYPE := NTASK_TYPE_RL_WITH_GP;
|
||||
end;
|
||||
/* Проверяем наличие связей с маршрутными листами */
|
||||
if (LINK_FCROUTLST_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 0) = 0) then
|
||||
/* Указываем, что маршрутных листов нет */
|
||||
SDETAIL_LIST := 'Нет маршрутных листов';
|
||||
NTYPE := null;
|
||||
NTYPE := NTASK_TYPE_EMPTY;
|
||||
else
|
||||
/* Указываем, что маршрутные листы есть */
|
||||
SDETAIL_LIST := 'Маршрутные листы';
|
||||
end if;
|
||||
else
|
||||
/* Не отображаем информацию о маршрутных листах */
|
||||
NTYPE := null;
|
||||
NTYPE := NTASK_TYPE_EMPTY;
|
||||
SDETAIL_LIST := null;
|
||||
end if;
|
||||
else
|
||||
/* Если цвет зеленый */
|
||||
if (STASK_BG_COLOR = SBG_COLOR_GREEN) then
|
||||
/* Если полностью зеленый */
|
||||
if (STASK_BG_PROGRESS_COLOR is null) then
|
||||
/* Исходим от класса */
|
||||
case
|
||||
/* Если класс "Без дефицита выпуска" */
|
||||
when (NTASK_CLASS = NCLASS_WO_DEFICIT) then
|
||||
/* Проверяем наличией связей с приходов из подразделений */
|
||||
if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 2) = 0) then
|
||||
/* Указываем, что приходов из подразделений нет */
|
||||
SDETAIL_LIST := 'Нет приходов из подразделений';
|
||||
NTYPE := null;
|
||||
NTYPE := NTASK_TYPE_EMPTY;
|
||||
else
|
||||
/* Указываем, что приходы из подразделений есть */
|
||||
SDETAIL_LIST := 'Приход из подразделений';
|
||||
NTYPE := 2;
|
||||
NTYPE := NTASK_TYPE_INC_DEPS;
|
||||
end if;
|
||||
end if;
|
||||
/* Если желтно-зеленый */
|
||||
if (STASK_BG_PROGRESS_COLOR = SBG_COLOR_YELLOW) then
|
||||
/* Если класс "С частичным дефицитом выпуска" */
|
||||
when (NTASK_CLASS = NCLASS_PART_DEFICIT) then
|
||||
/* Проверяем наличией связей с приходов из подразделений */
|
||||
if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP) = 0) then
|
||||
/* Указываем, что приходов из подразделений нет */
|
||||
SDETAIL_LIST := 'Нет приходов из подразделений';
|
||||
NTYPE := null;
|
||||
NTYPE := NTASK_TYPE_EMPTY;
|
||||
else
|
||||
/* Указываем, что приходы из подразделений есть */
|
||||
SDETAIL_LIST := 'Приход из подразделений';
|
||||
NTYPE := 3;
|
||||
NTYPE := NTASK_TYPE_INC_DEPS_RL;
|
||||
end if;
|
||||
end if;
|
||||
else
|
||||
/* Если цвет полностью желтый или красный */
|
||||
if ((STASK_BG_COLOR = SBG_COLOR_YELLOW) or (STASK_BG_COLOR = SBG_COLOR_RED)) then
|
||||
/* Если класс "С дефицитом запуска или датой меньше текущей" или "С полным дефицитом выпуска" */
|
||||
when ((NTASK_CLASS = NCLASS_FULL_DEFICIT) or (NTASK_CLASS = NCLASS_WITH_DEFICIT)) then
|
||||
/* Проверяем наличие связей с маршрутными листами */
|
||||
if (LINK_FCROUTLST_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 1) = 0) then
|
||||
/* Указываем, что маршрутных листов нет */
|
||||
SDETAIL_LIST := 'Нет маршрутных листов';
|
||||
NTYPE := null;
|
||||
NTYPE := NTASK_TYPE_EMPTY;
|
||||
else
|
||||
/* Указываем, что маршрутные листы есть */
|
||||
SDETAIL_LIST := 'Маршрутные листы';
|
||||
NTYPE := 4;
|
||||
NTYPE := NTASK_TYPE_RL;
|
||||
end if;
|
||||
/* Класс не поддерживается */
|
||||
else
|
||||
/* Для данных критериев ничего не выводится */
|
||||
NTYPE := null;
|
||||
/* Для данных классов ничего не выводится */
|
||||
NTYPE := NTASK_TYPE_EMPTY;
|
||||
SDETAIL_LIST := null;
|
||||
end if;
|
||||
end if;
|
||||
end case;
|
||||
end if;
|
||||
end GET_TASK_TYPE;
|
||||
|
||||
/* Формирование цветовых характеристик для задачи */
|
||||
procedure GET_TASK_COLORS
|
||||
(
|
||||
NTASK_CLASS in number, -- Класс задачи (см. константы NCLASS_*)
|
||||
STASK_BG_COLOR out varchar2, -- Цвет заливки спецификации
|
||||
STASK_BG_PROGRESS_COLOR out varchar2, -- Цвет заливки прогресса спецификации
|
||||
STASK_TEXT_COLOR in out varchar2 -- Цвет текста
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Исходим от класса задачи */
|
||||
case NTASK_CLASS
|
||||
/* Без дефицита выпуска */
|
||||
when NCLASS_WO_DEFICIT then
|
||||
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
||||
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
/* С частичным дефицитом выпуска */
|
||||
when NCLASS_PART_DEFICIT then
|
||||
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
||||
STASK_BG_PROGRESS_COLOR := SBG_COLOR_YELLOW;
|
||||
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
||||
/* С полным дефицитом выпуска */
|
||||
when NCLASS_FULL_DEFICIT then
|
||||
STASK_BG_COLOR := SBG_COLOR_YELLOW;
|
||||
STASK_TEXT_COLOR := null;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
/* С дефицитом запуска или датой меньше текущей */
|
||||
when NCLASS_WITH_DEFICIT then
|
||||
STASK_BG_COLOR := SBG_COLOR_RED;
|
||||
STASK_TEXT_COLOR := null;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
/* Дата анализа еще не наступила */
|
||||
when NCLASS_FUTURE_DATE then
|
||||
STASK_BG_COLOR := SBG_COLOR_GREY;
|
||||
STASK_TEXT_COLOR := null;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
/* Задача без связи */
|
||||
when NCLASS_WO_LINKS then
|
||||
STASK_BG_COLOR := SBG_COLOR_BLACK;
|
||||
STASK_TEXT_COLOR := STEXT_COLOR_ORANGE;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
else
|
||||
/* Не определено */
|
||||
STASK_BG_COLOR := null;
|
||||
STASK_TEXT_COLOR := null;
|
||||
STASK_BG_PROGRESS_COLOR := null;
|
||||
end case;
|
||||
end GET_TASK_COLORS;
|
||||
begin
|
||||
/* Определяем заголовок плана */
|
||||
FIND_ACATALOG_RN(NFLAG_SMART => 0,
|
||||
@ -1942,6 +1975,8 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
TASK_COLORS_INIT(RG => RG);
|
||||
/* Определяем максимальный уровень иерархии */
|
||||
NMAX_LEVEL := PRODPLAN_MAX_LEVEL_GET(NCRN => NCRN);
|
||||
/* Определяем уровень фильтра */
|
||||
NLEVEL_FILTER := COALESCE(NLEVEL, NMAX_LEVEL);
|
||||
/* Обходим данные */
|
||||
for C in (select TMP.*,
|
||||
level NTASK_LEVEL
|
||||
@ -2010,7 +2045,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
and FM.RN = T.MATRES
|
||||
and D.RN = FM.NOMENCLATURE
|
||||
and D.UMEAS_MAIN = DM.RN) TMP
|
||||
where ((NLEVEL is null) or ((NLEVEL is not null) and (level <= NLEVEL)))
|
||||
where level <= NLEVEL_FILTER
|
||||
connect by prior TMP.NRN = TMP.NUP_LEVEL
|
||||
start with TMP.NUP_LEVEL is null
|
||||
order siblings by TMP.DORDER_DATE asc)
|
||||
@ -2020,28 +2055,31 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
SNOMEN_NAME => C.SNOMEN_NAME,
|
||||
SSUBDIV_DLVR => C.SSUBDIV_DLVR,
|
||||
NMAIN_QUANT => C.NMAIN_QUANT);
|
||||
/* Определяем класс задачи */
|
||||
NTASK_CLASS := GET_TASK_CLASS(NDEFRESLIZ => C.NDEFRESLIZ,
|
||||
NREL_FACT => C.NREL_FACT,
|
||||
NDEFSTART => C.NDEFSTART,
|
||||
DREP_DATE => C.DREP_DATE,
|
||||
DREP_DATE_TO => C.DREP_DATE_TO,
|
||||
NHAVE_LINK => COALESCE(C.NHAVE_LINK, 0));
|
||||
/* Инициализируем даты и цвет (если необходимо) */
|
||||
FCPRODPLANSP_DATES_GET(DREP_DATE => C.DREP_DATE,
|
||||
DREP_DATE_TO => C.DREP_DATE_TO,
|
||||
DINCL_DATE => C.DINCL_DATE,
|
||||
NHAVE_LINK => COALESCE(C.NHAVE_LINK, 0),
|
||||
DDATE_FROM => DDATE_FROM,
|
||||
DDATE_TO => DDATE_TO,
|
||||
STASK_BG_COLOR => STASK_BG_COLOR,
|
||||
STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
||||
STASK_TEXT_COLOR => STASK_TEXT_COLOR,
|
||||
NTASK_PROGRESS => NTASK_PROGRESS);
|
||||
/* Если цвет изначально не указан и требуется анализирование */
|
||||
if (STASK_BG_COLOR is null) then
|
||||
DDATE_TO => DDATE_TO);
|
||||
/* Формирование характеристик элемента ганта */
|
||||
MAKE_GANT_ITEM(NDEFRESLIZ => C.NDEFRESLIZ,
|
||||
NREL_FACT => C.NREL_FACT,
|
||||
NDEFSTART => C.NDEFSTART,
|
||||
NMAIN_QUANT => C.NMAIN_QUANT,
|
||||
GET_TASK_COLORS(NTASK_CLASS => NTASK_CLASS,
|
||||
STASK_BG_COLOR => STASK_BG_COLOR,
|
||||
STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
||||
STASK_TEXT_COLOR => STASK_TEXT_COLOR,
|
||||
NTASK_PROGRESS => NTASK_PROGRESS);
|
||||
STASK_TEXT_COLOR => STASK_TEXT_COLOR);
|
||||
/* Если класс задачи "С частичным дефицитом выпуска" */
|
||||
if (NTASK_CLASS = NCLASS_PART_DEFICIT) then
|
||||
/* Определяем пропорции прогресса */
|
||||
NTASK_PROGRESS := ROUND(C.NREL_FACT / C.NMAIN_QUANT * 100);
|
||||
else
|
||||
/* Не требуется */
|
||||
NTASK_PROGRESS := null;
|
||||
end if;
|
||||
/* Сформируем основную спецификацию */
|
||||
RGT := PKG_P8PANELS_VISUAL.TGANTT_TASK_MAKE(NRN => C.NRN,
|
||||
@ -2062,12 +2100,11 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
SSORT_FIELD => SSORT_FIELD,
|
||||
NFCPRODPLAN => C.NPRN,
|
||||
NFCPRODPLANSP => C.NRN,
|
||||
STASK_BG_COLOR => STASK_BG_COLOR,
|
||||
STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
||||
NTASK_CLASS => NTASK_CLASS,
|
||||
NTYPE => NTYPE,
|
||||
SDETAIL_LIST => SDETAIL_LIST);
|
||||
/* Заполним значение динамических атрибутов */
|
||||
FILL_TASK_ATTRS(RG => RG,
|
||||
TASK_ATTRS_FILL(RG => RG,
|
||||
RGT => RGT,
|
||||
NSTART_FACT => C.NSTART_FACT,
|
||||
NMAIN_QUANT => C.NMAIN_QUANT,
|
||||
@ -2082,7 +2119,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
where T.PRN = C.NPRN
|
||||
and T.UP_LEVEL = C.NRN
|
||||
and T.MAIN_QUANT > 0
|
||||
and ((NLEVEL is null) or ((NLEVEL is not null) and (NLEVEL >= C.NTASK_LEVEL + 1))))
|
||||
and NLEVEL_FILTER >= C.NTASK_LEVEL + 1)
|
||||
loop
|
||||
/* Добавляем зависимости */
|
||||
PKG_P8PANELS_VISUAL.TGANTT_TASK_ADD_DEPENDENCY(RTASK => RGT, NDEPENDENCY => LINK.RN);
|
||||
|
Loading…
x
Reference in New Issue
Block a user