summaryrefslogtreecommitdiff
path: root/lib/b-rfq/validations.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-06-13 07:11:18 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-06-13 07:11:18 +0000
commit0fddf148402fd6b99a1b3800d73679899bcb2ed3 (patch)
treeeb51c02e6fa6037ddcc38a3b57d10d8c739125cf /lib/b-rfq/validations.ts
parentc72d0897f7b37843109c86f61d97eba05ba3ca0d (diff)
(대표님) 20250613 16시 10분 global css, b-rfq, document 등
Diffstat (limited to 'lib/b-rfq/validations.ts')
-rw-r--r--lib/b-rfq/validations.ts100
1 files changed, 100 insertions, 0 deletions
diff --git a/lib/b-rfq/validations.ts b/lib/b-rfq/validations.ts
index df95b1d2..15cc9425 100644
--- a/lib/b-rfq/validations.ts
+++ b/lib/b-rfq/validations.ts
@@ -165,3 +165,103 @@ export const deleteAttachmentsSchema = z.object({
})
export type DeleteAttachmentsInput = z.infer<typeof deleteAttachmentsSchema>
+
+
+//Inital RFQ
+export const searchParamsInitialRfqDetailCache = createSearchParamsCache({
+ // 공통 플래그
+ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]),
+
+ // 페이징
+ page: parseAsInteger.withDefault(1),
+ perPage: parseAsInteger.withDefault(10),
+
+ // 정렬 - initialRfqDetailView 기반
+ sort: getSortingStateParser<{
+ rfqId: number;
+ rfqCode: string;
+ rfqStatus: string;
+ initialRfqId: number;
+ initialRfqStatus: string;
+ vendorId: number;
+ vendorCode: string;
+ vendorName: string;
+ vendorCountry: string;
+ vendorBusinessSize: string;
+ dueDate: Date;
+ validDate: Date;
+ incotermsCode: string;
+ incotermsDescription: string;
+ shortList: boolean;
+ returnYn: boolean;
+ cpRequestYn: boolean;
+ prjectGtcYn: boolean;
+ returnRevision: number;
+ gtc: string;
+ gtcValidDate: string;
+ classification: string;
+ sparepart: string;
+ createdAt: Date;
+ updatedAt: Date;
+ }>().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(""),
+
+ // Initial RFQ Detail 특화 필터
+ rfqCode: parseAsString.withDefault(""),
+ rfqStatus: parseAsStringEnum([
+ "DRAFT",
+ "Doc. Received",
+ "PIC Assigned",
+ "Doc. Confirmed",
+ "Init. RFQ Sent",
+ "Init. RFQ Answered",
+ "TBE started",
+ "TBE finished",
+ "Final RFQ Sent",
+ "Quotation Received",
+ "Vendor Selected"
+ ]),
+ initialRfqStatus: parseAsStringEnum([
+ "PENDING",
+ "SENT",
+ "RESPONDED",
+ "EXPIRED",
+ "CANCELLED"
+ ]),
+ vendorName: parseAsString.withDefault(""),
+ vendorCode: parseAsString.withDefault(""),
+ vendorCountry: parseAsString.withDefault(""),
+ vendorBusinessSize: parseAsStringEnum([
+ "LARGE",
+ "MEDIUM",
+ "SMALL",
+ "STARTUP"
+ ]),
+ incotermsCode: parseAsString.withDefault(""),
+ dueDateFrom: parseAsString.withDefault(""),
+ dueDateTo: parseAsString.withDefault(""),
+ validDateFrom: parseAsString.withDefault(""),
+ validDateTo: parseAsString.withDefault(""),
+ shortList: parseAsStringEnum(["true", "false"]),
+ returnYn: parseAsStringEnum(["true", "false"]),
+ cpRequestYn: parseAsStringEnum(["true", "false"]),
+ prjectGtcYn: parseAsStringEnum(["true", "false"]),
+ classification: parseAsString.withDefault(""),
+ sparepart: parseAsString.withDefault(""),
+});
+
+export type GetInitialRfqDetailSchema = Awaited<ReturnType<typeof searchParamsInitialRfqDetailCache.parse>>;
+
+