|
- "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<T> {
- 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<any>(`${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<any>(`${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<string, any>) => {
- if (queryParams) {
- const queryString = new URLSearchParams(queryParams).toString();
- return serverFetchJson<RecordsRes<PickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage?${queryString}`, {
- method: 'GET',
- next: { tags: ["pickorder"] },
- });
- } else {
- return serverFetchJson<RecordsRes<PickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage`, {
- method: 'GET',
- next: { tags: ["pickorder"] },
- });
- }
- });
-
- export const fetchConsoPickOrderClient = cache(async (queryParams?: Record<string, any>) => {
- if (queryParams) {
- const queryString = new URLSearchParams(queryParams).toString();
- return serverFetchJson<RecordsRes<ConsoPickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage-conso?${queryString}`, {
- method: 'GET',
- next: { tags: ["pickorder"] },
- });
- } else {
- return serverFetchJson<RecordsRes<ConsoPickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage-conso`, {
- method: 'GET',
- next: { tags: ["pickorder"] },
- });
- }
- });
-
- export const fetchPickOrderLineClient = cache(async (queryParams?: Record<string, any>) => {
- if (queryParams) {
- const queryString = new URLSearchParams(queryParams).toString();
- return serverFetchJson<RecordsRes<PickOrderLineWithSuggestedLot[]>>(`${BASE_API_URL}/pickOrder/get-pickorder-line-byPage?${queryString}`, {
- method: 'GET',
- next: { tags: ["pickorder"] },
- });
- } else {
- return serverFetchJson<RecordsRes<PickOrderLineWithSuggestedLot[]>>(`${BASE_API_URL}/pickOrder/get-pickorder-line-byPage`, {
- method: 'GET',
- next: { tags: ["pickorder"] },
- });
- }
- });
-
- export const fetchStockOutLineClient = cache(async (pickOrderLineId: number) => {
- return serverFetchJson<StockOutLine[]>(`${BASE_API_URL}/stockOutLine/getByPickOrderLineId/${pickOrderLineId}`, {
- method: 'GET',
- next: { tags: ["pickorder"] },
- });
- });
-
- export const fetchConsoDetail = cache(async (consoCode: string) => {
- return serverFetchJson<PreReleasePickOrderSummary>(`${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<PostStockOutLiineResponse<StockOutLine>>(`${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<PostStockOutLiineResponse<StockOutLine>>
- (`${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<PostStockOutLiineResponse<StockOutLine>>
- (`${BASE_API_URL}/pickOrder/consoPickOrder/complete/${consoCode}`, {
- method: "POST",
- headers: { "Content-Type": "application/json" },
- });
- revalidateTag("pickorder");
- return po
- }
|