"use server"; import { BASE_API_URL } from "@/config/api"; // import { ServerFetchError, serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; import { revalidateTag } from "next/cache"; import { cache } from "react"; import { serverFetchJson } from "@/app/utils/fetchUtil"; import { QcItemResult } from "../settings/qcItem"; import { RecordsRes } from "../utils"; import { ConsoPickOrderResult, PickOrderLineWithSuggestedLot, PickOrderResult, PreReleasePickOrderSummary, StockOutLine } from "."; import { PurchaseQcResult } from "../po/actions"; // import { BASE_API_URL } from "@/config/api"; export interface PostStockOutLiineResponse { id: number | null; name: string; code: string; type?: string message: string | null; errorPosition: string | keyof T; entity: T | T[] } export interface ReleasePickOrderInputs { consoCode: string assignTo: number, } export interface CreateStockOutLine { consoCode: string, pickOrderLineId: number, inventoryLotLineId: number, qty: number, } export interface UpdateStockOutLine { id: number, // consoCode: String, itemId: number, qty: number, pickOrderLineId: number, inventoryLotLineId?: number, status: string, pickTime?: string, // pickerId: number? } export interface PickOrderQcInput { qty: number status: string qcResult: PurchaseQcResult[]; } export interface PickOrderApprovalInput { allowQty: number rejectQty: number status: string } export const consolidatePickOrder = async (ids: number[]) => { const pickOrder = await serverFetchJson(`${BASE_API_URL}/pickOrder/conso`, { method: "POST", body: JSON.stringify({ ids: ids }), headers: { "Content-Type": "application/json" }, }); // revalidateTag("po"); return pickOrder } export const consolidatePickOrder_revert = async (ids: number[]) => { const pickOrder = await serverFetchJson(`${BASE_API_URL}/pickOrder/deconso`, { method: "POST", body: JSON.stringify({ ids: ids }), headers: { "Content-Type": "application/json" }, }); // revalidateTag("po"); return pickOrder } export const fetchPickOrderClient = cache(async (queryParams?: Record) => { if (queryParams) { const queryString = new URLSearchParams(queryParams).toString(); return serverFetchJson>(`${BASE_API_URL}/pickOrder/getRecordByPage?${queryString}`, { method: 'GET', next: { tags: ["pickorder"] }, }); } else { return serverFetchJson>(`${BASE_API_URL}/pickOrder/getRecordByPage`, { method: 'GET', next: { tags: ["pickorder"] }, }); } }); export const fetchConsoPickOrderClient = cache(async (queryParams?: Record) => { if (queryParams) { const queryString = new URLSearchParams(queryParams).toString(); return serverFetchJson>(`${BASE_API_URL}/pickOrder/getRecordByPage-conso?${queryString}`, { method: 'GET', next: { tags: ["pickorder"] }, }); } else { return serverFetchJson>(`${BASE_API_URL}/pickOrder/getRecordByPage-conso`, { method: 'GET', next: { tags: ["pickorder"] }, }); } }); export const fetchPickOrderLineClient = cache(async (queryParams?: Record) => { if (queryParams) { const queryString = new URLSearchParams(queryParams).toString(); return serverFetchJson>(`${BASE_API_URL}/pickOrder/get-pickorder-line-byPage?${queryString}`, { method: 'GET', next: { tags: ["pickorder"] }, }); } else { return serverFetchJson>(`${BASE_API_URL}/pickOrder/get-pickorder-line-byPage`, { method: 'GET', next: { tags: ["pickorder"] }, }); } }); export const fetchStockOutLineClient = cache(async (pickOrderLineId: number) => { return serverFetchJson(`${BASE_API_URL}/stockOutLine/getByPickOrderLineId/${pickOrderLineId}`, { method: 'GET', next: { tags: ["pickorder"] }, }); }); export const fetchConsoDetail = cache(async (consoCode: string) => { return serverFetchJson(`${BASE_API_URL}/pickOrder/pre-release-info/${consoCode}`, { method: 'GET', next: { tags: ["pickorder"] }, }); }); export const releasePickOrder = async (data: ReleasePickOrderInputs) => { console.log(data) console.log(JSON.stringify(data)) const po = await serverFetchJson<{body: any, status: number}>(`${BASE_API_URL}/pickOrder/releaseConso`, { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }); revalidateTag("pickorder"); return po } export const createStockOutLine = async (data: CreateStockOutLine) => { console.log("triggering") const po = await serverFetchJson>(`${BASE_API_URL}/stockOutLine/create`, { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }); revalidateTag("pickorder"); return po } export const updateStockOutLine = async (data: UpdateStockOutLine) => { console.log(data) const po = await serverFetchJson> (`${BASE_API_URL}/stockOutLine/update`, { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }); revalidateTag("pickorder"); return po } export const completeConsoPickOrder = async (consoCode: string) => { const po = await serverFetchJson> (`${BASE_API_URL}/pickOrder/consoPickOrder/complete/${consoCode}`, { method: "POST", headers: { "Content-Type": "application/json" }, }); revalidateTag("pickorder"); return po }