import "server-only"; import { Pageable, serverFetchJson } from "@/app/utils/fetchUtil"; import { BASE_API_URL } from "@/config/api"; import { cache } from "react"; interface PickOrderItemInfo { name: string, type: string, } export interface PickOrderResult{ id: number, code: string, consoCode?: string, targetDate: number[], completeDate?: number[], type: string, status: string, releasedBy: string, items?: PickOrderItemInfo[] | null, pickOrderLine?: PickOrderLine[] } export interface PickOrderLine { id: number, itemId: number, itemCode: string, itemName: string, availableQty: number, requiredQty: number, uomCode: string, uomDesc: string } export interface ConsoPickOrderResult{ id: number, code: string, consoCode?: string, targetDate: number[], completeDate?: number[], type: string, status: string, releasedBy: string, items?: PickOrderItemInfo[] | null, } export interface FetchPickOrders extends Pageable { code: string | undefined targetDateFrom: string | undefined targetDateTo: string | undefined type: string | undefined status: string | undefined itemName: string | undefined } export type ByItemsSummary = { id: number, code: string, name: string, uomDesc: string, availableQty: number, requiredQty: number, } export interface PreReleasePickOrderSummary { consoCode: string pickOrders: Omit[] items: ByItemsSummary[] } export interface PickOrderLineWithSuggestedLot { id: number, itemName: string, qty: number, uom: string status: string warehouse: string suggestedLotNo: string } export const PreloadPickOrder = () => { fetchPickOrders({ code: undefined, targetDateFrom: undefined, targetDateTo: undefined, type: undefined, status: undefined, itemName: undefined, }) } export const fetchPickOrders = cache(async (queryParams: FetchPickOrders) => { const queryString = new URLSearchParams(queryParams as Record).toString(); return serverFetchJson(`${BASE_API_URL}/pickOrder/list?${queryString}`, { next: { tags: ["pickOrders"] } }) })