From 9ecdfb23fe3df6a5df86782385002c562dfc1198 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 19 Sep 2025 07:51:27 +0000 Subject: (대표님) rfq 히스토리, swp 등 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/general-contracts/service.ts | 88 ++++++++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 31 deletions(-) (limited to 'lib/general-contracts/service.ts') diff --git a/lib/general-contracts/service.ts b/lib/general-contracts/service.ts index 8c74c616..52301dae 100644 --- a/lib/general-contracts/service.ts +++ b/lib/general-contracts/service.ts @@ -372,7 +372,8 @@ export async function createContract(data: Record) { try { // 계약번호 자동 생성 // TODO: 구매 발주담당자 코드 필요 - 파라미터 추가 - const userId = data.registeredById as string + const rawUserId = data.registeredById + const userId = (rawUserId && !isNaN(Number(rawUserId))) ? String(rawUserId) : undefined const contractNumber = await generateContractNumber( userId, data.type as string @@ -676,6 +677,8 @@ export async function updateContractItems(contractId: number, items: Record= 3) { purchaseManagerCode = user[0].userCode.substring(0, 3).toUpperCase(); @@ -1774,8 +1777,20 @@ export async function generateContractNumber( let sequenceNumber = 1 if (existingContracts.length > 0) { const lastContractNumber = existingContracts[0].contractNumber - const lastSequence = parseInt(lastContractNumber.slice(-3)) - sequenceNumber = lastSequence + 1 + const lastSequenceStr = lastContractNumber.slice(-3) + + // contractNumber에서 숫자만 추출하여 sequence 찾기 + const numericParts = lastContractNumber.match(/\d+/g) + if (numericParts && numericParts.length > 0) { + // 마지막 숫자 부분을 시퀀스로 사용 (일반적으로 마지막 3자리) + const potentialSequence = numericParts[numericParts.length - 1] + const lastSequence = parseInt(potentialSequence) + + if (!isNaN(lastSequence)) { + sequenceNumber = lastSequence + 1 + } + } + // 숫자를 찾지 못했거나 파싱 실패 시 sequenceNumber = 1 유지 } // 일련번호를 3자리로 포맷팅 @@ -1797,8 +1812,19 @@ export async function generateContractNumber( let sequenceNumber = 1 if (existingContracts.length > 0) { const lastContractNumber = existingContracts[0].contractNumber - const lastSequence = parseInt(lastContractNumber.slice(-3)) - sequenceNumber = lastSequence + 1 + + // contractNumber에서 숫자만 추출하여 sequence 찾기 + const numericParts = lastContractNumber.match(/\d+/g) + if (numericParts && numericParts.length > 0) { + // 마지막 숫자 부분을 시퀀스로 사용 + const potentialSequence = numericParts[numericParts.length - 1] + const lastSequence = parseInt(potentialSequence) + + if (!isNaN(lastSequence)) { + sequenceNumber = lastSequence + 1 + } + } + // 숫자를 찾지 못했거나 파싱 실패 시 sequenceNumber = 1 유지 } // 최종 계약번호 생성: C + 발주담당자코드(3자리) + 계약종류(2자리) + 연도(2자리) + 일련번호(3자리) -- cgit v1.2.3