forked from CITKParus/P8-Panels
ЦИТК-835 - Доработка панели "Производственная программа"
This commit is contained in:
parent
f4912d20f2
commit
f0a00a31c2
@ -1329,7 +1329,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.DREL_DATE,');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.NREL_QUANT,');
|
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 => ' 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 => ' from (select T.RN NRN,');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.DOCPREF SDOCPREF,');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.DOCPREF SDOCPREF,');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.DOCNUMB SDOCNUMB,');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' T.DOCNUMB SDOCNUMB,');
|
||||||
@ -1498,62 +1498,51 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
end case;
|
end case;
|
||||||
end FCROUTLST_DG_GET;
|
end FCROUTLST_DG_GET;
|
||||||
|
|
||||||
/* Формирование характеристик спецификации в Ганте */
|
/* Получение списка спецификаций планов и отчетов производства изделий для диаграммы Ганта */
|
||||||
procedure MAKE_GANT_ITEM
|
procedure FCPRODPLANSP_GET
|
||||||
(
|
(
|
||||||
NDEFRESLIZ in number, -- Дефицит запуска
|
NCRN in number, -- Рег. номер каталога
|
||||||
NREL_FACT in number, -- Выпуск факт
|
NLEVEL in number := null, -- Уровень отбора
|
||||||
NDEFSTART in number, -- Дефицит выпуска
|
SSORT_FIELD in varchar2 := 'DREP_DATE_TO', -- Поле сортировки
|
||||||
NMAIN_QUANT in number, -- Выпуск
|
COUT out clob, -- Список задач
|
||||||
STASK_BG_COLOR out varchar2, -- Цвет заливки спецификации
|
NMAX_LEVEL out number -- Максимальный уровень иерархии
|
||||||
STASK_BG_PROGRESS_COLOR out varchar2, -- Цвет заливки прогресса спецификации
|
|
||||||
STASK_TEXT_COLOR in out varchar2, -- Цвет текста
|
|
||||||
NTASK_PROGRESS out number -- Прогресс спецификации
|
|
||||||
)
|
)
|
||||||
is
|
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(); -- Организация сеанса
|
||||||
|
NTASK_CLASS 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
|
begin
|
||||||
/* Если дефицит запуска <> 0 */
|
/* Соединяем информацию */
|
||||||
if (NDEFRESLIZ <> 0) then
|
SRESULT := STRCOMBINE(SPROD_ORDER, SNOMEN_NAME, ', ');
|
||||||
/* Если дефицит выпуска = 0 */
|
SRESULT := STRCOMBINE(SRESULT, SSUBDIV_DLVR, ', ');
|
||||||
if (NDEFSTART = 0) then
|
SRESULT := STRCOMBINE(SRESULT, TO_CHAR(NMAIN_QUANT), ', ');
|
||||||
/* Полностью зеленый */
|
/* Возвращаем результат */
|
||||||
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
return SRESULT;
|
||||||
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
end MAKE_INFO;
|
||||||
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;
|
|
||||||
|
|
||||||
/* Считывание максимального уровня иерархии плана по каталогу */
|
/* Считывание максимального уровня иерархии плана по каталогу */
|
||||||
function PRODPLAN_MAX_LEVEL_GET
|
function PRODPLAN_MAX_LEVEL_GET
|
||||||
@ -1611,21 +1600,11 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
DREP_DATE in date, -- Дата запуска спецификации
|
DREP_DATE in date, -- Дата запуска спецификации
|
||||||
DREP_DATE_TO in date, -- Дата выпуска спецификации
|
DREP_DATE_TO in date, -- Дата выпуска спецификации
|
||||||
DINCL_DATE in date, -- Дата включения в план спецификации
|
DINCL_DATE in date, -- Дата включения в план спецификации
|
||||||
NHAVE_LINK in number := 0, -- Наличие связей с "Маршрутный лист" или "Приход из подразделения"
|
|
||||||
DDATE_FROM out date, -- Итоговая дата запуска спецификации
|
DDATE_FROM out date, -- Итоговая дата запуска спецификации
|
||||||
DDATE_TO 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 -- Прогресс элемента
|
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
begin
|
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
|
if ((DREP_DATE is null) and (DREP_DATE_TO is null)) then
|
||||||
/* Указываем дату включения в план */
|
/* Указываем дату включения в план */
|
||||||
@ -1636,80 +1615,8 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
DDATE_FROM := COALESCE(DREP_DATE, DREP_DATE_TO);
|
DDATE_FROM := COALESCE(DREP_DATE, DREP_DATE_TO);
|
||||||
DDATE_TO := COALESCE(DREP_DATE_TO, DREP_DATE);
|
DDATE_TO := COALESCE(DREP_DATE_TO, DREP_DATE);
|
||||||
end if;
|
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;
|
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
|
procedure TASK_ATTRS_INIT
|
||||||
(
|
(
|
||||||
@ -1739,41 +1646,8 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SCAPTION => 'Единица измерения');
|
SCAPTION => 'Единица измерения');
|
||||||
end TASK_ATTRS_INIT;
|
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, -- Описание диаграммы Ганта
|
RG in PKG_P8PANELS_VISUAL.TGANTT, -- Описание диаграммы Ганта
|
||||||
RGT in out nocopy PKG_P8PANELS_VISUAL.TGANTT_TASK, -- Описание задачи для диаграммы
|
RGT in out nocopy PKG_P8PANELS_VISUAL.TGANTT_TASK, -- Описание задачи для диаграммы
|
||||||
@ -1817,7 +1691,111 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
RTASK => RGT,
|
RTASK => RGT,
|
||||||
SNAME => STASK_ATTR_MEAS,
|
SNAME => STASK_ATTR_MEAS,
|
||||||
SVALUE => SMEAS);
|
SVALUE => SMEAS);
|
||||||
end FILL_TASK_ATTRS;
|
end TASK_ATTRS_FILL;
|
||||||
|
|
||||||
|
/* Инициализация цветов */
|
||||||
|
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;
|
||||||
|
|
||||||
|
/* Опеределение класса задачи */
|
||||||
|
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; -- Класс задачи
|
||||||
|
begin
|
||||||
|
/*
|
||||||
|
Описание классов:
|
||||||
|
0 - Без дефицита выпуска (последующий цвет "Зеленый")
|
||||||
|
1 - С частичным дефицитом выпуска (последующий цвет "Желто-зелеый")
|
||||||
|
2 - С полным дефицитом выпуска (последующий цвет "Желтый")
|
||||||
|
3 - С дефицитом запуска или датой меньше текущей (последующий цвет "Красный")
|
||||||
|
4 - Дата анализа еще не наступила (последующий цвет "Серый")
|
||||||
|
5 - Задача без связи (последующий цвет "Черный")
|
||||||
|
*/
|
||||||
|
/* Если одна из дат не указана */
|
||||||
|
if ((DREP_DATE is null) or (DREP_DATE_TO is null)) then
|
||||||
|
/* Если спецификация также не имеет связей */
|
||||||
|
if (NHAVE_LINK = 0) then
|
||||||
|
NTASK_CLASS := 5;
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
/* Если нет связанных документов */
|
||||||
|
if (NHAVE_LINK = 0) then
|
||||||
|
/* Если дата запуска меньше текущей даты */
|
||||||
|
if (DREP_DATE <= sysdate) then
|
||||||
|
NTASK_CLASS := 3;
|
||||||
|
end if;
|
||||||
|
/* Если дата больше текущей даты */
|
||||||
|
if (DREP_DATE > sysdate) then
|
||||||
|
NTASK_CLASS := 4;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
/* Если класс не определен */
|
||||||
|
if (NTASK_CLASS is null) then
|
||||||
|
/* Если дефицит запуска <> 0 */
|
||||||
|
if (NDEFRESLIZ <> 0) then
|
||||||
|
/* Если дефицит выпуска = 0 */
|
||||||
|
if (NDEFSTART = 0) then
|
||||||
|
NTASK_CLASS := 0;
|
||||||
|
else
|
||||||
|
NTASK_CLASS := 3;
|
||||||
|
end if;
|
||||||
|
else
|
||||||
|
/* Если дефицит выпуска = 0 */
|
||||||
|
if (NDEFSTART = 0) then
|
||||||
|
NTASK_CLASS := 0;
|
||||||
|
else
|
||||||
|
/* Если дефицит запуска = 0 и выпуск факт = 0 */
|
||||||
|
if ((NDEFRESLIZ = 0) and (NREL_FACT = 0)) then
|
||||||
|
NTASK_CLASS := 2;
|
||||||
|
end if;
|
||||||
|
/* Если дефицит запуска = 0 и выпуск факт <> 0 */
|
||||||
|
if ((NDEFRESLIZ = 0) and (NREL_FACT <> 0)) then
|
||||||
|
NTASK_CLASS := 1;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
/* Возвращаем результат */
|
||||||
|
return NTASK_CLASS;
|
||||||
|
end GET_TASK_CLASS;
|
||||||
|
|
||||||
/* Получение типа задачи */
|
/* Получение типа задачи */
|
||||||
procedure GET_TASK_TYPE
|
procedure GET_TASK_TYPE
|
||||||
@ -1826,8 +1804,7 @@ 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, -- Рег. номер спецификации плана
|
||||||
STASK_BG_COLOR in varchar2, -- Цвет заливки задачи
|
NTASK_CLASS in number, -- Класс задачи
|
||||||
STASK_BG_PROGRESS_COLOR in varchar2, -- Цвет заливки прогресса
|
|
||||||
NTYPE out number, -- Тип задачи (0/1 - для "Дата выпуска", 2/3/4 - для "Дата выпуска")
|
NTYPE out number, -- Тип задачи (0/1 - для "Дата выпуска", 2/3/4 - для "Дата выпуска")
|
||||||
SDETAIL_LIST out varchar2 -- Ссылки на детализацию
|
SDETAIL_LIST out varchar2 -- Ссылки на детализацию
|
||||||
)
|
)
|
||||||
@ -1845,7 +1822,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
/* Исходим сортировка по "Дата запуска" */
|
/* Исходим сортировка по "Дата запуска" */
|
||||||
if (SSORT_FIELD = 'DREP_DATE') then
|
if (SSORT_FIELD = 'DREP_DATE') then
|
||||||
/* Если цвет - красный */
|
/* Если цвет - красный */
|
||||||
if (STASK_BG_COLOR = SBG_COLOR_RED) then
|
if (NTASK_CLASS = 3) then
|
||||||
/* Проверяем деталь или изделие */
|
/* Проверяем деталь или изделие */
|
||||||
begin
|
begin
|
||||||
select 1
|
select 1
|
||||||
@ -1874,10 +1851,10 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SDETAIL_LIST := null;
|
SDETAIL_LIST := null;
|
||||||
end if;
|
end if;
|
||||||
else
|
else
|
||||||
/* Если цвет зеленый */
|
/* Исходим от класса */
|
||||||
if (STASK_BG_COLOR = SBG_COLOR_GREEN) then
|
case
|
||||||
/* Если полностью зеленый */
|
/* Закрашен зеленым */
|
||||||
if (STASK_BG_PROGRESS_COLOR is null) then
|
when (NTASK_CLASS = 0) 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
|
||||||
/* Указываем, что приходов из подразделений нет */
|
/* Указываем, что приходов из подразделений нет */
|
||||||
@ -1888,9 +1865,8 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SDETAIL_LIST := 'Приход из подразделений';
|
SDETAIL_LIST := 'Приход из подразделений';
|
||||||
NTYPE := 2;
|
NTYPE := 2;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
/* Закрашен желто-зеленым */
|
||||||
/* Если желтно-зеленый */
|
when (NTASK_CLASS = 1) then
|
||||||
if (STASK_BG_PROGRESS_COLOR = SBG_COLOR_YELLOW) then
|
|
||||||
/* Проверяем наличией связей с приходов из подразделений */
|
/* Проверяем наличией связей с приходов из подразделений */
|
||||||
if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP) = 0) then
|
if (LINK_INCOMEFROMDEPS_CHECK(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP) = 0) then
|
||||||
/* Указываем, что приходов из подразделений нет */
|
/* Указываем, что приходов из подразделений нет */
|
||||||
@ -1901,10 +1877,8 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SDETAIL_LIST := 'Приход из подразделений';
|
SDETAIL_LIST := 'Приход из подразделений';
|
||||||
NTYPE := 3;
|
NTYPE := 3;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
/* Закрашен желтым или красным */
|
||||||
else
|
when ((NTASK_CLASS = 2) or (NTASK_CLASS = 3)) then
|
||||||
/* Если цвет полностью желтый или красный */
|
|
||||||
if ((STASK_BG_COLOR = SBG_COLOR_YELLOW) or (STASK_BG_COLOR = SBG_COLOR_RED)) 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
|
||||||
/* Указываем, что маршрутных листов нет */
|
/* Указываем, что маршрутных листов нет */
|
||||||
@ -1915,14 +1889,64 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SDETAIL_LIST := 'Маршрутные листы';
|
SDETAIL_LIST := 'Маршрутные листы';
|
||||||
NTYPE := 4;
|
NTYPE := 4;
|
||||||
end if;
|
end if;
|
||||||
|
/* Класс не поддерживается */
|
||||||
else
|
else
|
||||||
/* Для данных критериев ничего не выводится */
|
/* Для данных классов ничего не выводится */
|
||||||
NTYPE := null;
|
NTYPE := null;
|
||||||
SDETAIL_LIST := null;
|
SDETAIL_LIST := null;
|
||||||
end if;
|
end case;
|
||||||
end if;
|
|
||||||
end if;
|
end if;
|
||||||
end GET_TASK_TYPE;
|
end GET_TASK_TYPE;
|
||||||
|
|
||||||
|
/* Формирование цветовых характеристик для задачи */
|
||||||
|
procedure GET_TASK_COLORS
|
||||||
|
(
|
||||||
|
NTASK_CLASS in number, -- Класс задачи
|
||||||
|
STASK_BG_COLOR out varchar2, -- Цвет заливки спецификации
|
||||||
|
STASK_BG_PROGRESS_COLOR out varchar2, -- Цвет заливки прогресса спецификации
|
||||||
|
STASK_TEXT_COLOR in out varchar2 -- Цвет текста
|
||||||
|
)
|
||||||
|
is
|
||||||
|
begin
|
||||||
|
/* Исходим от класса задачи */
|
||||||
|
case NTASK_CLASS
|
||||||
|
/* Полностью зеленый */
|
||||||
|
when 0 then
|
||||||
|
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
||||||
|
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
||||||
|
STASK_BG_PROGRESS_COLOR := null;
|
||||||
|
/* Частично зелёный, прогресс жёлтый */
|
||||||
|
when 1 then
|
||||||
|
STASK_BG_COLOR := SBG_COLOR_GREEN;
|
||||||
|
STASK_BG_PROGRESS_COLOR := SBG_COLOR_YELLOW;
|
||||||
|
STASK_TEXT_COLOR := STEXT_COLOR_GREY;
|
||||||
|
/* Полностью жёлтый */
|
||||||
|
when 2 then
|
||||||
|
STASK_BG_COLOR := SBG_COLOR_YELLOW;
|
||||||
|
STASK_TEXT_COLOR := null;
|
||||||
|
STASK_BG_PROGRESS_COLOR := null;
|
||||||
|
/* Полностью красный */
|
||||||
|
when 3 then
|
||||||
|
STASK_BG_COLOR := SBG_COLOR_RED;
|
||||||
|
STASK_TEXT_COLOR := null;
|
||||||
|
STASK_BG_PROGRESS_COLOR := null;
|
||||||
|
/* Полностью серый */
|
||||||
|
when 4 then
|
||||||
|
STASK_BG_COLOR := SBG_COLOR_GREY;
|
||||||
|
STASK_TEXT_COLOR := null;
|
||||||
|
STASK_BG_PROGRESS_COLOR := null;
|
||||||
|
/* Полностью черный */
|
||||||
|
when 5 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
|
begin
|
||||||
/* Определяем заголовок плана */
|
/* Определяем заголовок плана */
|
||||||
FIND_ACATALOG_RN(NFLAG_SMART => 0,
|
FIND_ACATALOG_RN(NFLAG_SMART => 0,
|
||||||
@ -2020,28 +2044,31 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SNOMEN_NAME => C.SNOMEN_NAME,
|
SNOMEN_NAME => C.SNOMEN_NAME,
|
||||||
SSUBDIV_DLVR => C.SSUBDIV_DLVR,
|
SSUBDIV_DLVR => C.SSUBDIV_DLVR,
|
||||||
NMAIN_QUANT => C.NMAIN_QUANT);
|
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,
|
FCPRODPLANSP_DATES_GET(DREP_DATE => C.DREP_DATE,
|
||||||
DREP_DATE_TO => C.DREP_DATE_TO,
|
DREP_DATE_TO => C.DREP_DATE_TO,
|
||||||
DINCL_DATE => C.DINCL_DATE,
|
DINCL_DATE => C.DINCL_DATE,
|
||||||
NHAVE_LINK => COALESCE(C.NHAVE_LINK, 0),
|
|
||||||
DDATE_FROM => DDATE_FROM,
|
DDATE_FROM => DDATE_FROM,
|
||||||
DDATE_TO => DDATE_TO,
|
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
|
|
||||||
/* Формирование характеристик элемента ганта */
|
/* Формирование характеристик элемента ганта */
|
||||||
MAKE_GANT_ITEM(NDEFRESLIZ => C.NDEFRESLIZ,
|
GET_TASK_COLORS(NTASK_CLASS => NTASK_CLASS,
|
||||||
NREL_FACT => C.NREL_FACT,
|
|
||||||
NDEFSTART => C.NDEFSTART,
|
|
||||||
NMAIN_QUANT => C.NMAIN_QUANT,
|
|
||||||
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);
|
||||||
NTASK_PROGRESS => NTASK_PROGRESS);
|
/* Если класс задачи "1" */
|
||||||
|
if (NTASK_CLASS = 1) then
|
||||||
|
/* Определяем пропорции прогресса */
|
||||||
|
NTASK_PROGRESS := ROUND(C.NREL_FACT / C.NMAIN_QUANT * 100);
|
||||||
|
else
|
||||||
|
/* Не требуется */
|
||||||
|
NTASK_PROGRESS := null;
|
||||||
end if;
|
end if;
|
||||||
/* Сформируем основную спецификацию */
|
/* Сформируем основную спецификацию */
|
||||||
RGT := PKG_P8PANELS_VISUAL.TGANTT_TASK_MAKE(NRN => C.NRN,
|
RGT := PKG_P8PANELS_VISUAL.TGANTT_TASK_MAKE(NRN => C.NRN,
|
||||||
@ -2062,12 +2089,11 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SSORT_FIELD => SSORT_FIELD,
|
SSORT_FIELD => SSORT_FIELD,
|
||||||
NFCPRODPLAN => C.NPRN,
|
NFCPRODPLAN => C.NPRN,
|
||||||
NFCPRODPLANSP => C.NRN,
|
NFCPRODPLANSP => C.NRN,
|
||||||
STASK_BG_COLOR => STASK_BG_COLOR,
|
NTASK_CLASS => NTASK_CLASS,
|
||||||
STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
|
||||||
NTYPE => NTYPE,
|
NTYPE => NTYPE,
|
||||||
SDETAIL_LIST => SDETAIL_LIST);
|
SDETAIL_LIST => SDETAIL_LIST);
|
||||||
/* Заполним значение динамических атрибутов */
|
/* Заполним значение динамических атрибутов */
|
||||||
FILL_TASK_ATTRS(RG => RG,
|
TASK_ATTRS_FILL(RG => RG,
|
||||||
RGT => RGT,
|
RGT => RGT,
|
||||||
NSTART_FACT => C.NSTART_FACT,
|
NSTART_FACT => C.NSTART_FACT,
|
||||||
NMAIN_QUANT => C.NMAIN_QUANT,
|
NMAIN_QUANT => C.NMAIN_QUANT,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user