summaryrefslogtreecommitdiff
path: root/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx')
-rw-r--r--lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx25
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx b/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx
index 1a1b331e..6e5481f4 100644
--- a/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx
+++ b/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx
@@ -24,6 +24,7 @@ interface BiddingDetailVendorEditDialogProps {
onSuccess: () => void
biddingAwardCount?: string // 낙찰수 정보 추가
biddingStatus?: string // 입찰 상태 정보 추가
+ allVendors?: QuotationVendor[] // 전체 벤더 목록 추가
}
export function BiddingDetailVendorEditDialog({
@@ -32,7 +33,8 @@ export function BiddingDetailVendorEditDialog({
onOpenChange,
onSuccess,
biddingAwardCount,
- biddingStatus
+ biddingStatus,
+ allVendors = []
}: BiddingDetailVendorEditDialogProps) {
const { toast } = useToast()
const [isPending, startTransition] = useTransition()
@@ -42,6 +44,14 @@ export function BiddingDetailVendorEditDialog({
awardRatio: 0,
})
+ // 단수낙찰의 경우 이미 100%인 벤더가 있는지 확인
+ const hasWinnerWith100Percent = React.useMemo(() => {
+ if (biddingAwardCount === 'single') {
+ return allVendors.some(v => v.awardRatio === 100 && v.id !== vendor?.id)
+ }
+ return false
+ }, [allVendors, biddingAwardCount, vendor?.id])
+
// vendor가 변경되면 폼 데이터 업데이트
React.useEffect(() => {
if (vendor) {
@@ -135,7 +145,7 @@ export function BiddingDetailVendorEditDialog({
value={formData.awardRatio}
onChange={(e) => setFormData({ ...formData, awardRatio: Number(e.target.value) })}
placeholder="발주비율을 입력하세요"
- disabled={vendor?.isBiddingParticipated !== true || biddingAwardCount === 'single' || biddingStatus === 'vendor_selected'}
+ disabled={vendor?.isBiddingParticipated !== true || biddingAwardCount === 'single' || biddingStatus === 'vendor_selected' || hasWinnerWith100Percent}
/>
{vendor?.isBiddingParticipated !== true && (
<p className="text-sm text-muted-foreground">
@@ -152,15 +162,20 @@ export function BiddingDetailVendorEditDialog({
낙찰이 완료되어 발주비율을 수정할 수 없습니다.
</p>
)}
+ {hasWinnerWith100Percent && (
+ <p className="text-sm text-orange-600">
+ 단수 낙찰의 경우 이미 100% 발주비율이 설정된 업체가 있어 다른 업체의 발주비율을 수정할 수 없습니다.
+ </p>
+ )}
</div>
</div>
<DialogFooter>
<Button variant="outline" onClick={() => onOpenChange(false)}>
취소
</Button>
- <Button
- onClick={handleEdit}
- disabled={isPending || vendor?.isBiddingParticipated !== true}
+ <Button
+ onClick={handleEdit}
+ disabled={isPending || vendor?.isBiddingParticipated !== true || hasWinnerWith100Percent}
>
산정
</Button>