41 lines
1.9 KiB
TypeScript
41 lines
1.9 KiB
TypeScript
import { api, apiFetchBlob } from '../../api/client';
|
|
import type {
|
|
CandidateOut,
|
|
ConsolidatedRowOut,
|
|
MapCounterpartyIn,
|
|
MapCounterpartyOut,
|
|
OsvFilters,
|
|
OsvSummaryOut,
|
|
Page,
|
|
} from '../../types/api';
|
|
|
|
export function buildOsvQuery(filters: OsvFilters, page?: { limit: number; offset: number }): string {
|
|
const params = new URLSearchParams();
|
|
if (filters.legal_entity_id) params.set('legal_entity_id', filters.legal_entity_id);
|
|
if (filters.account_root) params.set('account_root', filters.account_root);
|
|
if (filters.counterparty_type) params.set('counterparty_type', filters.counterparty_type);
|
|
if (filters.unmapped) params.set('unmapped', 'true');
|
|
if (filters.counterparty_id) params.set('counterparty_id', filters.counterparty_id);
|
|
const q = filters.q?.trim();
|
|
if (q) params.set('q', q);
|
|
if (page) {
|
|
params.set('limit', String(page.limit));
|
|
params.set('offset', String(page.offset));
|
|
}
|
|
const s = params.toString();
|
|
return s ? `?${s}` : '';
|
|
}
|
|
|
|
const base = (versionId: string) => `/consolidations/versions/${versionId}/osv`;
|
|
|
|
export const getConsolidatedOsv = (versionId: string, filters: OsvFilters, limit: number, offset: number) =>
|
|
api.get<Page<ConsolidatedRowOut>>(`${base(versionId)}${buildOsvQuery(filters, { limit, offset })}`);
|
|
export const getOsvSummary = (versionId: string) => api.get<OsvSummaryOut>(`${base(versionId)}/summary`);
|
|
export const exportOsv = (versionId: string, filters: OsvFilters) => apiFetchBlob(`${base(versionId)}/export${buildOsvQuery(filters)}`);
|
|
|
|
/** `query` — из `buildCandidatesQuery` (виджет ConsolidatedOsv). */
|
|
export const getCounterpartyCandidates = (versionId: string, query: string) =>
|
|
api.get<CandidateOut[]>(`/consolidations/versions/${versionId}/counterparty-candidates${query}`);
|
|
export const mapCounterparty = (versionId: string, entryId: string, body: MapCounterpartyIn) =>
|
|
api.post<MapCounterpartyOut>(`${base(versionId)}/entries/${entryId}/counterparty`, body);
|