ЦИТК-835 - Доработка панели "Производственная программа"

This commit is contained in:
Dollerino 2024-05-07 17:37:23 +03:00
parent b533b7ce42
commit 54a9d56096

View File

@ -81,6 +81,22 @@ create or replace package body PKG_P8PANELS_MECHREC as
SFCPRODPLAN_TYPE constant PKG_STD.TSTRING := 'План'; -- Тип планов (мнемокод состояния) SFCPRODPLAN_TYPE constant PKG_STD.TSTRING := 'План'; -- Тип планов (мнемокод состояния)
NMAX_TASKS constant PKG_STD.TNUMBER := 10000; -- Максимальное количество отображаемых задач 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'; -- Запущено STASK_ATTR_START_FACT constant PKG_STD.TSTRING := 'start_fact'; -- Запущено
STASK_ATTR_MAIN_QUANT constant PKG_STD.TSTRING := 'main_quant'; -- Количество план STASK_ATTR_MAIN_QUANT constant PKG_STD.TSTRING := 'main_quant'; -- Количество план
@ -273,7 +289,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BVISIBLE => true); BVISIBLE => true);
/* Если тип = 3, то необходимо включать состояние */ /* Если тип = 3, то необходимо включать состояние */
if (NTYPE = 3) then if (NTYPE = NTASK_TYPE_INC_DEPS_RL) then
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDOC_STATE', SNAME => 'SDOC_STATE',
SCAPTION => 'Состояние', SCAPTION => 'Состояние',
@ -404,7 +420,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
ICURSOR => ICURSOR, ICURSOR => ICURSOR,
NPOSITION => 2); NPOSITION => 2);
/* Если тип = 3, то необходимо включать состояние */ /* Если тип = 3, то необходимо включать состояние */
if (NTYPE = 3) then if (NTYPE = NTASK_TYPE_INC_DEPS_RL) then
PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDOC_STATE', SNAME => 'SDOC_STATE',
ICURSOR => ICURSOR, ICURSOR => ICURSOR,
@ -1455,7 +1471,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
procedure FCROUTLST_DG_GET procedure FCROUTLST_DG_GET
( (
NFCPRODPLANSP in number, -- Рег. номер связанной спецификации плана NFCPRODPLANSP in number, -- Рег. номер связанной спецификации плана
NTYPE in number, -- Тип спецификации плана (0 - Деталь, 1 - Изделие/сборочная единица, 3/4 - ПиП) NTYPE in number, -- Тип спецификации плана (см. константы NTASK_TYPE_*)
NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0) NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
NPAGE_SIZE in number, -- Количество записей на странице (0 - все) NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
CORDERS in clob, -- Сортировки CORDERS in clob, -- Сортировки
@ -1467,7 +1483,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
/* Выбираем сборку таблицы, исходя из типа спецификации плана */ /* Выбираем сборку таблицы, исходя из типа спецификации плана */
case case
/* Деталь */ /* Деталь */
when (NTYPE = 0) then when (NTYPE = NTASK_TYPE_RL_WITH_GP) then
/* Получаем таблицу по детали */ /* Получаем таблицу по детали */
FCROUTLST_DG_BY_DTL(NFCPRODPLANSP => NFCPRODPLANSP, FCROUTLST_DG_BY_DTL(NFCPRODPLANSP => NFCPRODPLANSP,
NPAGE_NUMBER => NPAGE_NUMBER, NPAGE_NUMBER => NPAGE_NUMBER,
@ -1476,7 +1492,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
NINCLUDE_DEF => NINCLUDE_DEF, NINCLUDE_DEF => NINCLUDE_DEF,
COUT => COUT); COUT => COUT);
/* Изделие/сборочная единица */ /* Изделие/сборочная единица */
when (NTYPE = 1) then when (NTYPE = NTASK_TYPE_RL_WITH_DL) then
/* Получаем таблицу по изделию */ /* Получаем таблицу по изделию */
FCROUTLST_DG_BY_PRDCT(NFCPRODPLANSP => NFCPRODPLANSP, FCROUTLST_DG_BY_PRDCT(NFCPRODPLANSP => NFCPRODPLANSP,
NPAGE_NUMBER => NPAGE_NUMBER, NPAGE_NUMBER => NPAGE_NUMBER,
@ -1485,7 +1501,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
NINCLUDE_DEF => NINCLUDE_DEF, NINCLUDE_DEF => NINCLUDE_DEF,
COUT => COUT); 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, FCROUTLST_DG_BY_DEPS(NFCPRODPLANSP => NFCPRODPLANSP,
NPAGE_NUMBER => NPAGE_NUMBER, NPAGE_NUMBER => NPAGE_NUMBER,
@ -1520,11 +1536,11 @@ create or replace package body PKG_P8PANELS_MECHREC as
DDATE_FROM PKG_STD.TLDATE; -- Дата запуска спецификации DDATE_FROM PKG_STD.TLDATE; -- Дата запуска спецификации
DDATE_TO PKG_STD.TLDATE; -- Дата выпуска спецификации DDATE_TO PKG_STD.TLDATE; -- Дата выпуска спецификации
STASK_CAPTION PKG_STD.TSTRING; -- Описание задачи в Ганте STASK_CAPTION PKG_STD.TSTRING; -- Описание задачи в Ганте
NTYPE PKG_STD.TNUMBER; -- Тип задачи (0/1 - для "Дата выпуска", 2/3/4 - для "Дата выпуска") NTYPE PKG_STD.TNUMBER; -- Тип задачи (см. константы NTASK_TYPE_*)
SDETAIL_LIST PKG_STD.TSTRING; -- Ссылки на детализацию SDETAIL_LIST PKG_STD.TSTRING; -- Ссылки на детализацию
SPLAN_TITLE PKG_STD.TSTRING; -- Заголовок плана SPLAN_TITLE PKG_STD.TSTRING; -- Заголовок плана
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
NTASK_CLASS PKG_STD.TNUMBER; -- Класс задачи NTASK_CLASS PKG_STD.TNUMBER; -- Класс задачи (см. константы NCLASS_*)
NLEVEL_FILTER PKG_STD.TNUMBER; -- Уровень для фильтра NLEVEL_FILTER PKG_STD.TNUMBER; -- Уровень для фильтра
/* Объединение значений в строковое представление */ /* Объединение значений в строковое представление */
@ -1666,7 +1682,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
NMAIN_QUANT in number, -- Выпуск NMAIN_QUANT in number, -- Выпуск
NREL_FACT in number, -- Выпуск факт NREL_FACT in number, -- Выпуск факт
DREP_DATE_TO in date, -- Дата выпуска DREP_DATE_TO in date, -- Дата выпуска
NTYPE in number, -- Тип (0 - Деталь, 1 - Изделие/сборочная единица) NTYPE in number, -- Тип (см. константы NTASK_TYPE_*)
SDETAIL_LIST in varchar2, -- Ссылки на детализацию SDETAIL_LIST in varchar2, -- Ссылки на детализацию
SMEAS in varchar2 -- Единица измерения SMEAS in varchar2 -- Единица измерения
) )
@ -1748,33 +1764,24 @@ create or replace package body PKG_P8PANELS_MECHREC as
NHAVE_LINK in number := 0 -- Наличие связей с "Маршрутный лист" или "Приход из подразделения" NHAVE_LINK in number := 0 -- Наличие связей с "Маршрутный лист" или "Приход из подразделения"
) return number -- Класс задачи ) return number -- Класс задачи
is is
NTASK_CLASS PKG_STD.TNUMBER; -- Класс задачи NTASK_CLASS PKG_STD.TNUMBER; -- Класс задачи (см. константы NCLASS*)
begin begin
/*
Описание классов:
0 - Без дефицита выпуска (последующий цвет "Зеленый")
1 - С частичным дефицитом выпуска (последующий цвет "Желто-зелеый")
2 - С полным дефицитом выпуска (последующий цвет "Желтый")
3 - С дефицитом запуска или датой меньше текущей (последующий цвет "Красный")
4 - Дата анализа еще не наступила (последующий цвет "Серый")
5 - Задача без связи (последующий цвет "Черный")
*/
/* Если одна из дат не указана */ /* Если одна из дат не указана */
if ((DREP_DATE is null) or (DREP_DATE_TO is null)) then if ((DREP_DATE is null) or (DREP_DATE_TO is null)) then
/* Если спецификация также не имеет связей */ /* Если спецификация также не имеет связей */
if (NHAVE_LINK = 0) then if (NHAVE_LINK = 0) then
NTASK_CLASS := 5; NTASK_CLASS := NCLASS_WO_LINKS;
end if; end if;
else else
/* Если нет связанных документов */ /* Если нет связанных документов */
if (NHAVE_LINK = 0) then if (NHAVE_LINK = 0) then
/* Если дата запуска меньше текущей даты */ /* Если дата запуска меньше текущей даты */
if (DREP_DATE <= sysdate) then if (DREP_DATE <= sysdate) then
NTASK_CLASS := 3; NTASK_CLASS := NCLASS_WITH_DEFICIT;
end if; end if;
/* Если дата больше текущей даты */ /* Если дата больше текущей даты */
if (DREP_DATE > sysdate) then if (DREP_DATE > sysdate) then
NTASK_CLASS := 4; NTASK_CLASS := NCLASS_FUTURE_DATE;
end if; end if;
end if; end if;
end if; end if;
@ -1784,22 +1791,22 @@ create or replace package body PKG_P8PANELS_MECHREC as
if (NDEFRESLIZ <> 0) then if (NDEFRESLIZ <> 0) then
/* Если дефицит выпуска = 0 */ /* Если дефицит выпуска = 0 */
if (NDEFSTART = 0) then if (NDEFSTART = 0) then
NTASK_CLASS := 0; NTASK_CLASS := NCLASS_WO_DEFICIT;
else else
NTASK_CLASS := 3; NTASK_CLASS := NCLASS_WITH_DEFICIT;
end if; end if;
else else
/* Если дефицит выпуска = 0 */ /* Если дефицит выпуска = 0 */
if (NDEFSTART = 0) then if (NDEFSTART = 0) then
NTASK_CLASS := 0; NTASK_CLASS := NCLASS_WO_DEFICIT;
else else
/* Если дефицит запуска = 0 и выпуск факт = 0 */ /* Если дефицит запуска = 0 и выпуск факт = 0 */
if ((NDEFRESLIZ = 0) and (NREL_FACT = 0)) then if ((NDEFRESLIZ = 0) and (NREL_FACT = 0)) then
NTASK_CLASS := 2; NTASK_CLASS := NCLASS_FULL_DEFICIT;
end if; end if;
/* Если дефицит запуска = 0 и выпуск факт <> 0 */ /* Если дефицит запуска = 0 и выпуск факт <> 0 */
if ((NDEFRESLIZ = 0) and (NREL_FACT <> 0)) then if ((NDEFRESLIZ = 0) and (NREL_FACT <> 0)) then
NTASK_CLASS := 1; NTASK_CLASS := NCLASS_PART_DEFICIT;
end if; end if;
end if; end if;
end if; end if;
@ -1815,28 +1822,19 @@ create or replace package body PKG_P8PANELS_MECHREC as
SSORT_FIELD in varchar2, -- Тип сортировки SSORT_FIELD in varchar2, -- Тип сортировки
NFCPRODPLAN in number, -- Рег. номер плана NFCPRODPLAN in number, -- Рег. номер плана
NFCPRODPLANSP in number, -- Рег. номер спецификации плана NFCPRODPLANSP in number, -- Рег. номер спецификации плана
NTASK_CLASS in number, -- Класс задачи NTASK_CLASS in number, -- Класс задачи (см. константы NCLASS_*)
NTYPE out number, -- Тип задачи (0/1 - для "Дата выпуска", 2/3/4 - для "Дата выпуска") NTYPE out number, -- Тип задачи (см. константы NTASK_TYPE_*)
SDETAIL_LIST out varchar2 -- Ссылки на детализацию SDETAIL_LIST out varchar2 -- Ссылки на детализацию
) )
is is
begin begin
/*
Описание типов:
0 - Маршрутные листы с развертыванием товарных запасов
1 - Маршрутные листы с развертыванием комплектаций
2 - Приход из подразделений
3 - Приход из подразделений и маршрутные листы
4 - Маршрутные листы
null - Нет детализации
*/
/* Исходим сортировка по "Дата запуска" */ /* Исходим сортировка по "Дата запуска" */
if (SSORT_FIELD = 'DREP_DATE') then if (SSORT_FIELD = 'DREP_DATE') then
/* Если цвет - красный */ /* Если класс "С дефицитом запуска или датой меньше текущей" */
if (NTASK_CLASS = 3) then if (NTASK_CLASS = NCLASS_WITH_DEFICIT) then
/* Проверяем деталь или изделие */ /* Проверяем деталь или изделие */
begin begin
select 1 select NTASK_TYPE_RL_WITH_DL
into NTYPE into NTYPE
from DUAL from DUAL
where exists (select null where exists (select null
@ -1845,65 +1843,65 @@ create or replace package body PKG_P8PANELS_MECHREC as
and SP.UP_LEVEL = NFCPRODPLANSP); and SP.UP_LEVEL = NFCPRODPLANSP);
exception exception
when others then when others then
NTYPE := 0; NTYPE := NTASK_TYPE_RL_WITH_GP;
end; end;
/* Проверяем наличие связей с маршрутными листами */ /* Проверяем наличие связей с маршрутными листами */
if (LINK_FCROUTLST_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 0) = 0) then if (LINK_FCROUTLST_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 0) = 0) then
/* Указываем, что маршрутных листов нет */ /* Указываем, что маршрутных листов нет */
SDETAIL_LIST := 'Нет маршрутных листов'; SDETAIL_LIST := 'Нет маршрутных листов';
NTYPE := null; NTYPE := NTASK_TYPE_EMPTY;
else else
/* Указываем, что маршрутные листы есть */ /* Указываем, что маршрутные листы есть */
SDETAIL_LIST := 'Маршрутные листы'; SDETAIL_LIST := 'Маршрутные листы';
end if; end if;
else else
/* Не отображаем информацию о маршрутных листах */ /* Не отображаем информацию о маршрутных листах */
NTYPE := null; NTYPE := NTASK_TYPE_EMPTY;
SDETAIL_LIST := null; SDETAIL_LIST := null;
end if; end if;
else else
/* Исходим от класса */ /* Исходим от класса */
case case
/* Закрашен зеленым */ /* Если класс "Без дефицита выпуска" */
when (NTASK_CLASS = 0) then when (NTASK_CLASS = NCLASS_WO_DEFICIT) then
/* Проверяем наличией связей с приходов из подразделений */ /* Проверяем наличией связей с приходов из подразделений */
if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 2) = 0) then if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 2) = 0) then
/* Указываем, что приходов из подразделений нет */ /* Указываем, что приходов из подразделений нет */
SDETAIL_LIST := 'Нет приходов из подразделений'; SDETAIL_LIST := 'Нет приходов из подразделений';
NTYPE := null; NTYPE := NTASK_TYPE_EMPTY;
else else
/* Указываем, что приходы из подразделений есть */ /* Указываем, что приходы из подразделений есть */
SDETAIL_LIST := 'Приход из подразделений'; SDETAIL_LIST := 'Приход из подразделений';
NTYPE := 2; NTYPE := NTASK_TYPE_INC_DEPS;
end if; end if;
/* Закрашен желто-зеленым */ /* Если класс "С частичным дефицитом выпуска" */
when (NTASK_CLASS = 1) then when (NTASK_CLASS = NCLASS_PART_DEFICIT) then
/* Проверяем наличией связей с приходов из подразделений */ /* Проверяем наличией связей с приходов из подразделений */
if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP) = 0) then if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP) = 0) then
/* Указываем, что приходов из подразделений нет */ /* Указываем, что приходов из подразделений нет */
SDETAIL_LIST := 'Нет приходов из подразделений'; SDETAIL_LIST := 'Нет приходов из подразделений';
NTYPE := null; NTYPE := NTASK_TYPE_EMPTY;
else else
/* Указываем, что приходы из подразделений есть */ /* Указываем, что приходы из подразделений есть */
SDETAIL_LIST := 'Приход из подразделений'; SDETAIL_LIST := 'Приход из подразделений';
NTYPE := 3; NTYPE := NTASK_TYPE_INC_DEPS_RL;
end if; end if;
/* Закрашен желтым или красным */ /* Если класс "С дефицитом запуска или датой меньше текущей" или "С полным дефицитом выпуска" */
when ((NTASK_CLASS = 2) or (NTASK_CLASS = 3)) 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 if (LINK_FCROUTLST_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP, NSTATE => 1) = 0) then
/* Указываем, что маршрутных листов нет */ /* Указываем, что маршрутных листов нет */
SDETAIL_LIST := 'Нет маршрутных листов'; SDETAIL_LIST := 'Нет маршрутных листов';
NTYPE := null; NTYPE := NTASK_TYPE_EMPTY;
else else
/* Указываем, что маршрутные листы есть */ /* Указываем, что маршрутные листы есть */
SDETAIL_LIST := 'Маршрутные листы'; SDETAIL_LIST := 'Маршрутные листы';
NTYPE := 4; NTYPE := NTASK_TYPE_RL;
end if; end if;
/* Класс не поддерживается */ /* Класс не поддерживается */
else else
/* Для данных классов ничего не выводится */ /* Для данных классов ничего не выводится */
NTYPE := null; NTYPE := NTASK_TYPE_EMPTY;
SDETAIL_LIST := null; SDETAIL_LIST := null;
end case; end case;
end if; end if;
@ -1912,7 +1910,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
/* Формирование цветовых характеристик для задачи */ /* Формирование цветовых характеристик для задачи */
procedure GET_TASK_COLORS procedure GET_TASK_COLORS
( (
NTASK_CLASS in number, -- Класс задачи NTASK_CLASS in number, -- Класс задачи (см. константы NCLASS_*)
STASK_BG_COLOR out varchar2, -- Цвет заливки спецификации STASK_BG_COLOR out varchar2, -- Цвет заливки спецификации
STASK_BG_PROGRESS_COLOR out varchar2, -- Цвет заливки прогресса спецификации STASK_BG_PROGRESS_COLOR out varchar2, -- Цвет заливки прогресса спецификации
STASK_TEXT_COLOR in out varchar2 -- Цвет текста STASK_TEXT_COLOR in out varchar2 -- Цвет текста
@ -1921,33 +1919,33 @@ create or replace package body PKG_P8PANELS_MECHREC as
begin begin
/* Исходим от класса задачи */ /* Исходим от класса задачи */
case NTASK_CLASS case NTASK_CLASS
/* Полностью зеленый */ /* Без дефицита выпуска */
when 0 then when NCLASS_WO_DEFICIT then
STASK_BG_COLOR := SBG_COLOR_GREEN; STASK_BG_COLOR := SBG_COLOR_GREEN;
STASK_TEXT_COLOR := STEXT_COLOR_GREY; STASK_TEXT_COLOR := STEXT_COLOR_GREY;
STASK_BG_PROGRESS_COLOR := null; STASK_BG_PROGRESS_COLOR := null;
/* Частично зелёный, прогресс жёлтый */ /* С частичным дефицитом выпуска */
when 1 then when NCLASS_PART_DEFICIT then
STASK_BG_COLOR := SBG_COLOR_GREEN; STASK_BG_COLOR := SBG_COLOR_GREEN;
STASK_BG_PROGRESS_COLOR := SBG_COLOR_YELLOW; STASK_BG_PROGRESS_COLOR := SBG_COLOR_YELLOW;
STASK_TEXT_COLOR := STEXT_COLOR_GREY; STASK_TEXT_COLOR := STEXT_COLOR_GREY;
/* Полностью жёлтый */ /* С полным дефицитом выпуска */
when 2 then when NCLASS_FULL_DEFICIT then
STASK_BG_COLOR := SBG_COLOR_YELLOW; STASK_BG_COLOR := SBG_COLOR_YELLOW;
STASK_TEXT_COLOR := null; STASK_TEXT_COLOR := null;
STASK_BG_PROGRESS_COLOR := null; STASK_BG_PROGRESS_COLOR := null;
/* Полностью красный */ /* С дефицитом запуска или датой меньше текущей */
when 3 then when NCLASS_WITH_DEFICIT then
STASK_BG_COLOR := SBG_COLOR_RED; STASK_BG_COLOR := SBG_COLOR_RED;
STASK_TEXT_COLOR := null; STASK_TEXT_COLOR := null;
STASK_BG_PROGRESS_COLOR := null; STASK_BG_PROGRESS_COLOR := null;
/* Полностью серый */ /* Дата анализа еще не наступила */
when 4 then when NCLASS_FUTURE_DATE then
STASK_BG_COLOR := SBG_COLOR_GREY; STASK_BG_COLOR := SBG_COLOR_GREY;
STASK_TEXT_COLOR := null; STASK_TEXT_COLOR := null;
STASK_BG_PROGRESS_COLOR := null; STASK_BG_PROGRESS_COLOR := null;
/* Полностью черный */ /* Задача без связи */
when 5 then when NCLASS_WO_LINKS then
STASK_BG_COLOR := SBG_COLOR_BLACK; STASK_BG_COLOR := SBG_COLOR_BLACK;
STASK_TEXT_COLOR := STEXT_COLOR_ORANGE; STASK_TEXT_COLOR := STEXT_COLOR_ORANGE;
STASK_BG_PROGRESS_COLOR := null; STASK_BG_PROGRESS_COLOR := null;
@ -2075,8 +2073,8 @@ create or replace package body PKG_P8PANELS_MECHREC as
STASK_BG_COLOR => STASK_BG_COLOR, STASK_BG_COLOR => STASK_BG_COLOR,
STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR, STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
STASK_TEXT_COLOR => STASK_TEXT_COLOR); STASK_TEXT_COLOR => STASK_TEXT_COLOR);
/* Если класс задачи "1" */ /* Если класс задачи "С частичным дефицитом выпуска" */
if (NTASK_CLASS = 1) then if (NTASK_CLASS = NCLASS_PART_DEFICIT) then
/* Определяем пропорции прогресса */ /* Определяем пропорции прогресса */
NTASK_PROGRESS := ROUND(C.NREL_FACT / C.NMAIN_QUANT * 100); NTASK_PROGRESS := ROUND(C.NREL_FACT / C.NMAIN_QUANT * 100);
else else