diff --git a/src/layouts/ConsolidationsList.tsx b/src/layouts/ConsolidationsList.tsx
index 489c34d..a641d46 100644
--- a/src/layouts/ConsolidationsList.tsx
+++ b/src/layouts/ConsolidationsList.tsx
@@ -1,5 +1,7 @@
+import { message } from 'antd';
import { useEffect, useState } from 'react';
-import { useParams } from 'react-router-dom';
+import { useParams, useSearchParams } from 'react-router-dom';
+import { ApiError } from '../api/client';
import PageTitle from '../components/PageTitle';
import { fetchOneCompanyGroup } from '../services/api/directories/company_groups';
import { setSelectedVersion } from '../store/slices/consolidations/consolidationsSlice';
@@ -12,6 +14,8 @@ import { DocumentsDrawer } from '../widgets/FilesDrawer/FilesDrawer';
export function ConsolidationPage() {
const [drawerOpen, setDrawerOpen] = useState(false);
const { group_id } = useParams();
+ const [searchParams] = useSearchParams();
+ const versionParam = searchParams.get('version');
const dispatch = useAppDispatch();
const [comGroupName, setComGroupName] = useState('');
@@ -21,17 +25,22 @@ export function ConsolidationPage() {
useEffect(() => {
if (!group_id) return;
async function getAllInfo(id: string) {
- const data = await fetchOneCompanyGroup(id);
- setComGroupName(data.name);
- setLocationPath(`Отчетность>${data.name}>Консолидации`);
- setDesc(`${data.legal_entities_count} организаций`);
- dispatch(getConsolidationsListThunk(id));
+ try {
+ const data = await fetchOneCompanyGroup(id);
+ setComGroupName(data.name);
+ setLocationPath(`Отчетность>${data.name}>Консолидации`);
+ setDesc(`${data.legal_entities_count} организаций`);
+ await dispatch(getConsolidationsListThunk(id));
+ if (versionParam) dispatch(setSelectedVersion(versionParam));
+ } catch (e: unknown) {
+ message.error(e instanceof ApiError ? e.message : 'Не удалось загрузить группу компаний');
+ }
}
getAllInfo(group_id);
return () => {
dispatch(setSelectedVersion(null));
};
- }, [dispatch, group_id]);
+ }, [dispatch, group_id, versionParam]);
return (
{
+ it('строка ЮЛ со статусами ББ/ОФР и загруженными ОСВ', () => {
+ expect(normalizeData(card)).toEqual([
+ {
+ id: 'le1',
+ name: 'АО "Русский бисквит"',
+ inn: '3528052718',
+ version_id: 'v1',
+ entity_type: 'ЮЛ',
+ bb_status: 'Требуется проверка',
+ ofr_status: 'Отсутствует',
+ uploaded_osvs: '60, 62',
+ },
+ ]);
+ });
+ it('null — пусто', () => {
+ expect(normalizeData(null)).toEqual([]);
+ });
+});
diff --git a/src/widgets/ConsoleTable/ConsoleTable.tsx b/src/widgets/ConsoleTable/ConsoleTable.tsx
index 1270094..3ce387b 100644
--- a/src/widgets/ConsoleTable/ConsoleTable.tsx
+++ b/src/widgets/ConsoleTable/ConsoleTable.tsx
@@ -1,8 +1,8 @@
-import { ArrowRightOutlined, DownOutlined, IdcardOutlined, MoreOutlined, RightOutlined } from '@ant-design/icons';
-import { Button, Dropdown, Space } from 'antd';
+import { ArrowRightOutlined, DownOutlined, MoreOutlined, RightOutlined } from '@ant-design/icons';
+import { Button, Dropdown, Space, message } from 'antd';
import type { ColumnsType, TableProps } from 'antd/es/table';
import { memo, useCallback, useMemo } from 'react';
-import { useNavigate } from 'react-router-dom';
+import { useNavigate, useParams } from 'react-router-dom';
import { ColumnSettings, DataTable, type TableConfig, isGroup, useFilteredRows, useVisibleColumns } from '../../components/GenericTable';
import { useTableFilters } from '../../components/GenericTable/useTableFilters';
import { setSelectedVersion } from '../../store/slices/consolidations/consolidationsSlice';
@@ -44,6 +44,7 @@ const RowActions = memo(function RowActions({
});
export function ConsoleTableWidget() {
const navigate = useNavigate();
+ const { group_id } = useParams();
const dispatch = useAppDispatch();
const consolidations = useAppSelector((s) => s.consolidations.consolidations);
const loading = useAppSelector((s) => s.consolidations.loading);
@@ -109,7 +110,7 @@ export function ConsoleTableWidget() {
if (key === 'history') {
navigate('/logging');
} else {
- alert('Не реализовано');
+ message.info('Будет позже');
}
},
[navigate],
@@ -122,10 +123,7 @@ export function ConsoleTableWidget() {
width: 120,
render: (_: unknown, row: ConsRow) => (
-
} onClick={() => alert('Не реализован')}>
- Взять в работу
-
-
-
{
setModalOpen(false);
}}
onOk={async (values) => {
- await createConsolidation({
- ...values,
- quarter: values.quarter as 'Q1' | 'Q2' | 'Q3' | 'Q4',
- });
+ const card = await createConsolidation(values);
setModalOpen(false);
+ message.success(`Создана консолидация ${values.year} ${values.quarter}`);
+ navigate(`/groups/${values.company_group_id}?version=${card.id}`);
}}
/>