import { http, unwrapApiResponse, type ApiEnvelope } from '@/shared/api/http' export interface ProcurementWorkflowReceipt { id: string; quantity: number; fileIds: string[]; receivedAt: string } export interface ProcurementOutbound { id: string; outboundNo: string; quantity: number; trackingNo: string; status: string; fileIds: string[]; createdAt: string; completedAt: string | null } export interface ProcurementWorkflow { orderNo: string; version: number; status: string; receivedQuantity: number; stockQuantity: number; reservedQuantity: number; availableQuantity: number rejectionReason: string | null; photosNeedUpdate: boolean receipts: ProcurementWorkflowReceipt[]; outbounds: ProcurementOutbound[] } export interface WorkflowCommand { version: number; idempotencyKey: string; receiptId?: string; quantity?: number; trackingNo?: string; fileIds?: string[] } const base = '/platform/v1/last-leg/overseas-procurements' export async function getProcurementWorkflow(orderNo: string, customerId: string) { return unwrapApiResponse(await http.get, ApiEnvelope>(`${base}/${encodeURIComponent(orderNo)}/workflow`, { params: { customerId } })) } export async function submitProcurementWorkflow(orderNo: string, customerId: string, action: string, payload: WorkflowCommand) { return unwrapApiResponse(await http.post, ApiEnvelope>(`${base}/${encodeURIComponent(orderNo)}/${action}`, payload, { params: { customerId } })) } export async function editProcurementOutbound(orderNo: string, customerId: string, batchId: string, payload: WorkflowCommand) { return unwrapApiResponse(await http.put, ApiEnvelope>(`${base}/${encodeURIComponent(orderNo)}/outbounds/${encodeURIComponent(batchId)}`, payload, { params: { customerId } })) }