From b5c174429548a53e5c86a13bdbfc61516e5ee345 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Tue, 9 Dec 2025 03:04:05 +0000 Subject: (최겸) 구매 구매자서명 내 삼성중공업 정보 입력 추가 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/general-contracts/service.ts | 23 +++++++++++++++++++++-- lib/general-contracts/utils.ts | 10 ++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) (limited to 'lib/general-contracts') 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}}, {{대표이사}} // ---------------------------------- // 품목 정보 -- cgit v1.2.3