forked from CITKParus/P8-Panels
ЦИТК-827, 863 - Исправление работы со стилями и вызов панели из раздела "Сменные задания"
This commit is contained in:
commit
4c33a5cb61
@ -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 });
|
||||
|
||||
@ -255,7 +255,7 @@ const CostJobsSpecsDataGrid = ({ task, haveNote }) => {
|
||||
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 }));
|
||||
@ -468,7 +468,8 @@ const CostJobsSpecsDataGrid = ({ task, haveNote }) => {
|
||||
//Контроль свойств - Таблица информации о строках сменного задания
|
||||
CostJobsSpecsDataGrid.propTypes = {
|
||||
task: PropTypes.number.isRequired,
|
||||
haveNote: PropTypes.bool.isRequired
|
||||
haveNote: PropTypes.bool.isRequired,
|
||||
fromAction: PropTypes.bool.isRequired
|
||||
};
|
||||
|
||||
//----------------
|
||||
|
@ -1,9 +1,15 @@
|
||||
/*
|
||||
Парус 8 - Панели мониторинга - ПУП - Выдача сменного задания
|
||||
Кастомные хуки
|
||||
*/
|
||||
|
||||
//---------------------
|
||||
//Подключение библиотек
|
||||
//---------------------
|
||||
|
||||
import React, { useState, useCallback, useEffect, useContext } from "react"; //Классы React
|
||||
import { BackEndСtx } from "../../context/backend"; //Контекст взаимодействия с сервером
|
||||
import { NavigationCtx } from "../../context/navigation"; //Контекст навигации
|
||||
import { object2Base64XML } from "../../core/utils"; //Вспомогательные функции
|
||||
|
||||
//---------
|
||||
@ -39,18 +45,20 @@ const useCostJobs = () => {
|
||||
jobList: [],
|
||||
jobListLoaded: false,
|
||||
selectedJob: {},
|
||||
dataLoaded: false
|
||||
fromAction: false
|
||||
});
|
||||
|
||||
//Подключение к контексту взаимодействия с сервером
|
||||
const { executeStored } = useContext(BackEndСtx);
|
||||
//Подключение к контексту навигации
|
||||
const { getNavigationSearch } = useContext(NavigationCtx);
|
||||
|
||||
//При подключении компонента к странице
|
||||
useEffect(() => {
|
||||
const initPlans = async () => {
|
||||
const initPlans = async NRN => {
|
||||
const data = await executeStored({
|
||||
stored: "PKG_P8PANELS_MECHREC.FCJOBS_INIT",
|
||||
args: {},
|
||||
args: { NFCJOBS: NRN ? parseInt(NRN) : null },
|
||||
respArg: "COUT",
|
||||
isArray: name => name === "XFCJOBS",
|
||||
attributeValueProcessor: (name, val) => (["NHAVE_NOTE"].includes(name) ? val == 1 : val)
|
||||
@ -59,11 +67,16 @@ const useCostJobs = () => {
|
||||
...pv,
|
||||
init: true,
|
||||
jobList: [...(data.XFCJOBS || [])],
|
||||
jobListLoaded: true
|
||||
selectedJob: data.XFCJOBS_SELECTED ? data.XFCJOBS_SELECTED : {},
|
||||
jobListLoaded: true,
|
||||
fromAction: NRN ? true : false
|
||||
}));
|
||||
};
|
||||
if (!state.init) {
|
||||
initPlans();
|
||||
//Считаем параметры, переданные из действия
|
||||
const actionPrms = getNavigationSearch();
|
||||
//Иницализируем планы
|
||||
initPlans(actionPrms.NRN);
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
@ -163,7 +176,7 @@ const useCostJobsSpecs = task => {
|
||||
};
|
||||
|
||||
//Хук для таблицы рабочих центров
|
||||
const useEquipConfiguration = task => {
|
||||
const useEquipConfiguration = (task, fromAction) => {
|
||||
//Собственное состояние - таблица данных
|
||||
const [equipConfiguration, setEquipConfiguration] = useState({
|
||||
task: null,
|
||||
@ -232,6 +245,7 @@ const useEquipConfiguration = task => {
|
||||
stored: "PKG_P8PANELS_MECHREC.EQCONFIG_DG_GET",
|
||||
args: {
|
||||
NFCJOBS: task,
|
||||
NFROM_ACTION: fromAction ? 1 : 0,
|
||||
CORDERS: { VALUE: object2Base64XML(equipConfiguration.orders, { arrayNodeName: "orders" }), SDATA_TYPE: SERV_DATA_TYPE_CLOB },
|
||||
NPAGE_NUMBER: equipConfiguration.pageNumber,
|
||||
NPAGE_SIZE: DATA_GRID_PAGE_SIZE,
|
||||
@ -261,7 +275,8 @@ const useEquipConfiguration = task => {
|
||||
equipConfiguration.selectedRow,
|
||||
equipConfiguration.task,
|
||||
task,
|
||||
executeStored
|
||||
executeStored,
|
||||
fromAction
|
||||
]);
|
||||
|
||||
return [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration];
|
||||
|
@ -96,8 +96,7 @@ const MechRecCostJobs = () => {
|
||||
setState(pv => ({
|
||||
...pv,
|
||||
selectedJob: job,
|
||||
showJobList: false,
|
||||
dataLoaded: false
|
||||
showJobList: false
|
||||
}));
|
||||
};
|
||||
|
||||
@ -107,8 +106,7 @@ const MechRecCostJobs = () => {
|
||||
setState(pv => ({
|
||||
...pv,
|
||||
selectedJob: {},
|
||||
showJobList: false,
|
||||
dataLoaded: false
|
||||
showJobList: false
|
||||
}));
|
||||
};
|
||||
|
||||
@ -132,7 +130,7 @@ const MechRecCostJobs = () => {
|
||||
<>
|
||||
<Typography variant={"h6"}>{`Сменное задание №${state.selectedJob.SDOC_NUMB} на ${state.selectedJob.SPERIOD}`}</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 ? (
|
||||
<InlineMsgInfo okBtn={false} text={"Укажите сменное задание для отображения информации"} />
|
||||
|
@ -20,7 +20,8 @@ import { useCostDeliveryLists } from "./backend_dg"; //Собственные х
|
||||
|
||||
//Стили
|
||||
const STYLES = {
|
||||
CONTAINER: { margin: "5px 0px", textAlign: "center" }
|
||||
CONTAINER: { margin: "5px 0px", textAlign: "center" },
|
||||
DATA_GRID_CELL_COVERED: { backgroundColor: "lightblue" }
|
||||
};
|
||||
|
||||
//------------------------------------
|
||||
@ -32,7 +33,7 @@ const dataCellRender = ({ row, columnDef }) => {
|
||||
//Если "Количество план" равно или меньше "Остаток"
|
||||
if (row["NQUANT_PLAN"] <= row["NREST"]) {
|
||||
return {
|
||||
cellStyle: { backgroundColor: "lightblue" },
|
||||
cellStyle: { ...STYLES.DATA_GRID_CELL_COVERED },
|
||||
data: row[columnDef]
|
||||
};
|
||||
} else {
|
||||
|
@ -20,7 +20,8 @@ import { useGoodsParties } from "./backend_dg"; //Собственные хук
|
||||
|
||||
//Стили
|
||||
const STYLES = {
|
||||
CONTAINER: { margin: "5px 0px", textAlign: "center" }
|
||||
CONTAINER: { margin: "5px 0px", textAlign: "center" },
|
||||
DATA_GRID_CELL_COVERED: { backgroundColor: "lightblue" }
|
||||
};
|
||||
|
||||
//------------------------------------
|
||||
@ -32,7 +33,7 @@ const dataCellRender = ({ row, columnDef, quantPlanSum }) => {
|
||||
//Если остаток больше суммы "Выдать по норме" - закрашиваем голубым
|
||||
if (row["NRESTFACT"] >= quantPlanSum) {
|
||||
return {
|
||||
cellStyle: { backgroundColor: "lightblue" },
|
||||
cellStyle: { ...STYLES.DATA_GRID_CELL_COVERED },
|
||||
data: row[columnDef]
|
||||
};
|
||||
} else {
|
||||
|
@ -36,7 +36,8 @@ const currentYear = currentDate.getUTCFullYear();
|
||||
|
||||
//Стили
|
||||
const STYLES = {
|
||||
FILTER_BLOCK: { maxWidth: "200px" }
|
||||
FILTER_CONTAINER: { display: "flex", flexDirection: "row", justifyContent: "flex-start", alignItems: "flex-end" },
|
||||
FILTER_BLOCK: { maxWidth: "200px", display: "flex" }
|
||||
};
|
||||
|
||||
//------------------------------------
|
||||
@ -71,7 +72,7 @@ DepartmentsDataGrid.propTypes = {
|
||||
//Компонент фильтра
|
||||
const FilterComponent = ({ filter, setFilter, handleMonthChange, handleSelectDeparture }) => {
|
||||
return (
|
||||
<Box display="flex" flexDirection="row" justifyContent="flex-start" alignItems="flex-end" pt={1.5} pl={1}>
|
||||
<Box sx={STYLES.FILTER_CONTAINER} pt={1.5} pl={1}>
|
||||
<FormControl sx={STYLES.FILTER_BLOCK} readOnly fullWidth variant="outlined">
|
||||
<InputLabel required={!filter.department.SCODE} htmlFor="department-outlined">
|
||||
Цех
|
||||
@ -95,7 +96,7 @@ const FilterComponent = ({ filter, setFilter, handleMonthChange, handleSelectDep
|
||||
label="Цех"
|
||||
/>
|
||||
</FormControl>
|
||||
<Box sx={STYLES.FILTER_BLOCK} display="flex" pb={1}>
|
||||
<Box sx={STYLES.FILTER_BLOCK} pb={1}>
|
||||
<Box>
|
||||
<IconButton onClick={() => handleMonthChange(-1)}>
|
||||
<Icon>navigate_before</Icon>
|
||||
|
@ -20,7 +20,8 @@ import { useInsDepartment } from "../hooks"; //Состояние таблицы
|
||||
|
||||
//Стили
|
||||
const STYLES = {
|
||||
CONTAINER: { margin: "5px 0px", textAlign: "center" }
|
||||
CONTAINER: { margin: "5px 0px", textAlign: "center" },
|
||||
DATA_GRID_CELL_DEFAULT: { cursor: "pointer", backgroundColor: "#ADD8E6" }
|
||||
};
|
||||
|
||||
//------------------------------------
|
||||
@ -30,7 +31,7 @@ const STYLES = {
|
||||
//Генерация ссылок на строках
|
||||
const dataCellRender = ({ row, columnDef, handleSelectDeparture }) => {
|
||||
return {
|
||||
cellStyle: { cursor: "pointer", backgroundColor: "#ADD8E6" },
|
||||
cellStyle: { ...STYLES.DATA_GRID_CELL_DEFAULT },
|
||||
cellProps: {
|
||||
onClick: () => {
|
||||
handleSelectDeparture({ NRN: row["NRN"], SCODE: row["SCODE"].toString(), SNAME: row["SNAME"] });
|
||||
|
@ -178,7 +178,7 @@ const useFilter = (currentMonth, currentYear) => {
|
||||
openedDepartment: false,
|
||||
department: { ...department },
|
||||
workHours: data.NWORKHOURS,
|
||||
totalWorkHours: filter.workDays * data.NWORKHOURS
|
||||
totalWorkHours: Math.round(filter.workDays * data.NWORKHOURS)
|
||||
}));
|
||||
},
|
||||
[executeStored, filter.workDays]
|
||||
|
@ -173,12 +173,13 @@ create or replace package PKG_P8PANELS_MECHREC as
|
||||
/* Получение составов оборудования подразделения */
|
||||
procedure EQCONFIG_DG_GET
|
||||
(
|
||||
NFCJOBS in number, -- Рег. номер сменного задания
|
||||
NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
|
||||
NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
|
||||
CORDERS in clob, -- Сортировки
|
||||
NINCLUDE_DEF in number, -- Признак включения описания колонок таблицы в ответ
|
||||
COUT out clob -- Сериализованная таблица данных
|
||||
NFCJOBS in number, -- Рег. номер сменного задания
|
||||
NFROM_ACTION in number := 0, -- Признак запуска из действия раздела (false - нет, true - да)
|
||||
NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
|
||||
NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
|
||||
CORDERS in clob, -- Сортировки
|
||||
NINCLUDE_DEF in number, -- Признак включения описания колонок таблицы в ответ
|
||||
COUT out clob -- Сериализованная таблица данных
|
||||
);
|
||||
|
||||
/* Получение спецификации сменного задания */
|
||||
@ -195,7 +196,8 @@ create or replace package PKG_P8PANELS_MECHREC as
|
||||
/* Инициализация записей раздела "Планы и отчеты производства изделий" */
|
||||
procedure FCJOBS_INIT
|
||||
(
|
||||
COUT out clob -- Список записей раздела "Сменные задания"
|
||||
NFCJOBS in number := null, -- Рег. номер записи (если вызов из действия раздела)
|
||||
COUT out clob -- Список записей раздела "Сменные задания"
|
||||
);
|
||||
|
||||
/* Получение количества рабочих часов в сменах подразделения */
|
||||
@ -710,6 +712,25 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
/* Возвращаем результат */
|
||||
return NRESULT;
|
||||
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
|
||||
@ -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 => ' P.SDOC_INFO,');
|
||||
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.SPROD_ORDER');
|
||||
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
|
||||
(
|
||||
NFCJOBS in number, -- Рег. номер сменного задания
|
||||
NFROM_ACTION in number := 0, -- Признак запуска из действия раздела (false - нет, true - да)
|
||||
NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
|
||||
NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
|
||||
CORDERS in clob, -- Сортировки
|
||||
@ -4821,8 +4843,14 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
NCOMPANY => NCOMPANY,
|
||||
SMEAS_MNEMO => SDICMUNTS_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
|
||||
/* Обходим данные */
|
||||
@ -4924,6 +4952,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
/* Инициализация записей раздела "Планы и отчеты производства изделий" */
|
||||
procedure FCJOBS_INIT
|
||||
(
|
||||
NFCJOBS in number := null, -- Рег. номер записи (если вызов из действия раздела)
|
||||
COUT out clob -- Список записей раздела "Сменные задания"
|
||||
)
|
||||
is
|
||||
@ -4931,9 +4960,18 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
||||
SUTILIZER PKG_STD.TSTRING := UTILIZER(); -- Пользователь сеанса
|
||||
NVERSION PKG_STD.TREF; -- Версия контрагентов
|
||||
SDOC_INFO PKG_STD.TSTRING; -- Информация о документе
|
||||
NSUBDIV PKG_STD.TREF; -- Рег. номер цеха
|
||||
begin
|
||||
/* Считываем версию контрагентов */
|
||||
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 */
|
||||
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
|
||||
and S.NOTE is not null
|
||||
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,
|
||||
INS_DEPARTMENT INS,
|
||||
TBOPERMODESP PER
|
||||
where T.COMPANY = NCOMPANY
|
||||
and T.STATE = NFCJOBS_STATUS_NOT_WO
|
||||
and T.DOCDATE >= TRUNC(sysdate)
|
||||
and DT.RN = T.DOCTYPE
|
||||
where DT.RN = T.DOCTYPE
|
||||
and T.SUBDIV = INS.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)
|
||||
loop
|
||||
/* Открываем план */
|
||||
PKG_XFAST.DOWN_NODE(SNAME => 'XFCJOBS');
|
||||
/* Описываем план */
|
||||
PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => REC.NRN);
|
||||
/* Если указана смена */
|
||||
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;
|
||||
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_NUMB', SVALUE => REC.SDOC_NUMB);
|
||||
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.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;
|
||||
/* Закрываем корень */
|
||||
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.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 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 => ' where F.NROW between :NROW_FROM and :NROW_TO');
|
||||
/* Разбираем его */
|
||||
|
Loading…
x
Reference in New Issue
Block a user