"use client"; import * as React from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { Plus, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { createPaymentTerm } from "../service"; import { toast } from "sonner"; const createPaymentTermSchema = z.object({ code: z.string().min(1, "코드는 필수입니다."), description: z.string().min(1, "설명은 필수입니다."), isActive: z.boolean().default(true), }); type CreatePaymentTermFormValues = z.infer; interface PaymentTermsAddDialogProps { onSuccess?: () => void; } export function PaymentTermsAddDialog({ onSuccess }: PaymentTermsAddDialogProps) { const [open, setOpen] = React.useState(false); const [isLoading, setIsLoading] = React.useState(false); const form = useForm({ resolver: zodResolver(createPaymentTermSchema), defaultValues: { code: "", description: "", isActive: true, }, }); const handleOpenChange = (newOpen: boolean) => { setOpen(newOpen); if (!newOpen) { form.reset(); } }; const handleCancel = () => { form.reset(); setOpen(false); }; const onSubmit = async (data: CreatePaymentTermFormValues) => { setIsLoading(true); try { const result = await createPaymentTerm(data); if (result.data) { toast.success("결제 조건이 추가되었습니다."); setOpen(false); if (onSuccess) { onSuccess(); } } else { toast.error(result.error || "생성 중 오류가 발생했습니다."); } } catch (error) { console.error("결제 조건 생성 오류:", error); toast.error("결제 조건 생성에 실패했습니다."); } finally { setIsLoading(false); } }; return ( 결제 조건 추가 새로운 결제 조건을 추가합니다. 필수 정보를 입력해주세요.
( 코드 * )} /> ( 설명 * )} />
); }