summaryrefslogtreecommitdiff
path: root/lib/bidding/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bidding/service.ts')
-rw-r--r--lib/bidding/service.ts87
1 files changed, 86 insertions, 1 deletions
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