diff options
Diffstat (limited to 'lib/general-contracts')
| -rw-r--r-- | lib/general-contracts/service.ts | 23 | ||||
| -rw-r--r-- | lib/general-contracts/utils.ts | 10 |
2 files changed, 29 insertions, 4 deletions
diff --git a/lib/general-contracts/service.ts b/lib/general-contracts/service.ts index b803d2d4..d0fa7b7a 100644 --- a/lib/general-contracts/service.ts +++ b/lib/general-contracts/service.ts @@ -7,7 +7,7 @@ import path from 'path' 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 { basicContract, basicContractTemplates, buyerSignatures } from '@/db/schema/basicContractDocumnet'
import { generalContractTemplates } from '@/db/schema'
import { vendors } from '@/db/schema/vendors'
import { users, roles, userRoles } from '@/db/schema/users'
@@ -21,6 +21,9 @@ import { v4 as uuidv4 } from 'uuid' import { GetGeneralContractsSchema } from './validation'
import { sendEmail } from '../mail/sendEmail'
+const DEFAULT_SHI_ADDRESS = '경기도 성남시 분당구 판교로 227번길 23'
+const DEFAULT_SHI_CEO_NAME = '최성안'
+
export async function getGeneralContracts(input: GetGeneralContractsSchema) {
try {
const offset = (input.page - 1) * input.perPage
@@ -800,6 +803,16 @@ export async function getBasicInfo(contractId: number) { }
const contract = result[0]
+ const [activeBuyerSignature] = await db
+ .select()
+ .from(buyerSignatures)
+ .where(eq(buyerSignatures.isActive, true))
+ .limit(1)
+
+ const shiAddress = activeBuyerSignature?.shiAddress || DEFAULT_SHI_ADDRESS
+ const shiCeoName = activeBuyerSignature?.shiCeoName || DEFAULT_SHI_CEO_NAME
+ const buyerSignatureName = activeBuyerSignature?.name || '삼성중공업'
+
return {
success: true,
enabled: true, // basic-info는 항상 활성화
@@ -844,7 +857,13 @@ export async function getBasicInfo(contractId: number) { interlockingSystem: contract.interlockingSystem,
mandatoryDocuments: contract.mandatoryDocuments,
contractTerminationConditions: contract.contractTerminationConditions,
- externalYardEntry: contract.externalYardEntry || 'N'
+ externalYardEntry: contract.externalYardEntry || 'N',
+
+ // SHI 서명 정보
+ shiAddress,
+ shiCeoName,
+ buyerSignatureName,
+ buyerSignatureId: activeBuyerSignature?.id || null,
}
}
} catch (error) {
diff --git a/lib/general-contracts/utils.ts b/lib/general-contracts/utils.ts index ec15a3a1..5bbb5980 100644 --- a/lib/general-contracts/utils.ts +++ b/lib/general-contracts/utils.ts @@ -1,5 +1,8 @@ import { format } from "date-fns" +const DEFAULT_SHI_ADDRESS = "경기도 성남시 분당구 판교로 227번길 23" +const DEFAULT_SHI_CEO_NAME = "최성안" + /** * ContractSummary 인터페이스 (UI 컴포넌트와 맞춤) */ @@ -20,6 +23,9 @@ export function mapContractDataToTemplateVariables(contractSummary: ContractSumm const { basicInfo, items, storageInfo } = contractSummary const firstItem = items && items.length > 0 ? items[0] : {} + const shiAddress = basicInfo.shiAddress || DEFAULT_SHI_ADDRESS + const shiCeoName = basicInfo.shiCeoName || DEFAULT_SHI_CEO_NAME + // 날짜 포맷팅 헬퍼 (YYYY-MM-DD) const formatDate = (date: any) => { if (!date) return '' @@ -206,8 +212,8 @@ export function mapContractDataToTemplateVariables(contractSummary: ContractSumm // ---------------------------------- // 당사(SHI) 정보 (고정값/설정값) // ---------------------------------- - shiAddress: "경기도 성남시 분당구 판교로 227번길 23", // {{SHI_Address}}, {{위탁자 주소}} - shiCeoName: "최성안", // {{SHI_CEO_Name}}, {{대표이사}} + shiAddress: shiAddress, // {{SHI_Address}}, {{위탁자 주소}} + shiCeoName: shiCeoName, // {{SHI_CEO_Name}}, {{대표이사}} // ---------------------------------- // 품목 정보 |
