"use client" import * as React from "react" import { useRouter } from "next/navigation" import { useTransition } from "react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Label } from "@/components/ui/label" import { Switch } from "@/components/ui/switch" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Pencil, Save, X } from "lucide-react" import { getBiddingConditions, updateBiddingConditions, getActivePaymentTerms, getActiveIncoterms } from "@/lib/bidding/service" import { useToast } from "@/hooks/use-toast" interface BiddingConditionsEditProps { biddingId: number initialConditions?: any | null paymentTermsOptions: Array<{code: string, description: string}> incotermsOptions: Array<{code: string, description: string}> } export function BiddingConditionsEdit({ biddingId, initialConditions, paymentTermsOptions, incotermsOptions }: BiddingConditionsEditProps) { const router = useRouter() const { toast } = useToast() const [isPending, startTransition] = useTransition() const [isEditing, setIsEditing] = React.useState(false) const [conditions, setConditions] = React.useState({ paymentTerms: initialConditions?.paymentTerms || "", taxConditions: initialConditions?.taxConditions || "", incoterms: initialConditions?.incoterms || "", contractDeliveryDate: initialConditions?.contractDeliveryDate ? new Date(initialConditions.contractDeliveryDate).toISOString().split('T')[0] : "", shippingPort: initialConditions?.shippingPort || "", destinationPort: initialConditions?.destinationPort || "", isPriceAdjustmentApplicable: initialConditions?.isPriceAdjustmentApplicable || false, sparePartOptions: initialConditions?.sparePartOptions || "", }) const handleSave = () => { startTransition(async () => { try { const result = await updateBiddingConditions(biddingId, conditions) if (result.success) { toast({ title: "성공", description: (result as { success: true; message: string }).message, variant: "default", }) setIsEditing(false) router.refresh() } else { toast({ title: "오류", description: (result as { success: false; error: string }).error || "입찰 조건 업데이트 중 오류가 발생했습니다.", variant: "destructive", }) } } catch (error) { console.error('Error updating bidding conditions:', error) toast({ title: "오류", description: "입찰 조건 업데이트 중 오류가 발생했습니다.", variant: "destructive", }) } }) } const handleCancel = () => { setConditions({ paymentTerms: initialConditions?.paymentTerms || "", taxConditions: initialConditions?.taxConditions || "", incoterms: initialConditions?.incoterms || "", contractDeliveryDate: initialConditions?.contractDeliveryDate ? new Date(initialConditions.contractDeliveryDate).toISOString().split('T')[0] : "", shippingPort: initialConditions?.shippingPort || "", destinationPort: initialConditions?.destinationPort || "", isPriceAdjustmentApplicable: initialConditions?.isPriceAdjustmentApplicable || false, sparePartOptions: initialConditions?.sparePartOptions || "", }) setIsEditing(false) } if (!isEditing) { return ( 입찰 조건

{conditions.paymentTerms ? paymentTermsOptions.find(opt => opt.code === conditions.paymentTerms)?.code || conditions.paymentTerms : "미설정" }

{conditions.taxConditions || "미설정"}

{conditions.incoterms ? incotermsOptions.find(opt => opt.code === conditions.incoterms)?.code || conditions.incoterms : "미설정" }

{conditions.contractDeliveryDate ? new Date(conditions.contractDeliveryDate).toLocaleDateString('ko-KR') : "미설정" }

{conditions.shippingPort || "미설정"}

{conditions.destinationPort || "미설정"}

{conditions.isPriceAdjustmentApplicable ? "적용 가능" : "적용 불가"}

{conditions.sparePartOptions}

) } return ( 입찰 조건 수정
setConditions(prev => ({ ...prev, taxConditions: e.target.value }))} />
setConditions(prev => ({ ...prev, contractDeliveryDate: e.target.value }))} />
setConditions(prev => ({ ...prev, shippingPort: e.target.value }))} />
setConditions(prev => ({ ...prev, destinationPort: e.target.value }))} />
setConditions(prev => ({ ...prev, isPriceAdjustmentApplicable: checked }))} />