summaryrefslogtreecommitdiff
path: root/lib/rfq-last/table/rfq-table-toolbar-actions.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rfq-last/table/rfq-table-toolbar-actions.tsx')
-rw-r--r--lib/rfq-last/table/rfq-table-toolbar-actions.tsx28
1 files changed, 19 insertions, 9 deletions
diff --git a/lib/rfq-last/table/rfq-table-toolbar-actions.tsx b/lib/rfq-last/table/rfq-table-toolbar-actions.tsx
index 7d48f5a4..00c41402 100644
--- a/lib/rfq-last/table/rfq-table-toolbar-actions.tsx
+++ b/lib/rfq-last/table/rfq-table-toolbar-actions.tsx
@@ -36,17 +36,27 @@ export function RfqTableToolbarActions<TData>({
// 선택된 RFQ의 ID와 코드 추출
const selectedRfqData = React.useMemo(() => {
const rows = selectedRows.map(row => row.original as RfqsLastView);
+ const assignableRows = rows.filter(row =>
+ row.rfqCode?.startsWith("I") &&
+ (row.status === "RFQ 생성" || row.status === "구매담당지정")
+ );
+
return {
ids: rows.map(row => row.id),
codes: rows.map(row => row.rfqCode || ""),
+ statuses: rows.map(row => row.status || ""),
// "I"로 시작하는 ITB만 필터링
itbCount: rows.filter(row => row.rfqCode?.startsWith("I")).length,
- totalCount: rows.length
+ totalCount: rows.length,
+ // 담당자 지정 가능한 ITB (상태가 "RFQ 생성" 또는 "구매담당지정"인 ITB)
+ assignableItbCount: assignableRows.length,
+ assignableIds: assignableRows.map(row => row.id),
+ assignableCodes: assignableRows.map(row => row.rfqCode || "")
};
}, [selectedRows]);
- // 담당자 지정 가능 여부 체크 ("I"로 시작하는 항목이 있는지)
- const canAssignPic = selectedRfqData.itbCount > 0;
+ // 담당자 지정 가능 여부 체크 (상태가 "RFQ 생성" 또는 "구매담당지정"인 ITB가 있는지)
+ const canAssignPic = selectedRfqData.assignableItbCount > 0;
const handleAssignSuccess = () => {
// 테이블 선택 초기화
@@ -76,15 +86,15 @@ export function RfqTableToolbarActions<TData>({
<Users className="h-4 w-4" />
담당자 지정
<Badge variant="secondary" className="ml-1">
- {selectedRfqData.itbCount}건
+ {selectedRfqData.assignableItbCount}건
</Badge>
</Button>
</TooltipTrigger>
<TooltipContent>
<p>선택한 ITB에 구매 담당자를 지정합니다</p>
- {selectedRfqData.itbCount !== selectedRfqData.totalCount && (
+ {selectedRfqData.assignableItbCount !== selectedRfqData.itbCount && (
<p className="text-xs text-muted-foreground mt-1">
- 전체 {selectedRfqData.totalCount}건 중 ITB {selectedRfqData.itbCount}건만 지정됩니다
+ 전체 ITB {selectedRfqData.itbCount}건 중 {selectedRfqData.assignableItbCount}건만 지정 가능합니다
</p>
)}
</TooltipContent>
@@ -103,7 +113,7 @@ export function RfqTableToolbarActions<TData>({
</Badge>
{selectedRfqData.totalCount !== selectedRfqData.itbCount && (
<Badge variant="outline" className="text-xs">
- ITB {selectedRfqData.itbCount}건
+ ITB {selectedRfqData.itbCount}건 (지정가능 {selectedRfqData.assignableItbCount}건)
</Badge>
)}
</div>
@@ -139,8 +149,8 @@ export function RfqTableToolbarActions<TData>({
<RfqAssignPicDialog
open={showAssignDialog}
onOpenChange={setShowAssignDialog}
- selectedRfqIds={selectedRfqData.ids}
- selectedRfqCodes={selectedRfqData.codes}
+ selectedRfqIds={selectedRfqData.assignableIds}
+ selectedRfqCodes={selectedRfqData.assignableCodes}
onSuccess={handleAssignSuccess}
/>
</>