summaryrefslogtreecommitdiff
path: root/lib/avl/table/avl-detail-table.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/avl/table/avl-detail-table.tsx')
-rw-r--r--lib/avl/table/avl-detail-table.tsx70
1 files changed, 1 insertions, 69 deletions
diff --git a/lib/avl/table/avl-detail-table.tsx b/lib/avl/table/avl-detail-table.tsx
index 4408340a..22c503ff 100644
--- a/lib/avl/table/avl-detail-table.tsx
+++ b/lib/avl/table/avl-detail-table.tsx
@@ -6,12 +6,10 @@ import { useDataTable } from "@/hooks/use-data-table"
import { DataTable } from "@/components/data-table/data-table"
import { Button } from "@/components/ui/button"
import { toast } from "sonner"
-import { createAvlRfqItbAction, prepareAvlRfqItbInput } from "../avl-itb-rfq-service"
import { columns } from "./columns-detail"
import type { AvlDetailItem } from "../types"
import { BackButton } from "@/components/ui/back-button"
-import { useSession } from "next-auth/react"
interface AvlDetailTableProps {
data: AvlDetailItem[]
@@ -33,63 +31,11 @@ export function AvlDetailTable({
projectInfo,
businessType,
}: AvlDetailTableProps) {
- // 견적요청 처리 상태 관리
- const [isProcessingQuote, setIsProcessingQuote] = React.useState(false)
- const { data: session } = useSession()
-
- // 견적요청 처리 함수
- const handleQuoteRequest = React.useCallback(async () => {
- if (!businessType || !['조선', '해양'].includes(businessType)) {
- toast.error("공사구분이 올바르지 않습니다. 견적요청 처리 불가.")
- return
- }
- if (data.length === 0) {
- toast.error("견적요청할 AVL 데이터가 없습니다.")
- return
- }
-
- setIsProcessingQuote(true)
-
- try {
- // 현재 사용자 세션에서 ID 가져오기
- const currentUserId = session?.user?.id ? Number(session.user.id) : undefined
-
- // 견적요청 입력 데이터 준비 (전체 데이터를 사용)
- const quoteInput = await prepareAvlRfqItbInput(
- data, // 전체 데이터를 사용
- businessType as '조선' | '해양',
- {
- picUserId: currentUserId,
- rfqTitle: `${businessType} AVL 견적요청 - ${data[0]?.materialNameCustomerSide || 'AVL 아이템'}${data.length > 1 ? ` 외 ${data.length - 1}건` : ''}`
- }
- )
-
- // 견적요청 실행
- const result = await createAvlRfqItbAction(quoteInput)
-
- if (result.success) {
- toast.success(`${result.data?.type}가 성공적으로 생성되었습니다. (코드: ${result.data?.rfqCode})`)
- } else {
- toast.error(result.error || "견적요청 처리 중 오류가 발생했습니다.")
- }
-
- } catch (error) {
- console.error('견적요청 처리 오류:', error)
- toast.error("견적요청 처리 중 오류가 발생했습니다.")
- } finally {
- setIsProcessingQuote(false)
- }
- }, [businessType, data, session?.user?.id])
// 액션 핸들러
const handleAction = React.useCallback(async (action: string) => {
switch (action) {
-
- case 'quote-request':
- await handleQuoteRequest()
- break
-
case 'vendor-pool':
window.open('/evcp/vendor-pool', '_blank')
break
@@ -107,7 +53,7 @@ export function AvlDetailTable({
default:
toast.error(`알 수 없는 액션: ${action}`)
}
- }, [handleQuoteRequest])
+ }, [])
// 테이블 메타 설정
@@ -153,24 +99,10 @@ export function AvlDetailTable({
{/* 상단 버튼 영역 */}
<div className="flex items-center gap-2 ml-auto justify-end">
- {
- // 표준AVL로는 견적요청하지 않으며, 프로젝트 AVL로만 견적요청처리
- avlType === '프로젝트AVL' && businessType && ['조선', '해양'].includes(businessType) &&
- <Button
- variant="outline"
- size="sm"
- onClick={() => handleAction('quote-request')}
- disabled={data.length === 0 || isProcessingQuote}
- >
- {isProcessingQuote ? '처리중...' : `${businessType} 견적요청 (${businessType === '조선' ? 'RFQ' : 'ITB'})`}
- </Button>
- }
-
{/* 단순 이동 버튼 */}
<Button variant="outline" size="sm" onClick={() => handleAction('vendor-pool')}>
Vendor Pool
</Button>
-
</div>
{/* 데이터 테이블 */}