summaryrefslogtreecommitdiff
path: root/lib/basic-contract/vendor-table
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-11-21 09:44:33 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-11-21 09:44:33 +0000
commita2e0785c8749c4d3766ecf3b70edfb7c2fe4df20 (patch)
tree4b03bbec838baf307b38e0c5692da8da7bde2f9b /lib/basic-contract/vendor-table
parent204fbfb126daf057a4567f64cfb7ab03a5679e82 (diff)
(임수민) 준법 Red Flag 해제, 코멘트 수정
Diffstat (limited to 'lib/basic-contract/vendor-table')
-rw-r--r--lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx52
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'}`}>