export type JsonNode = Record; export type DishIikoResponse = {category?: string | undefined, categoryId?: string | undefined, checkNumber?: string | undefined, count: number, dishId?: string | undefined, linked?: boolean | undefined, linkedTo?: string | undefined, name?: string | undefined, orderNumber?: string | undefined, positionId?: string | undefined, sum: string, taxCategory?: string | undefined, taxCategoryId?: string | undefined, type?: string | undefined}; export type GuestIikoResponse = {dishes: Array, name?: string | undefined}; export type IikoOrderResponse = {billId?: string | undefined, bonusSum?: number | undefined, created?: string | undefined, discounts?: JsonNode | undefined, guests: Array, isBanquetOrder?: boolean | undefined, isDelivery?: boolean | undefined, orderNumber: string, paymentType?: string | undefined, pricingTime?: string | undefined, rawSum?: number | undefined, rootBillId?: string | undefined, splitAvailable?: boolean | undefined, state?: string | undefined, tableId?: string | undefined, totalSum: number, waiter?: string | undefined, waiterId?: string | undefined, billAmountForTips?: number | undefined}; export type GetBillContentsResponse = {errorCode?: string | undefined, errorMessage?: string | undefined, orders?: Array | undefined, rID?: string | undefined, state: 'FAIL' | 'SUCCESS', substate?: string | undefined, tableNumber?: number | undefined}; export type CreateApicallbackSplitOrderArgs = {restoId: string, body: GetBillContentsResponse}; export type CreateApicallbackSplitOrderOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; /** * Сервіс для отримання результатів розділення рахунку * * POST callback/splitOrder */ export const createApicallbackSplitOrder = async (args: CreateApicallbackSplitOrderArgs, options: CreateApicallbackSplitOrderOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (args.restoId != null) headers.set("restoId", String(args.restoId)) const url = `${baseUrl.replace(/\/+$/, '')}callback/splitOrder${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };