diff options
Diffstat (limited to 'lib/vendors/service.ts')
| -rw-r--r-- | lib/vendors/service.ts | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/lib/vendors/service.ts b/lib/vendors/service.ts index 6454bc7b..274997f9 100644 --- a/lib/vendors/service.ts +++ b/lib/vendors/service.ts @@ -2979,6 +2979,7 @@ interface RequestBasicContractInfoProps { requestedBy: number; templateId: number; pdfBuffer?: Buffer | Uint8Array | ArrayBuffer; // 생성된 PDF 버퍼 (선택적, 다양한 타입 지원) + pqSubmissionIdMap?: Record<number, number>; // vendorId -> pqSubmissionId 매핑 (PQ 연계용) } @@ -3094,7 +3095,16 @@ export async function requestPQVendors(input: ApproveVendorsInput & { const vendorPQData = await Promise.all(vendorPQDataPromises); - await tx.insert(vendorPQSubmissions).values(vendorPQData); + const insertedPqSubmissions = await tx + .insert(vendorPQSubmissions) + .values(vendorPQData) + .returning({ + id: vendorPQSubmissions.id, + vendorId: vendorPQSubmissions.vendorId, + pqNumber: vendorPQSubmissions.pqNumber, + projectId: vendorPQSubmissions.projectId, + type: vendorPQSubmissions.type, + }); await Promise.all( vendorsBeforeUpdate.map(async (vendorBefore) => { @@ -3121,20 +3131,13 @@ export async function requestPQVendors(input: ApproveVendorsInput & { try { const userLang = "en"; - const vendorPQ = await tx - .select({ pqNumber: vendorPQSubmissions.pqNumber }) - .from(vendorPQSubmissions) - .where( - and( - eq(vendorPQSubmissions.vendorId, vendor.id), - eq(vendorPQSubmissions.type, pqType), - input.projectId - ? eq(vendorPQSubmissions.projectId, input.projectId) - : isNull(vendorPQSubmissions.projectId) - ) - ) - .limit(1) - .then((rows) => rows[0]); + const vendorPQ = insertedPqSubmissions.find( + (pq) => + pq.vendorId === vendor.id && + pq.type === pqType && + ((input.projectId && pq.projectId === input.projectId) || + (!input.projectId && pq.projectId === null)) + ); const subject = input.projectId ? `[eVCP] You are invited to submit Project PQ ${vendorPQ?.pqNumber || ""} for ${projectInfo?.projectCode || "a project"}` @@ -3199,7 +3202,10 @@ export async function requestPQVendors(input: ApproveVendorsInput & { }) ); - return updated; + return { + updated, + pqSubmissions: insertedPqSubmissions, + }; }); revalidateTag("vendors"); @@ -3225,7 +3231,8 @@ export async function requestBasicContractInfo({ vendorIds, requestedBy, templateId, - pdfBuffer + pdfBuffer, + pqSubmissionIdMap }: RequestBasicContractInfoProps): Promise<{ success?: boolean; error?: string }> { unstable_noStore(); @@ -3325,6 +3332,7 @@ export async function requestBasicContractInfo({ templateId: template.id, vendorId: vendor.id, requestedBy: requestedBy, + pqSubmissionId: pqSubmissionIdMap?.[vendor.id] ?? null, status: "PENDING", fileName: finalFileName, // PDF 변환된 파일 이름 사용 filePath: finalFilePath, // PDF 변환된 파일 경로 사용 |
