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>(`${base(versionId)}${buildOsvQuery(filters, { limit, offset })}`); export const getOsvSummary = (versionId: string) => api.get(`${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(`/consolidations/versions/${versionId}/counterparty-candidates${query}`); export const mapCounterparty = (versionId: string, entryId: string, body: MapCounterpartyIn) => api.post(`${base(versionId)}/entries/${entryId}/counterparty`, body);