summaryrefslogtreecommitdiff
path: root/lib/b-rfq/validations.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/b-rfq/validations.ts')
-rw-r--r--lib/b-rfq/validations.ts45
1 files changed, 43 insertions, 2 deletions
diff --git a/lib/b-rfq/validations.ts b/lib/b-rfq/validations.ts
index f9473656..bee10a11 100644
--- a/lib/b-rfq/validations.ts
+++ b/lib/b-rfq/validations.ts
@@ -7,7 +7,7 @@ import { createSearchParamsCache,
import * as z from "zod"
import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers"
-import { VendorAttachmentResponse } from "@/db/schema";
+import { FinalRfqDetailView, VendorAttachmentResponse } from "@/db/schema";
export const searchParamsRFQDashboardCache = createSearchParamsCache({
// 공통 플래그
@@ -273,6 +273,8 @@ export const updateInitialRfqSchema = z.object({
required_error: "마감일을 선택해주세요.",
}),
validDate: z.date().optional(),
+ gtc: z.string().optional(),
+ gtcValidDate: z.string().optional(),
incotermsCode: z.string().max(20, "Incoterms 코드는 20자 이하여야 합니다.").optional(),
classification: z.string().max(255, "분류는 255자 이하여야 합니다.").optional(),
sparepart: z.string().max(255, "예비부품은 255자 이하여야 합니다.").optional(),
@@ -403,4 +405,43 @@ export type RequestRevisionResult = {
success: boolean;
message: string;
error?: string;
-}; \ No newline at end of file
+};
+
+export const shortListConfirmSchema = z.object({
+ rfqId: z.number(),
+ selectedVendorIds: z.array(z.number()).min(1),
+ rejectedVendorIds: z.array(z.number()),
+})
+
+export type ShortListConfirmInput = z.infer<typeof shortListConfirmSchema>
+
+
+export const searchParamsFinalRfqDetailCache = createSearchParamsCache({
+ // 공통 플래그
+ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]),
+
+ // 페이징
+ page: parseAsInteger.withDefault(1),
+ perPage: parseAsInteger.withDefault(10),
+
+ // 정렬 - initialRfqDetailView 기반
+ sort: getSortingStateParser<FinalRfqDetailView>().withDefault([
+ { id: "createdAt", desc: true },
+ ]),
+
+ // 고급 필터
+ filters: getFiltersStateParser().withDefault([]),
+ joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"),
+
+ // 기본 필터
+ basicFilters: getFiltersStateParser().withDefault([]),
+ basicJoinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"),
+
+ // 검색 키워드
+ search: parseAsString.withDefault(""),
+
+
+});
+
+export type GetFinalRfqDetailSchema = Awaited<ReturnType<typeof searchParamsFinalRfqDetailCache.parse>>;
+