summaryrefslogtreecommitdiff
path: root/lib/swp/table/swp-table-toolbar.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/swp/table/swp-table-toolbar.tsx')
-rw-r--r--lib/swp/table/swp-table-toolbar.tsx18
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]);
/**
* 벤더 모드 여부 (벤더 코드가 있으면 벤더 모드)