import { api } from '@/lib/api' import type { PaginatedResponse, SaleResponse, OrderResponse, PaymentResponse, SaleStatus, OrderStatus, PaymentStatus, PaymentMethod, } from '@/types/api' import type { PageParams } from './master' // ─── Sales ──────────────────────────────────────────────────────────────────── export interface SaleItemBody { itemId: string quantity: number unitPrice: number } export interface SaleBody { storeId: string saleDate: string rideId?: string | null fulfillImmediately?: boolean items: SaleItemBody[] // TEMPORARY: required while auth doesn't resolve a logged-in user server-side — see testbug.md #28. createdByUserId: string } export interface SaleListParams extends PageParams { storeId?: string status?: SaleStatus paymentStatus?: PaymentStatus rideId?: string from?: string to?: string } export const sales = { list: (params?: SaleListParams) => api.get>('/sales', { params }).then(r => r.data), get: (id: string) => api.get(`/sales/${id}`).then(r => r.data), create: (body: SaleBody) => api.post('/sales', body).then(r => r.data), cancel: (id: string) => api.patch(`/sales/${id}/cancel`).then(r => r.data), } // ─── Orders ─────────────────────────────────────────────────────────────────── export interface OrderListParams extends PageParams { storeId?: string status?: OrderStatus from?: string to?: string } export const orders = { list: (params?: OrderListParams) => api.get>('/orders', { params }).then(r => r.data), get: (id: string) => api.get(`/orders/${id}`).then(r => r.data), } // ─── Payments ───────────────────────────────────────────────────────────────── export interface PaymentBody { saleId: string storeId: string amount: number method: PaymentMethod collectedAt: string } export interface PaymentListParams extends PageParams { storeId?: string saleId?: string method?: PaymentMethod from?: string to?: string } export const payments = { list: (params?: PaymentListParams) => api.get>('/payments', { params }).then(r => r.data), get: (id: string) => api.get(`/payments/${id}`).then(r => r.data), create: (body: PaymentBody) => api.post('/payments', body).then(r => r.data), }