forked from CITKParus/P8-Panels
ЦИТК-863 - вызов панели из раздела "Сменные задания" из заголовка СЗ
This commit is contained in:
parent
b4ef8cb564
commit
8ee22fa350
@ -247,7 +247,7 @@ CostJobsSpecsInclude.propTypes = {
|
|||||||
//-----------
|
//-----------
|
||||||
|
|
||||||
//Таблица информации о строках сменного задания
|
//Таблица информации о строках сменного задания
|
||||||
const CostJobsSpecsDataGrid = ({ task, haveNote }) => {
|
const CostJobsSpecsDataGrid = ({ task, haveNote, fromAction }) => {
|
||||||
//Собственное состояние - Включение в задание
|
//Собственное состояние - Включение в задание
|
||||||
const [includeEquipment, setIncludeEquipment] = useState({ NFCJOBSSP: null, NEQCONFIG: null, NVALUE: 0 });
|
const [includeEquipment, setIncludeEquipment] = useState({ NFCJOBSSP: null, NEQCONFIG: null, NVALUE: 0 });
|
||||||
|
|
||||||
@ -255,7 +255,7 @@ const CostJobsSpecsDataGrid = ({ task, haveNote }) => {
|
|||||||
const [costJobsSpecs, setCostJobsSpecs, issueCostJobsSpecs] = useCostJobsSpecs(task);
|
const [costJobsSpecs, setCostJobsSpecs, issueCostJobsSpecs] = useCostJobsSpecs(task);
|
||||||
|
|
||||||
//Собственное состояние - таблица рабочих центров
|
//Собственное состояние - таблица рабочих центров
|
||||||
const [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration] = useEquipConfiguration(task);
|
const [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration] = useEquipConfiguration(task, fromAction);
|
||||||
|
|
||||||
//При изменении состояния сортировки операций
|
//При изменении состояния сортировки операций
|
||||||
const costJobsSpecOrderChanged = ({ orders }) => setCostJobsSpecs(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reload: true }));
|
const costJobsSpecOrderChanged = ({ orders }) => setCostJobsSpecs(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reload: true }));
|
||||||
@ -468,7 +468,8 @@ const CostJobsSpecsDataGrid = ({ task, haveNote }) => {
|
|||||||
//Контроль свойств - Таблица информации о строках сменного задания
|
//Контроль свойств - Таблица информации о строках сменного задания
|
||||||
CostJobsSpecsDataGrid.propTypes = {
|
CostJobsSpecsDataGrid.propTypes = {
|
||||||
task: PropTypes.number.isRequired,
|
task: PropTypes.number.isRequired,
|
||||||
haveNote: PropTypes.bool.isRequired
|
haveNote: PropTypes.bool.isRequired,
|
||||||
|
fromAction: PropTypes.bool.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
//----------------
|
//----------------
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
import React, { useState, useCallback, useEffect, useContext } from "react"; //Классы React
|
import React, { useState, useCallback, useEffect, useContext } from "react"; //Классы React
|
||||||
import { BackEndСtx } from "../../context/backend"; //Контекст взаимодействия с сервером
|
import { BackEndСtx } from "../../context/backend"; //Контекст взаимодействия с сервером
|
||||||
|
import { NavigationCtx } from "../../context/navigation"; //Контекст навигации
|
||||||
import { object2Base64XML } from "../../core/utils"; //Вспомогательные функции
|
import { object2Base64XML } from "../../core/utils"; //Вспомогательные функции
|
||||||
|
|
||||||
//---------
|
//---------
|
||||||
@ -44,18 +45,20 @@ const useCostJobs = () => {
|
|||||||
jobList: [],
|
jobList: [],
|
||||||
jobListLoaded: false,
|
jobListLoaded: false,
|
||||||
selectedJob: {},
|
selectedJob: {},
|
||||||
dataLoaded: false
|
fromAction: false
|
||||||
});
|
});
|
||||||
|
|
||||||
//Подключение к контексту взаимодействия с сервером
|
//Подключение к контексту взаимодействия с сервером
|
||||||
const { executeStored } = useContext(BackEndСtx);
|
const { executeStored } = useContext(BackEndСtx);
|
||||||
|
//Подключение к контексту навигации
|
||||||
|
const { getNavigationSearch } = useContext(NavigationCtx);
|
||||||
|
|
||||||
//При подключении компонента к странице
|
//При подключении компонента к странице
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const initPlans = async () => {
|
const initPlans = async NRN => {
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_MECHREC.FCJOBS_INIT",
|
stored: "PKG_P8PANELS_MECHREC.FCJOBS_INIT",
|
||||||
args: {},
|
args: { NFCJOBS: NRN ? parseInt(NRN) : null },
|
||||||
respArg: "COUT",
|
respArg: "COUT",
|
||||||
isArray: name => name === "XFCJOBS",
|
isArray: name => name === "XFCJOBS",
|
||||||
attributeValueProcessor: (name, val) => (["NHAVE_NOTE"].includes(name) ? val == 1 : val)
|
attributeValueProcessor: (name, val) => (["NHAVE_NOTE"].includes(name) ? val == 1 : val)
|
||||||
@ -64,11 +67,16 @@ const useCostJobs = () => {
|
|||||||
...pv,
|
...pv,
|
||||||
init: true,
|
init: true,
|
||||||
jobList: [...(data.XFCJOBS || [])],
|
jobList: [...(data.XFCJOBS || [])],
|
||||||
jobListLoaded: true
|
selectedJob: data.XFCJOBS_SELECTED ? data.XFCJOBS_SELECTED : {},
|
||||||
|
jobListLoaded: true,
|
||||||
|
fromAction: NRN ? true : false
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
if (!state.init) {
|
if (!state.init) {
|
||||||
initPlans();
|
//Считаем параметры, переданные из действия
|
||||||
|
const actionPrms = getNavigationSearch();
|
||||||
|
//Иницализируем планы
|
||||||
|
initPlans(actionPrms.NRN);
|
||||||
}
|
}
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, []);
|
}, []);
|
||||||
@ -168,7 +176,7 @@ const useCostJobsSpecs = task => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Хук для таблицы рабочих центров
|
//Хук для таблицы рабочих центров
|
||||||
const useEquipConfiguration = task => {
|
const useEquipConfiguration = (task, fromAction) => {
|
||||||
//Собственное состояние - таблица данных
|
//Собственное состояние - таблица данных
|
||||||
const [equipConfiguration, setEquipConfiguration] = useState({
|
const [equipConfiguration, setEquipConfiguration] = useState({
|
||||||
task: null,
|
task: null,
|
||||||
@ -237,6 +245,7 @@ const useEquipConfiguration = task => {
|
|||||||
stored: "PKG_P8PANELS_MECHREC.EQCONFIG_DG_GET",
|
stored: "PKG_P8PANELS_MECHREC.EQCONFIG_DG_GET",
|
||||||
args: {
|
args: {
|
||||||
NFCJOBS: task,
|
NFCJOBS: task,
|
||||||
|
NFROM_ACTION: fromAction ? 1 : 0,
|
||||||
CORDERS: { VALUE: object2Base64XML(equipConfiguration.orders, { arrayNodeName: "orders" }), SDATA_TYPE: SERV_DATA_TYPE_CLOB },
|
CORDERS: { VALUE: object2Base64XML(equipConfiguration.orders, { arrayNodeName: "orders" }), SDATA_TYPE: SERV_DATA_TYPE_CLOB },
|
||||||
NPAGE_NUMBER: equipConfiguration.pageNumber,
|
NPAGE_NUMBER: equipConfiguration.pageNumber,
|
||||||
NPAGE_SIZE: DATA_GRID_PAGE_SIZE,
|
NPAGE_SIZE: DATA_GRID_PAGE_SIZE,
|
||||||
@ -266,7 +275,8 @@ const useEquipConfiguration = task => {
|
|||||||
equipConfiguration.selectedRow,
|
equipConfiguration.selectedRow,
|
||||||
equipConfiguration.task,
|
equipConfiguration.task,
|
||||||
task,
|
task,
|
||||||
executeStored
|
executeStored,
|
||||||
|
fromAction
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration];
|
return [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration];
|
||||||
|
@ -96,8 +96,7 @@ const MechRecCostJobs = () => {
|
|||||||
setState(pv => ({
|
setState(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
selectedJob: job,
|
selectedJob: job,
|
||||||
showJobList: false,
|
showJobList: false
|
||||||
dataLoaded: false
|
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -107,8 +106,7 @@ const MechRecCostJobs = () => {
|
|||||||
setState(pv => ({
|
setState(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
selectedJob: {},
|
selectedJob: {},
|
||||||
showJobList: false,
|
showJobList: false
|
||||||
dataLoaded: false
|
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -132,7 +130,7 @@ const MechRecCostJobs = () => {
|
|||||||
<>
|
<>
|
||||||
<Typography variant={"h6"}>{`Сменное задание №${state.selectedJob.SDOC_NUMB} на ${state.selectedJob.SPERIOD}`}</Typography>
|
<Typography variant={"h6"}>{`Сменное задание №${state.selectedJob.SDOC_NUMB} на ${state.selectedJob.SPERIOD}`}</Typography>
|
||||||
<Typography variant={"h6"}>{`${state.selectedJob.SSUBDIV}`}</Typography>
|
<Typography variant={"h6"}>{`${state.selectedJob.SSUBDIV}`}</Typography>
|
||||||
<CostJobsSpecsDataGrid task={state.selectedJob.NRN} haveNote={state.selectedJob.NHAVE_NOTE} />
|
<CostJobsSpecsDataGrid task={state.selectedJob.NRN} haveNote={state.selectedJob.NHAVE_NOTE} fromAction={state.fromAction} />
|
||||||
</>
|
</>
|
||||||
) : !state.selectedJob.NRN ? (
|
) : !state.selectedJob.NRN ? (
|
||||||
<InlineMsgInfo okBtn={false} text={"Укажите сменное задание для отображения информации"} />
|
<InlineMsgInfo okBtn={false} text={"Укажите сменное задание для отображения информации"} />
|
||||||
|
@ -178,7 +178,7 @@ const useFilter = (currentMonth, currentYear) => {
|
|||||||
openedDepartment: false,
|
openedDepartment: false,
|
||||||
department: { ...department },
|
department: { ...department },
|
||||||
workHours: data.NWORKHOURS,
|
workHours: data.NWORKHOURS,
|
||||||
totalWorkHours: filter.workDays * data.NWORKHOURS
|
totalWorkHours: Math.round(filter.workDays * data.NWORKHOURS)
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
[executeStored, filter.workDays]
|
[executeStored, filter.workDays]
|
||||||
|
@ -173,12 +173,13 @@ create or replace package PKG_P8PANELS_MECHREC as
|
|||||||
/* Получение составов оборудования подразделения */
|
/* Получение составов оборудования подразделения */
|
||||||
procedure EQCONFIG_DG_GET
|
procedure EQCONFIG_DG_GET
|
||||||
(
|
(
|
||||||
NFCJOBS in number, -- Рег. номер сменного задания
|
NFCJOBS in number, -- Рег. номер сменного задания
|
||||||
NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
|
NFROM_ACTION in number := 0, -- Признак запуска из действия раздела (false - нет, true - да)
|
||||||
NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
|
NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
|
||||||
CORDERS in clob, -- Сортировки
|
NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
|
||||||
NINCLUDE_DEF in number, -- Признак включения описания колонок таблицы в ответ
|
CORDERS in clob, -- Сортировки
|
||||||
COUT out clob -- Сериализованная таблица данных
|
NINCLUDE_DEF in number, -- Признак включения описания колонок таблицы в ответ
|
||||||
|
COUT out clob -- Сериализованная таблица данных
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Получение спецификации сменного задания */
|
/* Получение спецификации сменного задания */
|
||||||
@ -195,7 +196,8 @@ create or replace package PKG_P8PANELS_MECHREC as
|
|||||||
/* Инициализация записей раздела "Планы и отчеты производства изделий" */
|
/* Инициализация записей раздела "Планы и отчеты производства изделий" */
|
||||||
procedure FCJOBS_INIT
|
procedure FCJOBS_INIT
|
||||||
(
|
(
|
||||||
COUT out clob -- Список записей раздела "Сменные задания"
|
NFCJOBS in number := null, -- Рег. номер записи (если вызов из действия раздела)
|
||||||
|
COUT out clob -- Список записей раздела "Сменные задания"
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Получение количества рабочих часов в сменах подразделения */
|
/* Получение количества рабочих часов в сменах подразделения */
|
||||||
@ -711,6 +713,25 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
return NRESULT;
|
return NRESULT;
|
||||||
end UTL_FCPRODPLANSP_MAIN_GET;
|
end UTL_FCPRODPLANSP_MAIN_GET;
|
||||||
|
|
||||||
|
/* Считывание цеха из заголовка сменного задания */
|
||||||
|
function UTL_FCJOBS_SUBDIV_GET
|
||||||
|
(
|
||||||
|
NFCJOBS in number -- Рег. номер сменного задания
|
||||||
|
) return number -- Рег. номер подразделения
|
||||||
|
is
|
||||||
|
NRESULT PKG_STD.TREF; -- Рег. номер подразделения
|
||||||
|
begin
|
||||||
|
/* Считываем цех сменного задания */
|
||||||
|
begin
|
||||||
|
select T.SUBDIV into NRESULT from FCJOBS T where T.RN = NFCJOBS;
|
||||||
|
exception
|
||||||
|
when others then
|
||||||
|
NRESULT := null;
|
||||||
|
end;
|
||||||
|
/* Возвращаем результат */
|
||||||
|
return NRESULT;
|
||||||
|
end UTL_FCJOBS_SUBDIV_GET;
|
||||||
|
|
||||||
/* Считывание записи строки сменного задания */
|
/* Считывание записи строки сменного задания */
|
||||||
function UTL_FCJOBSSP_GET
|
function UTL_FCJOBSSP_GET
|
||||||
(
|
(
|
||||||
@ -3041,7 +3062,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select P.NRN,');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select P.NRN,');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.SDOC_INFO,');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.SDOC_INFO,');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.NQUANT,');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.NQUANT,');
|
||||||
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, 2) else 0 end NPROCENT,');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.NPRIOR_PARTY,');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.NPRIOR_PARTY,');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.SPROD_ORDER');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' P.SPROD_ORDER');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select T.RN NRN,');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select T.RN NRN,');
|
||||||
@ -4747,6 +4768,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
procedure EQCONFIG_DG_GET
|
procedure EQCONFIG_DG_GET
|
||||||
(
|
(
|
||||||
NFCJOBS in number, -- Рег. номер сменного задания
|
NFCJOBS in number, -- Рег. номер сменного задания
|
||||||
|
NFROM_ACTION in number := 0, -- Признак запуска из действия раздела (false - нет, true - да)
|
||||||
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, -- Сортировки
|
||||||
@ -4821,8 +4843,14 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
NCOMPANY => NCOMPANY,
|
NCOMPANY => NCOMPANY,
|
||||||
SMEAS_MNEMO => SDICMUNTS_WD,
|
SMEAS_MNEMO => SDICMUNTS_WD,
|
||||||
NRN => NDICMUNTS_WD);
|
NRN => NDICMUNTS_WD);
|
||||||
/* Считываем рег. номер подразделения пользователя */
|
/* Если выполняется из заголовка СЗ */
|
||||||
NSUBDIV := UTL_SUBDIV_RN_GET(NCOMPANY => NCOMPANY, SUSER => UTILIZER());
|
if (NFROM_ACTION = 1) then
|
||||||
|
/* Считываем рег. номер цеха из сменного задания */
|
||||||
|
NSUBDIV := UTL_FCJOBS_SUBDIV_GET(NFCJOBS => NFCJOBS);
|
||||||
|
else
|
||||||
|
/* Считываем рег. номер подразделения пользователя */
|
||||||
|
NSUBDIV := UTL_SUBDIV_RN_GET(NCOMPANY => NCOMPANY, SUSER => UTILIZER());
|
||||||
|
end if;
|
||||||
/* Если подразделение считано */
|
/* Если подразделение считано */
|
||||||
if (NSUBDIV is not null) then
|
if (NSUBDIV is not null) then
|
||||||
/* Обходим данные */
|
/* Обходим данные */
|
||||||
@ -4924,6 +4952,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
/* Инициализация записей раздела "Планы и отчеты производства изделий" */
|
/* Инициализация записей раздела "Планы и отчеты производства изделий" */
|
||||||
procedure FCJOBS_INIT
|
procedure FCJOBS_INIT
|
||||||
(
|
(
|
||||||
|
NFCJOBS in number := null, -- Рег. номер записи (если вызов из действия раздела)
|
||||||
COUT out clob -- Список записей раздела "Сменные задания"
|
COUT out clob -- Список записей раздела "Сменные задания"
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
@ -4931,9 +4960,18 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
SUTILIZER PKG_STD.TSTRING := UTILIZER(); -- Пользователь сеанса
|
SUTILIZER PKG_STD.TSTRING := UTILIZER(); -- Пользователь сеанса
|
||||||
NVERSION PKG_STD.TREF; -- Версия контрагентов
|
NVERSION PKG_STD.TREF; -- Версия контрагентов
|
||||||
SDOC_INFO PKG_STD.TSTRING; -- Информация о документе
|
SDOC_INFO PKG_STD.TSTRING; -- Информация о документе
|
||||||
|
NSUBDIV PKG_STD.TREF; -- Рег. номер цеха
|
||||||
begin
|
begin
|
||||||
/* Считываем версию контрагентов */
|
/* Считываем версию контрагентов */
|
||||||
FIND_VERSION_BY_COMPANY(NCOMPANY => NCOMPANY, SUNITCODE => 'AGNLIST', NVERSION => NVERSION);
|
FIND_VERSION_BY_COMPANY(NCOMPANY => NCOMPANY, SUNITCODE => 'AGNLIST', NVERSION => NVERSION);
|
||||||
|
/* Если вызов из действия раздела */
|
||||||
|
if (NFCJOBS is not null) then
|
||||||
|
/* Считываем рег. номер цеха из сменного задания */
|
||||||
|
NSUBDIV := UTL_FCJOBS_SUBDIV_GET(NFCJOBS => NFCJOBS);
|
||||||
|
else
|
||||||
|
/* Считываем рег. номер подразделения пользователя */
|
||||||
|
NSUBDIV := UTL_SUBDIV_RN_GET(NCOMPANY => NCOMPANY, SUSER => SUTILIZER);
|
||||||
|
end if;
|
||||||
/* Начинаем формирование XML */
|
/* Начинаем формирование XML */
|
||||||
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
||||||
/* Открываем корень */
|
/* Открываем корень */
|
||||||
@ -4956,28 +4994,29 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
where S.PRN = T.RN
|
where S.PRN = T.RN
|
||||||
and S.NOTE is not null
|
and S.NOTE is not null
|
||||||
and ROWNUM = 1) NHAVE_NOTE
|
and ROWNUM = 1) NHAVE_NOTE
|
||||||
from FCJOBS T,
|
from (select J.*
|
||||||
|
from FCJOBS J
|
||||||
|
where J.COMPANY = NCOMPANY
|
||||||
|
and J.STATE = NFCJOBS_STATUS_NOT_WO
|
||||||
|
and J.DOCDATE >= TRUNC(sysdate)
|
||||||
|
and J.SUBDIV = NSUBDIV
|
||||||
|
and exists (select null from V_USERPRIV UP where UP.CATALOG = J.CRN)
|
||||||
|
and exists (select null
|
||||||
|
from V_USERPRIV UP
|
||||||
|
where UP.JUR_PERS = J.JUR_PERS
|
||||||
|
and UP.UNITCODE = 'CostJobs')
|
||||||
|
union
|
||||||
|
select J_RN.*
|
||||||
|
from FCJOBS J_RN
|
||||||
|
where J_RN.RN = NFCJOBS) T,
|
||||||
DOCTYPES DT,
|
DOCTYPES DT,
|
||||||
INS_DEPARTMENT INS,
|
INS_DEPARTMENT INS,
|
||||||
TBOPERMODESP PER
|
TBOPERMODESP PER
|
||||||
where T.COMPANY = NCOMPANY
|
where DT.RN = T.DOCTYPE
|
||||||
and T.STATE = NFCJOBS_STATUS_NOT_WO
|
|
||||||
and T.DOCDATE >= TRUNC(sysdate)
|
|
||||||
and DT.RN = T.DOCTYPE
|
|
||||||
and T.SUBDIV = INS.RN(+)
|
and T.SUBDIV = INS.RN(+)
|
||||||
and T.TBOPERMODESP = PER.RN(+)
|
and T.TBOPERMODESP = PER.RN(+)
|
||||||
and PKG_P8PANELS_MECHREC.UTL_SUBDIV_CHECK(T.COMPANY, T.SUBDIV, SUTILIZER) = 1
|
|
||||||
and exists (select null from V_USERPRIV UP where UP.CATALOG = T.CRN)
|
|
||||||
and exists (select null
|
|
||||||
from V_USERPRIV UP
|
|
||||||
where UP.JUR_PERS = T.JUR_PERS
|
|
||||||
and UP.UNITCODE = 'CostJobs')
|
|
||||||
order by SDOC_INFO)
|
order by SDOC_INFO)
|
||||||
loop
|
loop
|
||||||
/* Открываем план */
|
|
||||||
PKG_XFAST.DOWN_NODE(SNAME => 'XFCJOBS');
|
|
||||||
/* Описываем план */
|
|
||||||
PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => REC.NRN);
|
|
||||||
/* Если указана смена */
|
/* Если указана смена */
|
||||||
if (REC.STBOPERMODESP is not null) then
|
if (REC.STBOPERMODESP is not null) then
|
||||||
/* Указываем информацию документа со сменой */
|
/* Указываем информацию документа со сменой */
|
||||||
@ -4986,6 +5025,10 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
/* Указываем информацию документа без смены */
|
/* Указываем информацию документа без смены */
|
||||||
SDOC_INFO := REC.SDOC_INFO;
|
SDOC_INFO := REC.SDOC_INFO;
|
||||||
end if;
|
end if;
|
||||||
|
/* Открываем план */
|
||||||
|
PKG_XFAST.DOWN_NODE(SNAME => 'XFCJOBS');
|
||||||
|
/* Описываем план */
|
||||||
|
PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => REC.NRN);
|
||||||
PKG_XFAST.ATTR(SNAME => 'SDOC_INFO', SVALUE => SDOC_INFO);
|
PKG_XFAST.ATTR(SNAME => 'SDOC_INFO', SVALUE => SDOC_INFO);
|
||||||
PKG_XFAST.ATTR(SNAME => 'SDOC_NUMB', SVALUE => REC.SDOC_NUMB);
|
PKG_XFAST.ATTR(SNAME => 'SDOC_NUMB', SVALUE => REC.SDOC_NUMB);
|
||||||
PKG_XFAST.ATTR(SNAME => 'SSUBDIV', SVALUE => REC.SSUBDIV);
|
PKG_XFAST.ATTR(SNAME => 'SSUBDIV', SVALUE => REC.SSUBDIV);
|
||||||
@ -4993,6 +5036,20 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
PKG_XFAST.ATTR(SNAME => 'NHAVE_NOTE', NVALUE => COALESCE(REC.NHAVE_NOTE, 0));
|
PKG_XFAST.ATTR(SNAME => 'NHAVE_NOTE', NVALUE => COALESCE(REC.NHAVE_NOTE, 0));
|
||||||
/* Закрываем план */
|
/* Закрываем план */
|
||||||
PKG_XFAST.UP();
|
PKG_XFAST.UP();
|
||||||
|
/* Если вызов из действия, то указываем выбранный */
|
||||||
|
if (NFCJOBS = REC.NRN) then
|
||||||
|
/* Открываем план */
|
||||||
|
PKG_XFAST.DOWN_NODE(SNAME => 'XFCJOBS_SELECTED');
|
||||||
|
/* Описываем план */
|
||||||
|
PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => REC.NRN);
|
||||||
|
PKG_XFAST.ATTR(SNAME => 'SDOC_INFO', SVALUE => SDOC_INFO);
|
||||||
|
PKG_XFAST.ATTR(SNAME => 'SDOC_NUMB', SVALUE => REC.SDOC_NUMB);
|
||||||
|
PKG_XFAST.ATTR(SNAME => 'SSUBDIV', SVALUE => REC.SSUBDIV);
|
||||||
|
PKG_XFAST.ATTR(SNAME => 'SPERIOD', SVALUE => REC.SPERIOD);
|
||||||
|
PKG_XFAST.ATTR(SNAME => 'NHAVE_NOTE', NVALUE => COALESCE(REC.NHAVE_NOTE, 0));
|
||||||
|
/* Закрываем план */
|
||||||
|
PKG_XFAST.UP();
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Закрываем корень */
|
/* Закрываем корень */
|
||||||
PKG_XFAST.UP();
|
PKG_XFAST.UP();
|
||||||
@ -5150,21 +5207,6 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.BGNDATE <= :DDATE_TO');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.BGNDATE <= :DDATE_TO');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and ((T.ENDDATE is null) or ((T.ENDDATE is not null) and (T.ENDDATE >= :DDATE_FROM)))');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and ((T.ENDDATE is null) or ((T.ENDDATE is not null) and (T.ENDDATE >= :DDATE_FROM)))');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and ' || PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_MECHREC.UTL_INS_DEP_HIER_EQ_CHECK') || '(T.COMPANY, T.RN, :DDATE_TO) = 1');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and ' || PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_MECHREC.UTL_INS_DEP_HIER_EQ_CHECK') || '(T.COMPANY, T.RN, :DDATE_TO) = 1');
|
||||||
/*PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and exists (');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' select null');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from INS_DEPARTMENT H');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where H.COMPANY = :NCOMPANY');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and exists (select null');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from SUBDIVSEQ EQ,');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQCONFIG EQC');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where EQ.PRN = H.RN');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and EQC.RN = EQ.EQCONFIG');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and EQC.OPER_DATE is not null');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and EQC.OPER_DATE <= :DDATE_TO');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.ROWLIMIT(NLIMIT => 1, BAND => true) || ')');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.ROWLIMIT(NLIMIT => 1, BAND => true));
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' start with H.RN = T.RN');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' connect by prior H.RN = H.PRN)');*/
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ) D) F');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ) D) F');
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
|
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
|
||||||
/* Разбираем его */
|
/* Разбираем его */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user