import { api } from '@/lib/api' import type { PaginatedResponse, ShopPOResponse, InvoiceResponse, InvoiceStatus, PaymentResponse, PaymentMethod, ShopPOStatus, } from '@/types/api' import type { PageParams } from './master' // ─── Shop POs ───────────────────────────────────────────────────────────────── export interface ShopPOItemBody { itemId: string quantity: number unitPrice?: number | null } export interface CreateShopPOBody { storeId: string items: ShopPOItemBody[] } export interface UpdateShopPOItemsBody { items: ShopPOItemBody[] } export interface ShopPOListParams extends PageParams { agentId?: string routeId?: string shopId?: string confirmed?: boolean status?: ShopPOStatus } export const shopPos = { list: (params?: ShopPOListParams) => api.get>('/shop-pos', { params }).then(r => r.data), get: (id: string) => api.get(`/shop-pos/${id}`).then(r => r.data), create: (body: CreateShopPOBody) => api.post('/shop-pos', body).then(r => r.data), updateItems: (id: string, body: UpdateShopPOItemsBody) => api.put(`/shop-pos/${id}/items`, body).then(r => r.data), confirm: (id: string) => api.post(`/shop-pos/${id}/confirm`).then(r => r.data), confirmAndCreateInvoice: (id: string) => api.post(`/shop-pos/${id}/confirm-and-create-invoice`).then(r => r.data), cancel: (id: string) => api.post(`/shop-pos/${id}/cancel`).then(r => r.data), } // ─── Invoices ───────────────────────────────────────────────────────────────── export interface InvoiceListParams extends PageParams { agentId?: string routeId?: string shopId?: string status?: InvoiceStatus } export const invoices = { list: (params?: InvoiceListParams) => api.get>('/invoices', { params }).then(r => r.data), get: (id: string) => api.get(`/invoices/${id}`).then(r => r.data), print: (id: string) => api.post(`/invoices/${id}/print`).then(r => r.data), finalize: (id: string) => api.post(`/invoices/${id}/finalize`).then(r => r.data), } // ─── Payments ───────────────────────────────────────────────────────────────── export interface PaymentBody { amount: number method: PaymentMethod collectedByUserId?: string | null } export const payments = { listByInvoice: (invoiceId: string) => api.get(`/invoices/${invoiceId}/payments`).then(r => r.data), create: (invoiceId: string, body: PaymentBody) => api.post(`/invoices/${invoiceId}/payments`, body).then(r => r.data), }