summaryrefslogtreecommitdiff
path: root/lib/vendor-pool/table/vendor-pool-table.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-pool/table/vendor-pool-table.tsx')
-rw-r--r--lib/vendor-pool/table/vendor-pool-table.tsx83
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