From aedd7f919be958d1dec4e8621804e603d2de0dea Mon Sep 17 00:00:00 2001 From: dujinkim Date: Tue, 9 Dec 2025 04:27:42 +0000 Subject: (최겸) 구매 정규업체등록관리 수정(안전적격성 평가 기능 삭제) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/vendor-basic-info/basic-info-client.tsx | 7 +- lib/vendor-regular-registrations/repository.ts | 8 +- lib/vendor-regular-registrations/service.ts | 34 ----- .../table/safety-qualification-update-dialog.tsx | 143 --------------------- .../vendor-regular-registrations-table-columns.tsx | 25 +--- 5 files changed, 4 insertions(+), 213 deletions(-) delete mode 100644 lib/vendor-regular-registrations/table/safety-qualification-update-dialog.tsx (limited to 'lib') diff --git a/lib/vendor-basic-info/basic-info-client.tsx b/lib/vendor-basic-info/basic-info-client.tsx index 39763e0a..79b7c6ef 100644 --- a/lib/vendor-basic-info/basic-info-client.tsx +++ b/lib/vendor-basic-info/basic-info-client.tsx @@ -484,9 +484,6 @@ export default function BasicInfoClient({ // 기본계약 정보 basicContracts: result.data.basicContracts || [], - // 안전적격성 평가 - safetyQualificationContent: result.data.registration?.safetyQualificationContent || null, - // 추가정보 완료 여부 additionalInfo: result.data.additionalInfoCompleted, }; @@ -930,11 +927,11 @@ export default function BasicInfoClient({ placeholder="기업규모를 선택하세요" /> */} - + /> */} } column3={ diff --git a/lib/vendor-regular-registrations/repository.ts b/lib/vendor-regular-registrations/repository.ts index 3713f628..8aeb63fc 100644 --- a/lib/vendor-regular-registrations/repository.ts +++ b/lib/vendor-regular-registrations/repository.ts @@ -31,7 +31,6 @@ export async function getVendorRegularRegistrations( assignedUser: vendorRegularRegistrations.assignedUser, remarks: vendorRegularRegistrations.remarks, // 새로 추가된 필드들 - safetyQualificationContent: vendorRegularRegistrations.safetyQualificationContent, gtcSkipped: vendorRegularRegistrations.gtcSkipped, // 벤더 기본 정보 businessNumber: vendors.taxId, @@ -164,10 +163,9 @@ export async function getVendorRegularRegistrations( const allDocumentsSubmitted = Object.values(documentSubmissionsStatus).every(status => status === true); // 진행현황과 dialog에서 VENDOR_SIGNED도 완료로 간주하므로, 조건충족 체크도 동일하게 처리 const allContractsCompleted = vendorContracts.length > 0 && vendorContracts.every(c => c.status === "COMPLETED" || c.status === "VENDOR_SIGNED"); - const safetyQualificationCompleted = !!registration.safetyQualificationContent; // 모든 조건이 충족되면 status를 "approval_ready"(조건충족)로 자동 변경 - const shouldUpdateStatus = allDocumentsSubmitted && allContractsCompleted && safetyQualificationCompleted && additionalInfoCompleted; + const shouldUpdateStatus = allDocumentsSubmitted && allContractsCompleted && additionalInfoCompleted; // 현재 상태가 조건충족이 아닌데 모든 조건이 충족되면 상태 업데이트 // 단, 결재진행중(pending_approval) 또는 등록요청완료(registration_completed), 등록실패(registration_failed) 상태인 경우 무시 @@ -195,7 +193,6 @@ export async function getVendorRegularRegistrations( documentFiles: documentFiles, // 파일 정보 추가 contractAgreements: contractAgreementsStatus, // 새로 추가된 필드들 - safetyQualificationContent: registration.safetyQualificationContent, gtcSkipped: registration.gtcSkipped || false, additionalInfo: additionalInfoCompleted, // 기본계약 정보 @@ -229,7 +226,6 @@ export async function createVendorRegularRegistration(data: { assignedUser?: string; assignedUserCode?: string; remarks?: string; - safetyQualificationContent?: string; gtcSkipped?: boolean; }) { try { @@ -245,7 +241,6 @@ export async function createVendorRegularRegistration(data: { assignedUser: data.assignedUser, assignedUserCode: data.assignedUserCode, remarks: data.remarks, - safetyQualificationContent: data.safetyQualificationContent, gtcSkipped: data.gtcSkipped || false, }) .returning(); @@ -269,7 +264,6 @@ export async function updateVendorRegularRegistration( assignedUser: string; assignedUserCode: string; remarks: string; - safetyQualificationContent: string; gtcSkipped: boolean; }> ) { diff --git a/lib/vendor-regular-registrations/service.ts b/lib/vendor-regular-registrations/service.ts index eaf62ac7..5cb6f7c2 100644 --- a/lib/vendor-regular-registrations/service.ts +++ b/lib/vendor-regular-registrations/service.ts @@ -445,7 +445,6 @@ export async function fetchVendorRegistrationStatus(vendorId: number) { assignedUser: vendorRegularRegistrations.assignedUser, assignedUserCode: vendorRegularRegistrations.assignedUserCode, remarks: vendorRegularRegistrations.remarks, - safetyQualificationContent: vendorRegularRegistrations.safetyQualificationContent, gtcSkipped: vendorRegularRegistrations.gtcSkipped, createdAt: vendorRegularRegistrations.createdAt, updatedAt: vendorRegularRegistrations.updatedAt, @@ -556,7 +555,6 @@ export async function fetchVendorRegistrationStatus(vendorId: number) { safetyHealth: vendorContracts.some(c => c.templateName?.includes("안전보건") && c.status === "COMPLETED"), ethics: vendorContracts.some(c => c.templateName?.includes("윤리") && c.status === "COMPLETED"), domesticCredit: vendorContracts.some(c => c.templateName?.includes("신용") && c.status === "COMPLETED"), - safetyQualification: investigationFiles.length > 0, } // 문서별 파일 정보 (다운로드용) @@ -584,7 +582,6 @@ export async function fetchVendorRegistrationStatus(vendorId: number) { console.log(`🔍 Partners 벤더 ID ${vendorId} 전체 데이터:`, { vendor: vendor[0], registration: registration[0], - safetyQualificationContent: registration[0]?.safetyQualificationContent, gtcSkipped: registration[0]?.gtcSkipped, requiredContactTypes, existingContactTypes, @@ -723,37 +720,6 @@ export async function saveVendorAdditionalInfo( } } -// 안전적격성 평가 업데이트 -export async function updateSafetyQualification( - registrationId: number, - safetyQualificationContent: string -) { - try { - const session = await getServerSession(authOptions); - if (!session?.user) { - return { success: false, error: "로그인이 필요합니다." }; - } - - const result = await updateVendorRegularRegistration(registrationId, { - safetyQualificationContent: safetyQualificationContent.trim(), - }); - - if (!result) { - return { success: false, error: "등록 정보를 찾을 수 없습니다." }; - } - - return { - success: true, - message: "안전적격성 평가가 등록되었습니다.", - }; - } catch (error) { - console.error("Error updating safety qualification:", error); - return { - success: false, - error: error instanceof Error ? error.message : "안전적격성 평가 등록 중 오류가 발생했습니다.", - }; - } -} // 정규업체 등록 요청을 위한 상세 데이터 조회 diff --git a/lib/vendor-regular-registrations/table/safety-qualification-update-dialog.tsx b/lib/vendor-regular-registrations/table/safety-qualification-update-dialog.tsx deleted file mode 100644 index 80084732..00000000 --- a/lib/vendor-regular-registrations/table/safety-qualification-update-dialog.tsx +++ /dev/null @@ -1,143 +0,0 @@ -"use client" - -import * as React from "react" -import { useForm } from "react-hook-form" -import { zodResolver } from "@hookform/resolvers/zod" -import { z } from "zod" -import { toast } from "sonner" - -import { - Dialog, - DialogContent, - DialogDescription, - DialogHeader, - DialogTitle, -} from "@/components/ui/dialog" -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form" -import { Button } from "@/components/ui/button" -import { Textarea } from "@/components/ui/textarea" -import { updateSafetyQualification } from "../service" - -const formSchema = z.object({ - safetyQualificationContent: z.string().min(1, "안전적격성 평가 내용을 입력해주세요."), -}) - -interface SafetyQualificationUpdateDialogProps { - open: boolean - onOpenChange: (open: boolean) => void - registrationId?: number - vendorName?: string - currentContent?: string | null - onSuccess?: () => void -} - -export function SafetyQualificationUpdateDialog({ - open, - onOpenChange, - registrationId, - vendorName, - currentContent, - onSuccess, -}: SafetyQualificationUpdateDialogProps) { - const [isLoading, setIsLoading] = React.useState(false) - - const form = useForm>({ - resolver: zodResolver(formSchema), - defaultValues: { - safetyQualificationContent: currentContent || "", - }, - }) - - // 폼 값 초기화 - React.useEffect(() => { - if (open) { - form.reset({ - safetyQualificationContent: currentContent || "", - }) - } - }, [open, currentContent, form]) - - async function onSubmit(values: z.infer) { - if (!registrationId) { - toast.error("등록 ID가 없습니다.") - return - } - - setIsLoading(true) - try { - const result = await updateSafetyQualification( - registrationId, - values.safetyQualificationContent - ) - - if (result.success) { - toast.success("안전적격성 평가가 등록되었습니다.") - onOpenChange(false) - onSuccess?.() - } else { - toast.error(result.error || "안전적격성 평가 등록에 실패했습니다.") - } - } catch (error) { - console.error("안전적격성 평가 등록 오류:", error) - toast.error("안전적격성 평가 등록 중 오류가 발생했습니다.") - } finally { - setIsLoading(false) - } - } - - return ( - - - - 안전적격성 평가 입력 - - {vendorName && `${vendorName}의 `}안전적격성 평가 내용을 입력해주세요. - - - -
- - ( - - 안전적격성 평가 내용 - -