diff --git a/dist/p8-panels.js b/dist/p8-panels.js index 1c111c6..14876b9 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -3656,7 +3656,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Projects: () => (/* binding */ Projects)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_fullscreen_dialog */ \"./app/components/p8p_fullscreen_dialog.js\");\n/* harmony import */ var _components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/p8p_chart */ \"./app/components/p8p_chart.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\n/* harmony import */ var _stages__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stages */ \"./app/panels/prj_fin/stages.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Список проктов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Полноэкранный диалог\n //График\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n //Список этапов проекта\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CHART: {\n maxHeight: \"300px\",\n display: \"flex\",\n justifyContent: \"center\"\n },\n CHART_PAPER: {\n height: \"100%\"\n },\n CHART_FAB: {\n position: \"absolute\",\n top: 80,\n left: 16\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список проектов\nconst Projects = () => {\n //Собственное состояние\n const [projectsDataGrid, setProjectsDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: null,\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true,\n selectedProject: null,\n stagesFilters: []\n });\n\n //Состояния графиков\n const [showCharts, setShowCharts] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [problemsChart, setProblemsChart] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n labels: [],\n datasets: []\n });\n const [customersChart, setCustomersChart] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n labels: [],\n datasets: []\n });\n const [costNotesChart, setCostNotesChart] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n labels: [],\n datasets: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_6__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDocument,\n pOnlineShowUnit,\n configSystemPageSize\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_7__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_8__[\"MessagingСtx\"]);\n\n //Загрузка данных проектов с сервера\n const loadProjects = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (projectsDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.LIST\",\n args: {\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(projectsDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(projectsDataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: projectsDataGrid.pageNumber,\n NPAGE_SIZE: configSystemPageSize,\n NINCLUDE_DEF: projectsDataGrid.dataLoaded ? 0 : 1\n },\n attributeValueProcessor: (name, val) => name == \"SGOVCNTRID\" ? undefined : val,\n respArg: \"COUT\"\n });\n setProjectsDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= configSystemPageSize\n }));\n }\n }, [projectsDataGrid.reload, projectsDataGrid.filters, projectsDataGrid.orders, projectsDataGrid.dataLoaded, projectsDataGrid.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);\n\n //Получение данных графиков\n const loadChartData = async () => {\n const problemsChart = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_PROBLEMS\",\n respArg: \"COUT\"\n });\n setProblemsChart(pv => ({\n ...pv,\n loaded: true,\n ...problemsChart.XCHART\n }));\n const customersChart = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_CUSTOMERS\",\n respArg: \"COUT\"\n });\n setCustomersChart(pv => ({\n ...pv,\n loaded: true,\n ...customersChart.XCHART\n }));\n const costNotesChart = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_FCCOSTNOTES\",\n respArg: \"COUT\"\n });\n setCostNotesChart(pv => ({\n ...pv,\n loaded: true,\n ...costNotesChart.XCHART\n }));\n };\n\n //Отображение журнала платежей по этапу проекта\n const showPayNotes = async ({\n sender,\n direction\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.SELECT_FIN\",\n args: {\n NRN: sender.NRN,\n NDIRECTION: direction\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PayNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение детализации точки графика затрат\n const showCostNotesChartDetail = async ({\n unitCode,\n year,\n month\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_FCCOSTNOTES_SELECT_COST\",\n args: {\n NYEAR: year,\n NMONTH: month\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode,\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение этапов проекта\n const showStages = ({\n sender,\n filters = []\n } = {}) => setProjectsDataGrid(pv => ({\n ...pv,\n selectedProject: {\n ...sender\n },\n stagesFilters: [...filters]\n }));\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setProjectsDataGrid(pv => ({\n ...pv,\n filters: [...filters],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setProjectsDataGrid(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setProjectsDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При закрытии списка этапов проекта\n const handleStagesClose = () => setProjectsDataGrid(pv => ({\n ...pv,\n selectedProject: null,\n stagesFilters: []\n }));\n\n //Отработка нажатия на график\n const handleChartClick = ({\n item\n }) => {\n if (item.SFILTER && item.SFILTER_VALUE) setProjectsDataGrid(pv => ({\n ...pv,\n filters: [{\n name: item.SFILTER,\n from: item.SFILTER_VALUE\n }],\n pageNumber: 1,\n reload: true\n }));\n if (item.SUNITCODE && item.NYEAR && item.NMONTH) showCostNotesChartDetail({\n unitCode: item.SUNITCODE,\n year: item.NYEAR,\n month: item.NMONTH\n });\n };\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadProjects();\n }, [projectsDataGrid.reload, loadProjects]);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadChartData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n container: true,\n spacing: 1\n }, showCharts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 4\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, problemsChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__.P8PChart, _extends({}, problemsChart, {\n onClick: handleChartClick,\n style: STYLES.CHART\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 4\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, customersChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__.P8PChart, _extends({}, customersChart, {\n onClick: handleChartClick,\n style: STYLES.CHART\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 4\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, costNotesChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__.P8PChart, _extends({}, costNotesChart, {\n onClick: handleChartClick,\n style: STYLES.CHART\n })) : null))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 12\n }, projectsDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_9__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: projectsDataGrid.columnsDef,\n rows: projectsDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n filtersInitial: projectsDataGrid.filters,\n morePages: projectsDataGrid.morePages,\n reloading: projectsDataGrid.reload,\n expandable: true,\n headCellRender: _layouts__WEBPACK_IMPORTED_MODULE_10__.headCellRender,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_10__.PANEL_UNITS.PROJECTS,\n showStages\n }),\n rowExpandRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.rowExpandRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_10__.PANEL_UNITS.PROJECTS,\n pOnlineShowDocument,\n showPayNotes,\n showStages\n }),\n valueFormatter: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.valueFormatter)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_10__.PANEL_UNITS.PROJECTS\n }),\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n })) : null, projectsDataGrid.selectedProject ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__.P8PFullScreenDialog, {\n title: `Этапы проекта \"${projectsDataGrid.selectedProject.SNAME_USL}\"`,\n onClose: handleStagesClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_stages__WEBPACK_IMPORTED_MODULE_11__.Stages, {\n project: projectsDataGrid.selectedProject.NRN,\n projectName: projectsDataGrid.selectedProject.SNAME_USL,\n filters: projectsDataGrid.stagesFilters\n })) : null)), problemsChart.loaded || customersChart.loaded || costNotesChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n size: \"small\",\n color: \"secondary\",\n sx: STYLES.CHART_FAB,\n onClick: () => setShowCharts(!showCharts)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], null, showCharts ? \"expand_less\" : \"expand_more\")) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/projects.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Projects: () => (/* binding */ Projects)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_fullscreen_dialog */ \"./app/components/p8p_fullscreen_dialog.js\");\n/* harmony import */ var _components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/p8p_chart */ \"./app/components/p8p_chart.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\n/* harmony import */ var _stages__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./stages */ \"./app/panels/prj_fin/stages.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Список проктов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Полноэкранный диалог\n //График\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n //Список этапов проекта\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CHART: {\n maxHeight: \"300px\",\n display: \"flex\",\n justifyContent: \"center\"\n },\n CHART_PAPER: {\n height: \"100%\"\n },\n CHART_FAB: {\n position: \"absolute\",\n top: 80,\n left: 16\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список проектов\nconst Projects = () => {\n //Собственное состояние\n const [projectsDataGrid, setProjectsDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: null,\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true,\n selectedProject: null,\n stagesFilters: []\n });\n\n //Состояния графиков\n const [showCharts, setShowCharts] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [problemsChart, setProblemsChart] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n labels: [],\n datasets: []\n });\n const [customersChart, setCustomersChart] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n labels: [],\n datasets: []\n });\n const [costNotesChart, setCostNotesChart] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n labels: [],\n datasets: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_6__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDocument,\n pOnlineShowUnit,\n configSystemPageSize\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_7__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_8__[\"MessagingСtx\"]);\n\n //Загрузка данных проектов с сервера\n const loadProjects = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (projectsDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.LIST\",\n args: {\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(projectsDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(projectsDataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: projectsDataGrid.pageNumber,\n NPAGE_SIZE: configSystemPageSize,\n NINCLUDE_DEF: projectsDataGrid.dataLoaded ? 0 : 1\n },\n attributeValueProcessor: (name, val) => name == \"SGOVCNTRID\" ? undefined : val,\n respArg: \"COUT\"\n });\n setProjectsDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= configSystemPageSize\n }));\n }\n }, [projectsDataGrid.reload, projectsDataGrid.filters, projectsDataGrid.orders, projectsDataGrid.dataLoaded, projectsDataGrid.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);\n\n //Получение данных графиков\n const loadChartData = async () => {\n const problemsChart = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_PROBLEMS\",\n respArg: \"COUT\"\n });\n setProblemsChart(pv => ({\n ...pv,\n loaded: true,\n ...problemsChart.XCHART\n }));\n const customersChart = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_CUSTOMERS\",\n respArg: \"COUT\"\n });\n setCustomersChart(pv => ({\n ...pv,\n loaded: true,\n ...customersChart.XCHART\n }));\n const costNotesChart = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_FCCOSTNOTES\",\n respArg: \"COUT\"\n });\n setCostNotesChart(pv => ({\n ...pv,\n loaded: true,\n ...costNotesChart.XCHART\n }));\n };\n\n //Отображение журнала платежей по этапу проекта\n const showPayNotes = async ({\n sender,\n direction\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.SELECT_FIN\",\n args: {\n NRN: sender.NRN,\n NDIRECTION: direction\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PayNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение детализации точки графика затрат\n const showCostNotesChartDetail = async ({\n year,\n month\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.CHART_FCCOSTNOTES_SELECT_COST\",\n args: {\n NYEAR: year,\n NMONTH: month\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"CostNotes\",\n inputParameters: [{\n name: \"in_IDENT\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение этапов проекта\n const showStages = ({\n sender,\n filters = []\n } = {}) => setProjectsDataGrid(pv => ({\n ...pv,\n selectedProject: {\n ...sender\n },\n stagesFilters: [...filters]\n }));\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setProjectsDataGrid(pv => ({\n ...pv,\n filters: [...filters],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setProjectsDataGrid(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setProjectsDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При закрытии списка этапов проекта\n const handleStagesClose = () => setProjectsDataGrid(pv => ({\n ...pv,\n selectedProject: null,\n stagesFilters: []\n }));\n\n //Отработка нажатия на график\n const handleChartClick = ({\n item\n }) => {\n if (item.SFILTER && item.SFILTER_VALUE) setProjectsDataGrid(pv => ({\n ...pv,\n filters: [{\n name: item.SFILTER,\n from: item.SFILTER_VALUE\n }],\n pageNumber: 1,\n reload: true\n }));\n if (item.SUNITCODE == \"CostNotes\" && item.NYEAR && item.NMONTH) showCostNotesChartDetail({\n year: item.NYEAR,\n month: item.NMONTH\n });\n };\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadProjects();\n }, [projectsDataGrid.reload, loadProjects]);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadChartData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n container: true,\n spacing: 1\n }, showCharts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 4\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, problemsChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__.P8PChart, _extends({}, problemsChart, {\n onClick: handleChartClick,\n style: STYLES.CHART\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 4\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, customersChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__.P8PChart, _extends({}, customersChart, {\n onClick: handleChartClick,\n style: STYLES.CHART\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 4\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n elevation: 3,\n sx: STYLES.CHART_PAPER\n }, costNotesChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_chart__WEBPACK_IMPORTED_MODULE_5__.P8PChart, _extends({}, costNotesChart, {\n onClick: handleChartClick,\n style: STYLES.CHART\n })) : null))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 12\n }, projectsDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_9__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: projectsDataGrid.columnsDef,\n rows: projectsDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n filtersInitial: projectsDataGrid.filters,\n morePages: projectsDataGrid.morePages,\n reloading: projectsDataGrid.reload,\n expandable: true,\n headCellRender: _layouts__WEBPACK_IMPORTED_MODULE_10__.headCellRender,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_10__.PANEL_UNITS.PROJECTS,\n showStages\n }),\n rowExpandRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.rowExpandRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_10__.PANEL_UNITS.PROJECTS,\n pOnlineShowDocument,\n showPayNotes,\n showStages\n }),\n valueFormatter: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_10__.valueFormatter)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_10__.PANEL_UNITS.PROJECTS\n }),\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n })) : null, projectsDataGrid.selectedProject ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__.P8PFullScreenDialog, {\n title: `Этапы проекта \"${projectsDataGrid.selectedProject.SNAME_USL}\"`,\n onClose: handleStagesClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_stages__WEBPACK_IMPORTED_MODULE_11__.Stages, {\n project: projectsDataGrid.selectedProject.NRN,\n projectName: projectsDataGrid.selectedProject.SNAME_USL,\n filters: projectsDataGrid.stagesFilters\n })) : null)), problemsChart.loaded || customersChart.loaded || costNotesChart.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n size: \"small\",\n color: \"secondary\",\n sx: STYLES.CHART_FAB,\n onClick: () => setShowCharts(!showCharts)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], null, showCharts ? \"expand_less\" : \"expand_more\")) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/projects.js?"); /***/ }), @@ -3667,7 +3667,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StageArts: () => (/* binding */ StageArts)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Калькуляция этапа проекта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n\n//-----------\n//Тело модуля\n//-----------\n\n//Калькуляция этапа проекта\nconst StageArts = ({\n stage,\n filters\n}) => {\n //Собственное состояние\n const [stageArtsDataGrid, setStageArtsDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: [...filters],\n rows: [],\n reload: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_4__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowUnit\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_5__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_6__[\"MessagingСtx\"]);\n\n //Загрузка данных калькуляции этапа с сервера\n const loadStageArts = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (stageArtsDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_ARTS_LIST\",\n args: {\n NSTAGE: stage,\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stageArtsDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NINCLUDE_DEF: stageArtsDataGrid.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\"\n });\n setStageArtsDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: [...(data.XROWS || [])],\n dataLoaded: true,\n reload: false\n }));\n }\n }, [stage, stageArtsDataGrid.reload, stageArtsDataGrid.filters, stageArtsDataGrid.dataLoaded, executeStored, SERV_DATA_TYPE_CLOB]);\n\n //Отображение журнала затрат по статье калькуляции\n const showCostNotes = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_ARTS_SELECT_COST_FACT\",\n args: {\n NSTAGE: stage,\n NFPDARTCL: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"CostNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение договоров по статье калькуляции\n const showContracts = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_ARTS_SELECT_CONTR\",\n args: {\n NSTAGE: stage,\n NFPDARTCL: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"Contracts\",\n inputParameters: [{\n name: \"in_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setStageArtsDataGrid(pv => ({\n ...pv,\n filters,\n reload: true\n }));\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadStageArts();\n }, [stageArtsDataGrid.reload, loadStageArts]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n pt: 2\n }, stageArtsDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: stageArtsDataGrid.columnsDef,\n filtersInitial: filters,\n rows: stageArtsDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: false,\n reloading: stageArtsDataGrid.reload,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_8__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_8__.PANEL_UNITS.PROJECT_STAGE_ARTS,\n showCostNotes,\n showContracts\n }),\n valueFormatter: _layouts__WEBPACK_IMPORTED_MODULE_8__.valueFormatter,\n onFilterChanged: handleFilterChanged\n })) : null);\n};\n\n//Контроль свойств - Калькуляция этапа проекта\nStageArts.propTypes = {\n stage: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_FILTER_SHAPE)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/stage_arts.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StageArts: () => (/* binding */ StageArts)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Калькуляция этапа проекта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n\n//-----------\n//Тело модуля\n//-----------\n\n//Калькуляция этапа проекта\nconst StageArts = ({\n stage,\n filters\n}) => {\n //Собственное состояние\n const [stageArtsDataGrid, setStageArtsDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: [...filters],\n rows: [],\n reload: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_4__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowUnit\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_5__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_6__[\"MessagingСtx\"]);\n\n //Загрузка данных калькуляции этапа с сервера\n const loadStageArts = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (stageArtsDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_ARTS_LIST\",\n args: {\n NSTAGE: stage,\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stageArtsDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NINCLUDE_DEF: stageArtsDataGrid.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\"\n });\n setStageArtsDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: [...(data.XROWS || [])],\n dataLoaded: true,\n reload: false\n }));\n }\n }, [stage, stageArtsDataGrid.reload, stageArtsDataGrid.filters, stageArtsDataGrid.dataLoaded, executeStored, SERV_DATA_TYPE_CLOB]);\n\n //Отображение журнала затрат по статье калькуляции\n const showCostNotes = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_ARTS_SELECT_COST_FACT\",\n args: {\n NSTAGE: stage,\n NFPDARTCL: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"CostNotes\",\n inputParameters: [{\n name: \"in_IDENT\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение договоров по статье калькуляции\n const showContracts = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_ARTS_SELECT_CONTR\",\n args: {\n NSTAGE: stage,\n NFPDARTCL: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"Contracts\",\n inputParameters: [{\n name: \"in_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setStageArtsDataGrid(pv => ({\n ...pv,\n filters,\n reload: true\n }));\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadStageArts();\n }, [stageArtsDataGrid.reload, loadStageArts]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n pt: 2\n }, stageArtsDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: stageArtsDataGrid.columnsDef,\n filtersInitial: filters,\n rows: stageArtsDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: false,\n reloading: stageArtsDataGrid.reload,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_8__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_8__.PANEL_UNITS.PROJECT_STAGE_ARTS,\n showCostNotes,\n showContracts\n }),\n valueFormatter: _layouts__WEBPACK_IMPORTED_MODULE_8__.valueFormatter,\n onFilterChanged: handleFilterChanged\n })) : null);\n};\n\n//Контроль свойств - Калькуляция этапа проекта\nStageArts.propTypes = {\n stage: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_FILTER_SHAPE)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/stage_arts.js?"); /***/ }), @@ -3678,7 +3678,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StageContracts: () => (/* binding */ StageContracts)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Договоры с соисполнителями этапа проекта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n\n//-----------\n//Тело модуля\n//-----------\n\n//Договоры с соисполнителями этапа проекта\nconst StageContracts = ({\n stage,\n filters\n}) => {\n //Собственное состояние\n const [stageContractsDataGrid, setStageContractsDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: [...filters],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_4__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDocument,\n pOnlineShowUnit,\n configSystemPageSize\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_5__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_6__[\"MessagingСtx\"]);\n\n //Загрузка данных этапов с сервера\n const loadStageContracts = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (stageContractsDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_LIST\",\n args: {\n NSTAGE: stage,\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stageContractsDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stageContractsDataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: stageContractsDataGrid.pageNumber,\n NPAGE_SIZE: configSystemPageSize,\n NINCLUDE_DEF: stageContractsDataGrid.dataLoaded ? 0 : 1\n },\n attributeValueProcessor: (name, val) => name == \"SGOVCNTRID\" ? undefined : val,\n respArg: \"COUT\"\n });\n setStageContractsDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= configSystemPageSize\n }));\n }\n }, [stage, stageContractsDataGrid.reload, stageContractsDataGrid.filters, stageContractsDataGrid.orders, stageContractsDataGrid.dataLoaded, stageContractsDataGrid.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);\n\n //Отображение выходящих счетов на оплату от соисполнителя этапа\n const showPaymentAccountsIn = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_SELECT_PAY_IN\",\n args: {\n NPROJECTSTAGEPF: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PaymentAccountsIn\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение фактических платежей соисполнителю этапа\n const showPayNotes = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_SELECT_FIN_OUT\",\n args: {\n NPROJECTSTAGEPF: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PayNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение приходных накладных от соисполнителя этапа\n const showIncomingInvoices = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_SELECT_ININV\",\n args: {\n NPROJECTSTAGEPF: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"IncomingInvoices\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setStageContractsDataGrid(pv => ({\n ...pv,\n filters,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setStageContractsDataGrid(pv => ({\n ...pv,\n orders,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setStageContractsDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadStageContracts();\n }, [stageContractsDataGrid.reload, loadStageContracts]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n pt: 2\n }, stageContractsDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: stageContractsDataGrid.columnsDef,\n filtersInitial: filters,\n rows: stageContractsDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: stageContractsDataGrid.morePages,\n reloading: stageContractsDataGrid.reload,\n expandable: true,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_8__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_8__.PANEL_UNITS.PROJECT_STAGE_CONTRACTS,\n pOnlineShowDocument\n }),\n rowExpandRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_8__.rowExpandRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_8__.PANEL_UNITS.PROJECT_STAGE_CONTRACTS,\n pOnlineShowDocument,\n showPaymentAccountsIn,\n showPayNotes,\n showIncomingInvoices\n }),\n valueFormatter: _layouts__WEBPACK_IMPORTED_MODULE_8__.valueFormatter,\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n })) : null);\n};\n\n//Контроль свойств - Договоры с соисполнителями этапа проекта\nStageContracts.propTypes = {\n stage: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_FILTER_SHAPE)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/stage_contracts.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StageContracts: () => (/* binding */ StageContracts)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Договоры с соисполнителями этапа проекта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n\n//-----------\n//Тело модуля\n//-----------\n\n//Договоры с соисполнителями этапа проекта\nconst StageContracts = ({\n stage,\n filters\n}) => {\n //Собственное состояние\n const [stageContractsDataGrid, setStageContractsDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: [...filters],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_4__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDocument,\n pOnlineShowUnit,\n configSystemPageSize\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_5__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_6__[\"MessagingСtx\"]);\n\n //Загрузка данных этапов с сервера\n const loadStageContracts = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (stageContractsDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_LIST\",\n args: {\n NSTAGE: stage,\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stageContractsDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stageContractsDataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: stageContractsDataGrid.pageNumber,\n NPAGE_SIZE: configSystemPageSize,\n NINCLUDE_DEF: stageContractsDataGrid.dataLoaded ? 0 : 1\n },\n attributeValueProcessor: (name, val) => name == \"SGOVCNTRID\" ? undefined : val,\n respArg: \"COUT\"\n });\n setStageContractsDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= configSystemPageSize\n }));\n }\n }, [stage, stageContractsDataGrid.reload, stageContractsDataGrid.filters, stageContractsDataGrid.orders, stageContractsDataGrid.dataLoaded, stageContractsDataGrid.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);\n\n //Отображение выходящих счетов на оплату от соисполнителя этапа\n const showPaymentAccountsIn = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_SELECT_PAY_IN\",\n args: {\n NPROJECTSTAGEPF: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PaymentAccountsIn\",\n inputParameters: [{\n name: \"in_IDENT\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение фактических платежей соисполнителю этапа\n const showPayNotes = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_SELECT_FIN_OUT\",\n args: {\n NPROJECTSTAGEPF: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PayNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение приходных накладных от соисполнителя этапа\n const showIncomingInvoices = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_SELECT_ININV\",\n args: {\n NPROJECTSTAGEPF: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"IncomingInvoices\",\n inputParameters: [{\n name: \"in_IDENT\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setStageContractsDataGrid(pv => ({\n ...pv,\n filters,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setStageContractsDataGrid(pv => ({\n ...pv,\n orders,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setStageContractsDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadStageContracts();\n }, [stageContractsDataGrid.reload, loadStageContracts]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n pt: 2\n }, stageContractsDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: stageContractsDataGrid.columnsDef,\n filtersInitial: filters,\n rows: stageContractsDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: stageContractsDataGrid.morePages,\n reloading: stageContractsDataGrid.reload,\n expandable: true,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_8__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_8__.PANEL_UNITS.PROJECT_STAGE_CONTRACTS,\n pOnlineShowDocument\n }),\n rowExpandRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_8__.rowExpandRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_8__.PANEL_UNITS.PROJECT_STAGE_CONTRACTS,\n pOnlineShowDocument,\n showPaymentAccountsIn,\n showPayNotes,\n showIncomingInvoices\n }),\n valueFormatter: _layouts__WEBPACK_IMPORTED_MODULE_8__.valueFormatter,\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n })) : null);\n};\n\n//Контроль свойств - Договоры с соисполнителями этапа проекта\nStageContracts.propTypes = {\n stage: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_FILTER_SHAPE)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/stage_contracts.js?"); /***/ }), @@ -3689,7 +3689,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Stages: () => (/* binding */ Stages)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_fullscreen_dialog */ \"./app/components/p8p_fullscreen_dialog.js\");\n/* harmony import */ var _stage_arts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stage_arts */ \"./app/panels/prj_fin/stage_arts.js\");\n/* harmony import */ var _stage_contracts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stage_contracts */ \"./app/panels/prj_fin/stage_contracts.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Список этапов проекта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Полноэкранный диалог\n //Калькуляция этапа проекта\n //Договоры с соисполнителями этапа проекта\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список этапов проекта\nconst Stages = ({\n project,\n projectName,\n filters\n}) => {\n //Собственное состояние\n const [stagesDataGrid, setStagesDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: [...filters],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true,\n selectedStageNumb: null,\n showStageArts: null,\n stageArtsFilters: [],\n showStageContracts: null,\n stageContractsFilters: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_7__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDocument,\n pOnlineShowUnit,\n configSystemPageSize\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_8__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_9__[\"MessagingСtx\"]);\n\n //Загрузка данных этапов с сервера\n const loadStages = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (stagesDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_LIST\",\n args: {\n NPRN: project,\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stagesDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stagesDataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: stagesDataGrid.pageNumber,\n NPAGE_SIZE: configSystemPageSize,\n NINCLUDE_DEF: stagesDataGrid.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\"\n });\n setStagesDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= configSystemPageSize\n }));\n }\n }, [project, stagesDataGrid.reload, stagesDataGrid.filters, stagesDataGrid.orders, stagesDataGrid.dataLoaded, stagesDataGrid.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);\n\n //Отображение журнала платежей по этапу проекта\n const showPayNotes = async ({\n sender,\n direction\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_SELECT_FIN\",\n args: {\n NRN: sender.NRN,\n NDIRECTION: direction\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PayNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение журнала затрат по этапу проекта\n const showCostNotes = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_SELECT_COST_FACT\",\n args: {\n NRN: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"CostNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение расходных накладных на отпуск потребителям по этапу проекта\n const showGoodsTransInvoicesToConsumers = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_SELECT_SUMM_REALIZ\",\n args: {\n NRN: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"GoodsTransInvoicesToConsumers\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение статей калькуляции по этапу проекта\n const showStageArts = ({\n sender,\n filters = []\n } = {}) => setStagesDataGrid(pv => ({\n ...pv,\n showStageArts: sender.NRN,\n selectedStageNumb: sender.SNUMB,\n stageArtsFilters: [...filters]\n }));\n\n //Отображение договоров с соисполнителями по этапу проекта\n const showContracts = ({\n sender,\n filters = []\n } = {}) => setStagesDataGrid(pv => ({\n ...pv,\n showStageContracts: sender.NRN,\n selectedStageNumb: sender.SNUMB,\n stageContractsFilters: [...filters]\n }));\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setStagesDataGrid(pv => ({\n ...pv,\n filters,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setStagesDataGrid(pv => ({\n ...pv,\n orders,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setStagesDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При закрытии списка договоров этапа\n const handleStageContractsClose = () => setStagesDataGrid(pv => ({\n ...pv,\n showStageContracts: null,\n stageContractsFilters: []\n }));\n\n //При закрытии калькуляции этапа\n const handleStageArtsClose = () => setStagesDataGrid(pv => ({\n ...pv,\n showStageArts: null,\n stageArtsFilters: []\n }));\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadStages();\n }, [stagesDataGrid.reload, loadStages]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n pt: 2\n }, stagesDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_10__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: stagesDataGrid.columnsDef,\n filtersInitial: filters,\n rows: stagesDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: stagesDataGrid.morePages,\n reloading: stagesDataGrid.reload,\n expandable: true,\n headCellRender: _layouts__WEBPACK_IMPORTED_MODULE_11__.headCellRender,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_11__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_11__.PANEL_UNITS.PROJECT_STAGES,\n showStageArts,\n showContracts\n }),\n rowExpandRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_11__.rowExpandRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_11__.PANEL_UNITS.PROJECT_STAGES,\n pOnlineShowDocument,\n showStageArts,\n showContracts,\n showPayNotes,\n showCostNotes,\n showGoodsTransInvoicesToConsumers\n }),\n valueFormatter: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_11__.valueFormatter)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_11__.PANEL_UNITS.PROJECT_STAGES\n }),\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n })) : null, stagesDataGrid.showStageContracts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__.P8PFullScreenDialog, {\n title: `Договоры этапа \"${stagesDataGrid.selectedStageNumb}\" проекта \"${projectName}\"`,\n onClose: handleStageContractsClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_stage_contracts__WEBPACK_IMPORTED_MODULE_6__.StageContracts, {\n stage: stagesDataGrid.showStageContracts,\n filters: stagesDataGrid.stageContractsFilters\n })) : null, stagesDataGrid.showStageArts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__.P8PFullScreenDialog, {\n title: `Калькуляция этапа \"${stagesDataGrid.selectedStageNumb}\" проекта \"${projectName}\"`,\n onClose: handleStageArtsClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_stage_arts__WEBPACK_IMPORTED_MODULE_5__.StageArts, {\n stage: stagesDataGrid.showStageArts,\n filters: stagesDataGrid.stageArtsFilters\n })) : null);\n};\n\n//Контроль свойств - Список этапов проекта\nStages.propTypes = {\n project: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number).isRequired,\n projectName: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_FILTER_SHAPE)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/stages.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Stages: () => (/* binding */ Stages)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_fullscreen_dialog */ \"./app/components/p8p_fullscreen_dialog.js\");\n/* harmony import */ var _stage_arts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./stage_arts */ \"./app/panels/prj_fin/stage_arts.js\");\n/* harmony import */ var _stage_contracts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stage_contracts */ \"./app/panels/prj_fin/stage_contracts.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./layouts */ \"./app/panels/prj_fin/layouts.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Экономика проектов\r\n Панель мониторинга: Список этапов проекта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вспомогательные процедуры и функции\n //Тектовые ресурсы и константы\n //Таблица данных\n //Полноэкранный диалог\n //Калькуляция этапа проекта\n //Договоры с соисполнителями этапа проекта\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Дополнительная разметка и вёрстка клиентских элементов\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список этапов проекта\nconst Stages = ({\n project,\n projectName,\n filters\n}) => {\n //Собственное состояние\n const [stagesDataGrid, setStagesDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n filters: [...filters],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true,\n selectedStageNumb: null,\n showStageArts: null,\n stageArtsFilters: [],\n showStageContracts: null,\n stageContractsFilters: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_7__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDocument,\n pOnlineShowUnit,\n configSystemPageSize\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_8__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_9__[\"MessagingСtx\"]);\n\n //Загрузка данных этапов с сервера\n const loadStages = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (stagesDataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_LIST\",\n args: {\n NPRN: project,\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stagesDataGrid.filters, {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_1__.object2Base64XML)(stagesDataGrid.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: stagesDataGrid.pageNumber,\n NPAGE_SIZE: configSystemPageSize,\n NINCLUDE_DEF: stagesDataGrid.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\"\n });\n setStagesDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= configSystemPageSize\n }));\n }\n }, [project, stagesDataGrid.reload, stagesDataGrid.filters, stagesDataGrid.orders, stagesDataGrid.dataLoaded, stagesDataGrid.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]);\n\n //Отображение журнала платежей по этапу проекта\n const showPayNotes = async ({\n sender,\n direction\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_SELECT_FIN\",\n args: {\n NRN: sender.NRN,\n NDIRECTION: direction\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"PayNotes\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение журнала затрат по этапу проекта\n const showCostNotes = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_SELECT_COST_FACT\",\n args: {\n NRN: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"CostNotes\",\n inputParameters: [{\n name: \"in_IDENT\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение расходных накладных на отпуск потребителям по этапу проекта\n const showGoodsTransInvoicesToConsumers = async ({\n sender\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_PROJECTS.STAGES_SELECT_SUMM_REALIZ\",\n args: {\n NRN: sender.NRN\n }\n });\n if (data.NIDENT) pOnlineShowUnit({\n unitCode: \"GoodsTransInvoicesToConsumers\",\n inputParameters: [{\n name: \"in_IDENT\",\n value: data.NIDENT\n }]\n });else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_2__.TEXTS.NO_DATA_FOUND);\n };\n\n //Отображение статей калькуляции по этапу проекта\n const showStageArts = ({\n sender,\n filters = []\n } = {}) => setStagesDataGrid(pv => ({\n ...pv,\n showStageArts: sender.NRN,\n selectedStageNumb: sender.SNUMB,\n stageArtsFilters: [...filters]\n }));\n\n //Отображение договоров с соисполнителями по этапу проекта\n const showContracts = ({\n sender,\n filters = []\n } = {}) => setStagesDataGrid(pv => ({\n ...pv,\n showStageContracts: sender.NRN,\n selectedStageNumb: sender.SNUMB,\n stageContractsFilters: [...filters]\n }));\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n filters\n }) => setStagesDataGrid(pv => ({\n ...pv,\n filters,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setStagesDataGrid(pv => ({\n ...pv,\n orders,\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setStagesDataGrid(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При закрытии списка договоров этапа\n const handleStageContractsClose = () => setStagesDataGrid(pv => ({\n ...pv,\n showStageContracts: null,\n stageContractsFilters: []\n }));\n\n //При закрытии калькуляции этапа\n const handleStageArtsClose = () => setStagesDataGrid(pv => ({\n ...pv,\n showStageArts: null,\n stageArtsFilters: []\n }));\n\n //При необходимости обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadStages();\n }, [stagesDataGrid.reload, loadStages]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n pt: 2\n }, stagesDataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_10__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: stagesDataGrid.columnsDef,\n filtersInitial: filters,\n rows: stagesDataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: stagesDataGrid.morePages,\n reloading: stagesDataGrid.reload,\n expandable: true,\n headCellRender: _layouts__WEBPACK_IMPORTED_MODULE_11__.headCellRender,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_11__.dataCellRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_11__.PANEL_UNITS.PROJECT_STAGES,\n showStageArts,\n showContracts\n }),\n rowExpandRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_11__.rowExpandRender)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_11__.PANEL_UNITS.PROJECT_STAGES,\n pOnlineShowDocument,\n showStageArts,\n showContracts,\n showPayNotes,\n showCostNotes,\n showGoodsTransInvoicesToConsumers\n }),\n valueFormatter: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_11__.valueFormatter)({\n ...prms,\n panelUnit: _layouts__WEBPACK_IMPORTED_MODULE_11__.PANEL_UNITS.PROJECT_STAGES\n }),\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n })) : null, stagesDataGrid.showStageContracts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__.P8PFullScreenDialog, {\n title: `Договоры этапа \"${stagesDataGrid.selectedStageNumb}\" проекта \"${projectName}\"`,\n onClose: handleStageContractsClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_stage_contracts__WEBPACK_IMPORTED_MODULE_6__.StageContracts, {\n stage: stagesDataGrid.showStageContracts,\n filters: stagesDataGrid.stageContractsFilters\n })) : null, stagesDataGrid.showStageArts ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_fullscreen_dialog__WEBPACK_IMPORTED_MODULE_4__.P8PFullScreenDialog, {\n title: `Калькуляция этапа \"${stagesDataGrid.selectedStageNumb}\" проекта \"${projectName}\"`,\n onClose: handleStageArtsClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_stage_arts__WEBPACK_IMPORTED_MODULE_5__.StageArts, {\n stage: stagesDataGrid.showStageArts,\n filters: stagesDataGrid.stageArtsFilters\n })) : null);\n};\n\n//Контроль свойств - Список этапов проекта\nStages.propTypes = {\n project: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number).isRequired,\n projectName: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_FILTER_SHAPE)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/prj_fin/stages.js?"); /***/ }),