diff --git a/app/resources/js/api/requisites.ts b/app/resources/js/api/requisites.ts new file mode 100644 index 00000000..9413ab0e --- /dev/null +++ b/app/resources/js/api/requisites.ts @@ -0,0 +1,48 @@ +import { apiClient, ensureCsrfCookie } from './client'; + +/** Реквизиты тенанта. Совпадает с RequisitesResource (бэкенд SP2). */ +export interface Requisites { + subject_type: 'individual' | 'sole_proprietor' | 'legal_entity' | null; + contact_name: string | null; + contact_phone: string | null; + inn: string | null; + legal_name: string | null; + kpp: string | null; + ogrn: string | null; + legal_address: string | null; + bank_name: string | null; + bank_bik: string | null; + bank_account: string | null; + corr_account: string | null; + requisites_completed_at: string | null; +} + +/** Ответ POST /lookup-inn (мягкая подтяжка по DaData). */ +export interface InnLookupResult { + found: boolean; + legal_name?: string; + kpp?: string; + ogrn?: string; + legal_address?: string; + subject_type_hint?: 'sole_proprietor' | 'legal_entity'; +} + +/** GET /api/tenant/requisites — null если ещё не заполнялись. */ +export async function getRequisites(): Promise { + const { data } = await apiClient.get('/api/tenant/requisites'); + return data.data ?? null; +} + +/** PUT /api/tenant/requisites — upsert, возвращает сохранённое. */ +export async function updateRequisites(payload: Partial): Promise { + await ensureCsrfCookie(); + const { data } = await apiClient.put('/api/tenant/requisites', payload); + return data.data; +} + +/** POST /api/tenant/requisites/lookup-inn — ничего не сохраняет. */ +export async function lookupInn(inn: string): Promise { + await ensureCsrfCookie(); + const { data } = await apiClient.post('/api/tenant/requisites/lookup-inn', { inn }); + return data; +}