FPSMS-frontend
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

182 rader
5.9 KiB

  1. "use server";
  2. import { BASE_API_URL } from "@/config/api";
  3. // import { ServerFetchError, serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil";
  4. import { revalidateTag } from "next/cache";
  5. import { cache } from "react";
  6. import { serverFetchJson } from "@/app/utils/fetchUtil";
  7. import { QcItemResult } from "../settings/qcItem";
  8. import { RecordsRes } from "../utils";
  9. import { ConsoPickOrderResult, PickOrderLineWithSuggestedLot, PickOrderResult, PreReleasePickOrderSummary, StockOutLine } from ".";
  10. import { PurchaseQcResult } from "../po/actions";
  11. // import { BASE_API_URL } from "@/config/api";
  12. export interface PostStockOutLiineResponse<T> {
  13. id: number | null;
  14. name: string;
  15. code: string;
  16. type?: string
  17. message: string | null;
  18. errorPosition: string | keyof T;
  19. entity: T | T[]
  20. }
  21. export interface ReleasePickOrderInputs {
  22. consoCode: string
  23. assignTo: number,
  24. }
  25. export interface CreateStockOutLine {
  26. consoCode: string,
  27. pickOrderLineId: number,
  28. inventoryLotLineId: number,
  29. qty: number,
  30. }
  31. export interface UpdateStockOutLine {
  32. id: number,
  33. // consoCode: String,
  34. itemId: number,
  35. qty: number,
  36. pickOrderLineId: number,
  37. inventoryLotLineId?: number,
  38. status: string,
  39. pickTime?: string,
  40. // pickerId: number?
  41. }
  42. export interface PickOrderQcInput {
  43. qty: number
  44. status: string
  45. qcResult: PurchaseQcResult[];
  46. }
  47. export interface PickOrderApprovalInput {
  48. allowQty: number
  49. rejectQty: number
  50. status: string
  51. }
  52. export const consolidatePickOrder = async (ids: number[]) => {
  53. const pickOrder = await serverFetchJson<any>(`${BASE_API_URL}/pickOrder/conso`, {
  54. method: "POST",
  55. body: JSON.stringify({ ids: ids }),
  56. headers: { "Content-Type": "application/json" },
  57. });
  58. // revalidateTag("po");
  59. return pickOrder
  60. }
  61. export const consolidatePickOrder_revert = async (ids: number[]) => {
  62. const pickOrder = await serverFetchJson<any>(`${BASE_API_URL}/pickOrder/deconso`, {
  63. method: "POST",
  64. body: JSON.stringify({ ids: ids }),
  65. headers: { "Content-Type": "application/json" },
  66. });
  67. // revalidateTag("po");
  68. return pickOrder
  69. }
  70. export const fetchPickOrderClient = cache(async (queryParams?: Record<string, any>) => {
  71. if (queryParams) {
  72. const queryString = new URLSearchParams(queryParams).toString();
  73. return serverFetchJson<RecordsRes<PickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage?${queryString}`, {
  74. method: 'GET',
  75. next: { tags: ["pickorder"] },
  76. });
  77. } else {
  78. return serverFetchJson<RecordsRes<PickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage`, {
  79. method: 'GET',
  80. next: { tags: ["pickorder"] },
  81. });
  82. }
  83. });
  84. export const fetchConsoPickOrderClient = cache(async (queryParams?: Record<string, any>) => {
  85. if (queryParams) {
  86. const queryString = new URLSearchParams(queryParams).toString();
  87. return serverFetchJson<RecordsRes<ConsoPickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage-conso?${queryString}`, {
  88. method: 'GET',
  89. next: { tags: ["pickorder"] },
  90. });
  91. } else {
  92. return serverFetchJson<RecordsRes<ConsoPickOrderResult[]>>(`${BASE_API_URL}/pickOrder/getRecordByPage-conso`, {
  93. method: 'GET',
  94. next: { tags: ["pickorder"] },
  95. });
  96. }
  97. });
  98. export const fetchPickOrderLineClient = cache(async (queryParams?: Record<string, any>) => {
  99. if (queryParams) {
  100. const queryString = new URLSearchParams(queryParams).toString();
  101. return serverFetchJson<RecordsRes<PickOrderLineWithSuggestedLot[]>>(`${BASE_API_URL}/pickOrder/get-pickorder-line-byPage?${queryString}`, {
  102. method: 'GET',
  103. next: { tags: ["pickorder"] },
  104. });
  105. } else {
  106. return serverFetchJson<RecordsRes<PickOrderLineWithSuggestedLot[]>>(`${BASE_API_URL}/pickOrder/get-pickorder-line-byPage`, {
  107. method: 'GET',
  108. next: { tags: ["pickorder"] },
  109. });
  110. }
  111. });
  112. export const fetchStockOutLineClient = cache(async (pickOrderLineId: number) => {
  113. return serverFetchJson<StockOutLine[]>(`${BASE_API_URL}/stockOutLine/getByPickOrderLineId/${pickOrderLineId}`, {
  114. method: 'GET',
  115. next: { tags: ["pickorder"] },
  116. });
  117. });
  118. export const fetchConsoDetail = cache(async (consoCode: string) => {
  119. return serverFetchJson<PreReleasePickOrderSummary>(`${BASE_API_URL}/pickOrder/pre-release-info/${consoCode}`, {
  120. method: 'GET',
  121. next: { tags: ["pickorder"] },
  122. });
  123. });
  124. export const releasePickOrder = async (data: ReleasePickOrderInputs) => {
  125. console.log(data)
  126. console.log(JSON.stringify(data))
  127. const po = await serverFetchJson<{body: any, status: number}>(`${BASE_API_URL}/pickOrder/releaseConso`, {
  128. method: "POST",
  129. body: JSON.stringify(data),
  130. headers: { "Content-Type": "application/json" },
  131. });
  132. revalidateTag("pickorder");
  133. return po
  134. }
  135. export const createStockOutLine = async (data: CreateStockOutLine) => {
  136. console.log("triggering")
  137. const po = await serverFetchJson<PostStockOutLiineResponse<StockOutLine>>(`${BASE_API_URL}/stockOutLine/create`, {
  138. method: "POST",
  139. body: JSON.stringify(data),
  140. headers: { "Content-Type": "application/json" },
  141. });
  142. revalidateTag("pickorder");
  143. return po
  144. }
  145. export const updateStockOutLine = async (data: UpdateStockOutLine) => {
  146. console.log(data)
  147. const po = await serverFetchJson<PostStockOutLiineResponse<StockOutLine>>
  148. (`${BASE_API_URL}/stockOutLine/update`, {
  149. method: "POST",
  150. body: JSON.stringify(data),
  151. headers: { "Content-Type": "application/json" },
  152. });
  153. revalidateTag("pickorder");
  154. return po
  155. }
  156. export const completeConsoPickOrder = async (consoCode: string) => {
  157. const po = await serverFetchJson<PostStockOutLiineResponse<StockOutLine>>
  158. (`${BASE_API_URL}/pickOrder/consoPickOrder/complete/${consoCode}`, {
  159. method: "POST",
  160. headers: { "Content-Type": "application/json" },
  161. });
  162. revalidateTag("pickorder");
  163. return po
  164. }