summaryrefslogtreecommitdiff
path: root/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-11-28 07:45:32 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-11-28 07:45:32 +0000
commit1eb7cf92d1d7711e5d62a750e7611dc6fd1a241d (patch)
treeb278c04fa755ed6375f20b5a179c60b033dd6d20 /lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx
parent927b3d6cbfad6ce84ec1bff2faaace95e9586efd (diff)
(최겸) 구매 피드백 반영(입찰SAP 취소 개발 잔재)
Diffstat (limited to 'lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx')
-rw-r--r--lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx27
1 files changed, 21 insertions, 6 deletions
diff --git a/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx b/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx
index 53fe05f9..8df29289 100644
--- a/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx
+++ b/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx
@@ -6,7 +6,7 @@ import { useTransition } from "react"
import { Button } from "@/components/ui/button"
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"
import { Plus, Send, RotateCcw, XCircle, Trophy, FileText, DollarSign, RotateCw } from "lucide-react"
-import { registerBidding, markAsDisposal, createRebidding, cancelAwardRatio } from "@/lib/bidding/detail/service"
+import { registerBidding, markAsDisposal, cancelAwardRatio } from "@/lib/bidding/detail/service"
import { sendBiddingBasicContracts, getSelectedVendorsForBidding } from "@/lib/bidding/pre-quote/service"
import { increaseRoundOrRebid } from "@/lib/bidding/service"
@@ -21,8 +21,10 @@ interface BiddingDetailVendorToolbarActionsProps {
bidding: Bidding
userId: string
onOpenAwardDialog: () => void
+ onOpenAwardRatioDialog: () => void
onSuccess: () => void
winnerVendor?: QuotationVendor | null // 100% 낙찰된 벤더
+ singleSelectedVendor?: QuotationVendor | null // single select된 벤더
}
export function BiddingDetailVendorToolbarActions({
@@ -30,8 +32,10 @@ export function BiddingDetailVendorToolbarActions({
bidding,
userId,
onOpenAwardDialog,
+ onOpenAwardRatioDialog,
onSuccess,
- winnerVendor
+ winnerVendor,
+ singleSelectedVendor
}: BiddingDetailVendorToolbarActionsProps) {
const router = useRouter()
const { toast } = useToast()
@@ -210,18 +214,16 @@ export function BiddingDetailVendorToolbarActions({
const result = await increaseRoundOrRebid(bidding.id, userId, 'round_increase')
if (result.success) {
- const successResult = result as { success: true; message: string; biddingId: number; biddingNumber: string }
toast({
title: "성공",
- description: successResult.message,
+ description: '차수증가가 완료되었습니다.',
})
router.push(`/evcp/bid`)
onSuccess()
} else {
- const errorResult = result as { success: false; error: string }
toast({
title: "오류",
- description: errorResult.error || "차수증가 중 오류가 발생했습니다.",
+ description: result.error || "차수증가 중 오류가 발생했습니다.",
variant: 'destructive',
})
}
@@ -245,6 +247,19 @@ export function BiddingDetailVendorToolbarActions({
</Button>
)}
+ {/* 발주비율 산정: single select 시에만 활성화 */}
+ {(bidding.status === 'evaluation_of_bidding') && (
+ <Button
+ variant="outline"
+ size="sm"
+ onClick={onOpenAwardRatioDialog}
+ disabled={!singleSelectedVendor || isPending || singleSelectedVendor.isBiddingParticipated !== true}
+ >
+ <DollarSign className="mr-2 h-4 w-4" />
+ 발주비율 산정
+ </Button>
+ )}
+
{/* 유찰/낙찰: 입찰공고 또는 입찰평가중 상태에서만 */}
{(bidding.status === 'bidding_opened' || bidding.status === 'evaluation_of_bidding') && (
<>