diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-13 07:11:18 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-06-13 07:11:18 +0000 |
| commit | 0fddf148402fd6b99a1b3800d73679899bcb2ed3 (patch) | |
| tree | eb51c02e6fa6037ddcc38a3b57d10d8c739125cf /lib/b-rfq/validations.ts | |
| parent | c72d0897f7b37843109c86f61d97eba05ba3ca0d (diff) | |
(대표님) 20250613 16시 10분 global css, b-rfq, document 등
Diffstat (limited to 'lib/b-rfq/validations.ts')
| -rw-r--r-- | lib/b-rfq/validations.ts | 100 |
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>>; + + |
