- добавлен фильтр по документам - в запрос на загрузку добавлен параметр documents - Labeled вынесен в components/, убраны дубли в шахматке, таблице корректировок
26 lines
2.1 KiB
TypeScript
26 lines
2.1 KiB
TypeScript
import { api, apiFetchBlob } from '../../api/client';
|
||
import type { ConsolidationCreate, VersionStatusUpdate } from '../../types/api';
|
||
import type { LockOut } from '../../types/consolidations/common_types';
|
||
import type { IConsolidation } from '../../types/consolidations/consolidations';
|
||
import type { ChecklistBackendShape, VersionCard } from '../../types/consolidations/version_members';
|
||
|
||
/** Список консолидаций ГК; `in_work_only` — серверный фильтр «Только в работе» (по умолчанию false). */
|
||
export const getConsolidations = (groupId: string, in_work_only: boolean) =>
|
||
api.get<IConsolidation[]>(`/company-groups/${groupId}/consolidations`, { in_work_only });
|
||
export const getVersionCard = (versionId: string) => api.get<VersionCard>(`/consolidations/versions/${versionId}`);
|
||
export const createConsolidation = (body: ConsolidationCreate) => api.post<VersionCard>('/consolidations', body);
|
||
/** CSV чек-листа; `documents` — отбор колонок (`BALANCE,INCOME,OSV:01`), не задан — вся матрица. */
|
||
export const downloadChecklistCsv = (versionId: string, documents?: string) => {
|
||
const params = new URLSearchParams({ format: 'csv' });
|
||
if (documents) params.set('documents', documents);
|
||
return apiFetchBlob(`/consolidations/versions/${versionId}/checklist?${params}`);
|
||
};
|
||
export const getChecklist = (versionId: string) => api.get<ChecklistBackendShape>(`/consolidations/versions/${versionId}/checklist`);
|
||
/** «Взять в работу»: 201 — взята, 200 — уже ваша; чужая — 409 `LOCKED_BY_OTHER` (перехват — с `takeover_reason`). */
|
||
export const lockVersion = (versionId: string, reason?: string | null) =>
|
||
api.post<LockOut>(`/consolidations/versions/${versionId}/lock`, reason ? { takeover_reason: reason } : {});
|
||
|
||
/** Ручная смена статуса (гайд §5.7): нужна своя блокировка; ответ — карточка версии с новым статусом. */
|
||
export const updateStatus = (versionId: string, body: VersionStatusUpdate) =>
|
||
api.post<VersionCard>(`/consolidations/versions/${versionId}/status`, body);
|