diff options
Diffstat (limited to 'lib/vendor-pool/table/vendor-pool-table.tsx')
| -rw-r--r-- | lib/vendor-pool/table/vendor-pool-table.tsx | 83 |
1 files changed, 7 insertions, 76 deletions
diff --git a/lib/vendor-pool/table/vendor-pool-table.tsx b/lib/vendor-pool/table/vendor-pool-table.tsx index 54c6ea4d..43dd64c1 100644 --- a/lib/vendor-pool/table/vendor-pool-table.tsx +++ b/lib/vendor-pool/table/vendor-pool-table.tsx @@ -14,12 +14,9 @@ import { Button } from "@/components/ui/button" import { toast } from "sonner" import { BulkImportDialog } from "./bulk-import-dialog" -import { columns, type VendorPoolItem } from "./columns" +import { columns, type VendorPoolItem } from "./vendor-pool-table-columns" import { createVendorPool, updateVendorPool, deleteVendorPool } from "../service" -import { getVendorByTaxId } from "@/lib/vendors/service" -import { getMaterialGroupDetail } from "@/lib/material-groups/services" import type { VendorPool } from "../types" -import { cn } from "@/lib/utils" // 테이블 메타 타입 확장 declare module "@tanstack/react-table" { @@ -31,8 +28,6 @@ declare module "@tanstack/react-table" { onCancelEmptyRow?: (tempId: string) => void isEmptyRow?: (id: string) => boolean getPendingChanges?: () => Record<string, Partial<VendorPoolItem>> - onTaxIdChange?: (id: string, taxId: string) => Promise<void> - onMaterialGroupCodeChange?: (id: string, materialGroupCode: string) => Promise<void> } } @@ -83,68 +78,6 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP })) }, []) - // 사업자번호 변경 시 자동 vendor 검색 핸들러 - const handleTaxIdChange = React.useCallback(async (id: string, taxId: string) => { - if (!taxId || taxId.trim() === '') return - - try { - const result = await getVendorByTaxId(taxId.trim()) - if (result.data) { - // vendor 정보가 있으면 vendorCode와 vendorName을 자동으로 설정 - await handleCellUpdate(id, 'vendorCode', result.data.vendorCode || '') - await handleCellUpdate(id, 'vendorName', result.data.vendorName || '') - toast.success(`사업자번호로 '${result.data.vendorName}' 업체 정보를 자동 입력했습니다.`) - } else { - // vendor 정보가 없으면 vendorCode와 vendorName을 빈 값으로 설정 - await handleCellUpdate(id, 'vendorCode', '') - await handleCellUpdate(id, 'vendorName', '') - } - } catch (error) { - console.error('사업자번호 검색 실패:', error) - toast.error('사업자번호 검색 중 오류가 발생했습니다.') - } - }, [handleCellUpdate]) - - // 자재그룹코드 변경 시 자동 materialGroupName 검색 및 Equip/Bulk 구분 설정 핸들러 - const handleMaterialGroupCodeChange = React.useCallback(async (id: string, materialGroupCode: string) => { - if (!materialGroupCode || materialGroupCode.trim() === '') return - - const code = materialGroupCode.trim() - - try { - const materialGroup = await getMaterialGroupDetail(code) - if (materialGroup) { - // 자재그룹 정보가 있으면 materialGroupName을 자동으로 설정 - await handleCellUpdate(id, 'materialGroupName', materialGroup.materialGroupDesc || '') - toast.success(`자재그룹코드로 '${materialGroup.materialGroupDesc}' 정보를 자동 입력했습니다.`) - } else { - // 자재그룹 정보가 없으면 materialGroupName을 빈 값으로 설정 - await handleCellUpdate(id, 'materialGroupName', '') - } - - // Equip/Bulk 구분 자동 설정 - let equipBulkDivision = '' - if (code.startsWith('A1')) { - equipBulkDivision = 'S' - } else if (code.startsWith('A') || code.startsWith('B7') || code === 'SP1328' || code === 'SP1329') { - equipBulkDivision = 'B' - } else if (code.startsWith('B')) { - equipBulkDivision = 'E' - } - - if (equipBulkDivision) { - await handleCellUpdate(id, 'equipBulkDivision', equipBulkDivision) - toast.success(`자재그룹코드에 따라 Equip/Bulk 구분을 '${equipBulkDivision}'으로 자동 설정했습니다.`) - } else { - // Equip/Bulk 구분을 빈 값으로 설정하여 pendingChanges에 반영 - await handleCellUpdate(id, 'equipBulkDivision', '') - toast.info('현 자재그룹코드에 따라 Equip/Bulk 구분을 자동 설정할 수 없습니다.') - } - } catch (error) { - console.error('자재그룹코드 검색 실패:', error) - toast.error('자재그룹코드 검색 중 오류가 발생했습니다.') - } - }, [handleCellUpdate]) // 편집 취소 핸들러 @@ -631,7 +564,7 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP filterFields, enablePinning: true, enableAdvancedFilter: true, - enableColumnResizing: true, + // enableColumnResizing: true, columnResizeMode: "onChange", initialState: { sorting: [{ id: "registrationDate", desc: true }], @@ -658,8 +591,8 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP toast.info('저장 기능은 개발 중입니다.') break - case 'fixed-values': - toast.info('고정값 설정 기능은 개발 중입니다.') + case 'excel-import': + toast.info('Excel Import 기능은 개발 중입니다.') break case 'delete': @@ -722,9 +655,7 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP onSaveEmptyRow: saveEmptyRow, onCancelEmptyRow: cancelEmptyRow, isEmptyRow: (id: string) => String(id).startsWith('temp-'), - getPendingChanges: () => pendingChanges, - onTaxIdChange: handleTaxIdChange, - onMaterialGroupCodeChange: handleMaterialGroupCodeChange + getPendingChanges: () => pendingChanges } @@ -769,11 +700,11 @@ export function VendorPoolTable({ data, pageCount, onRefresh }: VendorPoolTableP </Button> <Button - onClick={() => handleToolbarAction('fixed-values')} + onClick={() => handleToolbarAction('excel-import')} variant="outline" size="sm" > - FA 상세 + Excel Import </Button> <Button |
