summaryrefslogtreecommitdiff
path: root/lib/vendors/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendors/service.ts')
-rw-r--r--lib/vendors/service.ts42
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 변환된 파일 경로 사용