diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-21 09:44:33 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-21 09:44:33 +0000 |
| commit | a2e0785c8749c4d3766ecf3b70edfb7c2fe4df20 (patch) | |
| tree | 4b03bbec838baf307b38e0c5692da8da7bde2f9b /lib/basic-contract/vendor-table | |
| parent | 204fbfb126daf057a4567f64cfb7ab03a5679e82 (diff) | |
(임수민) 준법 Red Flag 해제, 코멘트 수정
Diffstat (limited to 'lib/basic-contract/vendor-table')
| -rw-r--r-- | lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx b/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx index 662d7ea9..e5aab10d 100644 --- a/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx +++ b/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx @@ -126,17 +126,18 @@ const canCompleteCurrentContract = React.useMemo(() => { const isComplianceTemplate = selectedContract.templateName?.includes('준법'); const isGTCTemplate = selectedContract.templateName?.includes('GTC'); + const requiresNegotiationComplete = isComplianceTemplate || isGTCTemplate; const surveyCompleted = isComplianceTemplate ? surveyCompletionStatus[contractId] === true : true; - // GTC 체크 수정 - const gtcStatus = gtcCommentStatus[contractId]; - const gtcCompleted = isGTCTemplate ? - (!gtcStatus?.hasComments || gtcStatus?.isComplete === true) : true; + const negotiationStatus = gtcCommentStatus[contractId]; + const negotiationCleared = requiresNegotiationComplete + ? (!negotiationStatus?.hasComments || negotiationStatus?.isComplete === true) + : true; const signatureCompleted = signatureStatus[contractId] === true; - return surveyCompleted && gtcCompleted && signatureCompleted; + return surveyCompleted && negotiationCleared && signatureCompleted; }, [selectedContract, surveyCompletionStatus, signatureStatus, gtcCommentStatus, isBuyerMode]); @@ -341,7 +342,11 @@ const canCompleteCurrentContract = React.useMemo(() => { const isComplianceTemplate = selectedContract.templateName?.includes('준법'); const isGTCTemplate = selectedContract.templateName?.includes('GTC'); const surveyCompleted = isComplianceTemplate ? surveyCompletionStatus[contractId] === true : true; - const gtcCompleted = isGTCTemplate ? (gtcCommentStatus[contractId]?.isComplete !== true) : true; + const requiresNegotiationComplete = isComplianceTemplate || isGTCTemplate; + const negotiationStatus = gtcCommentStatus[contractId]; + const negotiationCleared = requiresNegotiationComplete + ? (!negotiationStatus?.hasComments || negotiationStatus?.isComplete === true) + : true; const signatureCompleted = signatureStatus[contractId] === true; if (!surveyCompleted) { @@ -353,7 +358,7 @@ const canCompleteCurrentContract = React.useMemo(() => { return; } - if (!gtcCompleted) { + if (!negotiationCleared) { toast({ title: "코멘트가 있어 서명할 수 없습니다.", description: "협의 코멘트 탭에서 모든 코멘트를 삭제하거나 협의를 완료해주세요.", @@ -705,9 +710,13 @@ const canCompleteCurrentContract = React.useMemo(() => { // 계약서별 완료 상태 확인 const isComplianceTemplate = contract.templateName?.includes('준법'); - const isGTCTemplate = contract.templateName?.includes('GTC'); + const isGTCTemplate = contract.templateName?.includes('GTC'); + const requiresNegotiation = isComplianceTemplate || isGTCTemplate; const hasSurveyCompleted = isComplianceTemplate ? surveyCompletionStatus[contract.id] === true : true; - const hasGtcCompleted = isGTCTemplate ? (gtcCommentStatus[contract.id]?.hasComments !== true) : true; + const negotiationStatus = gtcCommentStatus[contract.id]; + const hasNegotiationCompleted = requiresNegotiation + ? (!negotiationStatus?.hasComments || negotiationStatus?.isComplete === true) + : true; const hasSignatureCompleted = signatureStatus[contract.id] === true; return ( @@ -776,9 +785,9 @@ const canCompleteCurrentContract = React.useMemo(() => { 설문 </span> )} - {isGTCTemplate && ( - <span className={`flex items-center ${hasGtcCompleted ? 'text-green-600' : 'text-red-600'}`}> - <CheckCircle2 className={`h-3 w-3 mr-1 ${hasGtcCompleted ? 'text-green-500' : 'text-red-500'}`} /> + {requiresNegotiation && ( + <span className={`flex items-center ${hasNegotiationCompleted ? 'text-green-600' : 'text-red-600'}`}> + <CheckCircle2 className={`h-3 w-3 mr-1 ${hasNegotiationCompleted ? 'text-green-500' : 'text-red-500'}`} /> 협의 </span> )} @@ -953,11 +962,20 @@ const canCompleteCurrentContract = React.useMemo(() => { 설문조사 {surveyCompletionStatus[selectedContract.id] ? '완료' : '미완료'} </span> )} - {selectedContract.templateName?.includes('GTC') && ( - <span className={`flex items-center ${(gtcCommentStatus[selectedContract.id]?.isComplete === true) ? 'text-green-600' : 'text-red-600'}`}> - <CheckCircle2 className={`h-3 w-3 mr-1 ${(gtcCommentStatus[selectedContract.id]?.isComplete === true) ? 'text-green-500' : 'text-red-500'}`} /> - 협의 {(gtcCommentStatus[selectedContract.id]?.isComplete === true) ? '완료' : - `미완료 (코멘트 ${gtcCommentStatus[selectedContract.id]?.commentCount || 0}개)`} + {(selectedContract.templateName?.includes('GTC') || selectedContract.templateName?.includes('준법')) && ( + <span className={`flex items-center ${ + (gtcCommentStatus[selectedContract.id]?.isComplete === true) || !gtcCommentStatus[selectedContract.id]?.hasComments + ? 'text-green-600' + : 'text-red-600' + }`}> + <CheckCircle2 className={`h-3 w-3 mr-1 ${ + (gtcCommentStatus[selectedContract.id]?.isComplete === true) || !gtcCommentStatus[selectedContract.id]?.hasComments + ? 'text-green-500' + : 'text-red-500' + }`} /> + 협의 {(!gtcCommentStatus[selectedContract.id]?.hasComments || gtcCommentStatus[selectedContract.id]?.isComplete === true) + ? '완료' + : `미완료 (코멘트 ${gtcCommentStatus[selectedContract.id]?.commentCount || 0}개)`} </span> )} <span className={`flex items-center ${signatureStatus[selectedContract.id] ? 'text-green-600' : 'text-red-600'}`}> |
