import { useMutation, useQueryClient } from '@tanstack/react-query'; import { api } from '../lib/api'; interface InvoicePayload { uuid: string; status: string } /** * صدور فاکتور یک مراجعه: ساخت idempotent (`POST /billing/invoices`) و سپس * نهایی‌سازی draft. خروجی mutation، uuid فاکتور است تا caller مودال «خلاصه * فاکتور» را باز کند. با recordUuid، لیست sessions همان بیمار invalidate * می‌شود تا invoice_uuid کارت‌ها به‌روز شود. */ export function useIssueInvoice(recordUuid?: string) { const qc = useQueryClient(); return useMutation({ mutationFn: async (sessionUuid: string): Promise => { const res = await api.post('/api/v1/billing/invoices', { session_uuid: sessionUuid }); const invoice = ((res as any)?.data?.data ?? (res as any)?.data) as InvoicePayload; if (invoice.status === 'draft') { await api.post(`/api/v1/billing/invoices/${invoice.uuid}/finalize`, {}); } return invoice.uuid; }, onSuccess: () => { if (recordUuid) qc.invalidateQueries({ queryKey: ['patient-sessions', recordUuid] }); qc.invalidateQueries({ queryKey: ['invoice'] }); }, }); }