diff options
Diffstat (limited to 'lib/swp/table/swp-table-toolbar.tsx')
| -rw-r--r-- | lib/swp/table/swp-table-toolbar.tsx | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/swp/table/swp-table-toolbar.tsx b/lib/swp/table/swp-table-toolbar.tsx index 08eda3ef..276eca14 100644 --- a/lib/swp/table/swp-table-toolbar.tsx +++ b/lib/swp/table/swp-table-toolbar.tsx @@ -44,6 +44,7 @@ interface SwpTableToolbarProps { onFilesProcessed?: () => void; documents?: DocumentListItem[]; // 업로드 권한 검증 + DOC_CLS (Document Class) 확인용 문서 목록 userId?: string; // 파일 취소 시 필요 + requiredDocs?: Array<{ vendorDocNumber: string; title: string; buyerSystemComment: string | null }>; // DB Completed 상태 업로드 필요 문서 } export function SwpTableToolbar({ @@ -60,6 +61,7 @@ export function SwpTableToolbar({ onFilesProcessed, documents = [], userId, + requiredDocs = [], }: SwpTableToolbarProps) { const [isUploading, startUpload] = useTransition(); const [localFilters, setLocalFilters] = useState(filters); @@ -93,9 +95,11 @@ export function SwpTableToolbar({ /** * 업로드 가능한 문서번호 목록 추출 (OWN_DOC_NO 기준) * SWP API의 OWN_DOC_NO가 EVCP DB의 vendorDocNumber와 매핑되는지 확인 + * + DB Completed 상태 문서(requiredDocs)의 vendorDocNumber도 포함 */ const availableDocNos = useMemo(() => { - return documents + // 1. documents의 OWN_DOC_NO (EVCP DB에 등록된 것만) + const fromDocuments = documents .map(doc => doc.OWN_DOC_NO) .filter((ownDocNo): ownDocNo is string => { // OWN_DOC_NO가 있고, EVCP DB에 등록된 문서인지 확인 @@ -103,7 +107,17 @@ export function SwpTableToolbar({ ownDocNo !== undefined && vendorDocNumberToDocClassMap[ownDocNo] !== undefined; }); - }, [documents, vendorDocNumberToDocClassMap]); + + // 2. requiredDocs의 vendorDocNumber (DB Completed 상태) + const fromRequiredDocs = requiredDocs + .map(doc => doc.vendorDocNumber) + .filter((vendorDocNumber): vendorDocNumber is string => { + return vendorDocNumber !== null && vendorDocNumber !== undefined; + }); + + // 3. 중복 제거하여 병합 + return Array.from(new Set([...fromDocuments, ...fromRequiredDocs])); + }, [documents, requiredDocs, vendorDocNumberToDocClassMap]); /** * 벤더 모드 여부 (벤더 코드가 있으면 벤더 모드) |
