From dd831478a3ab5ac7182903d41aa4b3e47f28224f Mon Sep 17 00:00:00 2001 From: dujinkim Date: Mon, 15 Sep 2025 10:13:11 +0000 Subject: (최겸) 구매 입찰 테스트 및 수정사항 반영 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/bidding/service.ts | 87 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) (limited to 'lib/bidding/service.ts') diff --git a/lib/bidding/service.ts b/lib/bidding/service.ts index 70458a15..90a379e1 100644 --- a/lib/bidding/service.ts +++ b/lib/bidding/service.ts @@ -11,7 +11,10 @@ import { specificationMeetings, prDocuments, biddingConditions, - users + users, + basicContractTemplates, + paymentTerms, + incoterms } from '@/db/schema' import { eq, @@ -1336,4 +1339,86 @@ export async function updateBiddingConditions( error: error instanceof Error ? error.message : '입찰 조건 업데이트 중 오류가 발생했습니다.' } } +} + +// 활성 템플릿 조회 서버 액션 +// 입찰 조건 옵션 관련 서버 액션들 +export async function getActivePaymentTerms() { + try { + const result = await db + .select({ + code: paymentTerms.code, + description: paymentTerms.description, + isActive: paymentTerms.isActive, + createdAt: paymentTerms.createdAt, + }) + .from(paymentTerms) + .where(eq(paymentTerms.isActive, true)) + .orderBy(paymentTerms.createdAt) + + return { + success: true, + data: result + } + } catch (error) { + console.error('Error fetching active payment terms:', error) + return { + success: false, + error: '지급조건 조회 중 오류가 발생했습니다.' + } + } +} + +export async function getActiveIncoterms() { + try { + const result = await db + .select({ + code: incoterms.code, + description: incoterms.description, + isActive: incoterms.isActive, + createdAt: incoterms.createdAt, + }) + .from(incoterms) + .where(eq(incoterms.isActive, true)) + .orderBy(incoterms.createdAt) + + return { + success: true, + data: result + } + } catch (error) { + console.error('Error fetching active incoterms:', error) + return { + success: false, + error: '운송조건 조회 중 오류가 발생했습니다.' + } + } +} + +export async function getActiveContractTemplates() { + try { + // 활성 상태의 템플릿들 조회 + const templates = await db + .select({ + id: basicContractTemplates.id, + templateName: basicContractTemplates.templateName, + revision: basicContractTemplates.revision, + status: basicContractTemplates.status, + filePath: basicContractTemplates.filePath, + validityPeriod: basicContractTemplates.validityPeriod, + legalReviewRequired: basicContractTemplates.legalReviewRequired, + createdAt: basicContractTemplates.createdAt, + }) + .from(basicContractTemplates) + .where(eq(basicContractTemplates.status, 'ACTIVE')) + .orderBy(basicContractTemplates.templateName); + + return { + templates + }; + + } catch (error) { + console.error('활성 템플릿 조회 실패:', error); + throw new Error('템플릿 조회에 실패했습니다.'); + } } \ No newline at end of file -- cgit v1.2.3