diff options
Diffstat (limited to 'lib/general-contracts/service.ts')
| -rw-r--r-- | lib/general-contracts/service.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/general-contracts/service.ts b/lib/general-contracts/service.ts index 991616d9..3f3dc8de 100644 --- a/lib/general-contracts/service.ts +++ b/lib/general-contracts/service.ts @@ -8,6 +8,7 @@ import { promises as fs } from 'fs' import { generalContracts, generalContractItems, generalContractAttachments } from '@/db/schema/generalContract'
import { contracts, contractItems, contractEnvelopes, contractSigners } from '@/db/schema/contract'
import { basicContract, basicContractTemplates } from '@/db/schema/basicContractDocumnet'
+import { generalContractTemplates } from '@/db/schema'
import { vendors } from '@/db/schema/vendors'
import { users, roles, userRoles } from '@/db/schema/users'
import { projects } from '@/db/schema/projects'
@@ -2728,4 +2729,32 @@ export async function confirmContractReview( console.error('당사 검토 확정 오류:', error)
throw error
}
+}
+
+// 계약 유형에 맞는 최신 템플릿 조회
+export async function getContractTemplateByContractType(contractType: string) {
+ try {
+ // 1. 정확한 타입 매칭 시도
+ const templates = await db
+ .select()
+ .from(generalContractTemplates)
+ .where(
+ and(
+ eq(generalContractTemplates.contractTemplateType, contractType),
+ eq(generalContractTemplates.status, 'ACTIVE')
+ )
+ )
+ .orderBy(desc(generalContractTemplates.revision)) // 최신 리비전 우선
+ .limit(1)
+
+ if (templates.length > 0) {
+ return { success: true, template: templates[0] }
+ }
+
+ // 2. 매칭되는 템플릿이 없을 경우 (필요 시 로직 추가)
+ return { success: false, error: '해당 계약 유형에 맞는 템플릿을 찾을 수 없습니다.' }
+ } catch (error) {
+ console.error('템플릿 조회 오류:', error)
+ return { success: false, error: '템플릿 조회 중 오류가 발생했습니다.' }
+ }
}
\ No newline at end of file |
