"use client"; import { useActionState, useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Banknote, Loader2 } from "lucide-react"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { recordPaymentAction } from "@/lib/appwrite/payment-actions"; import { PAYMENT_METHOD_OPTIONS, initialPaymentFormState, } from "@/lib/appwrite/payment-types"; export function RecordPaymentDialog({ counterpartTenantId, counterpartName, selfKind, defaultCurrency, openAmount, triggerLabel, }: { counterpartTenantId: string; counterpartName: string; selfKind: "lab" | "clinic"; defaultCurrency: string; openAmount?: number; triggerLabel?: string; }) { const router = useRouter(); const [open, setOpen] = useState(false); const [state, action, pending] = useActionState( recordPaymentAction, initialPaymentFormState, ); useEffect(() => { if (state.ok) { toast.success("Ödeme kaydedildi."); setOpen(false); router.refresh(); } else if (state.error) { toast.error(state.error); } }, [state, router]); const label = triggerLabel ?? (selfKind === "lab" ? "Ödeme Al" : "Ödeme Yap"); const title = selfKind === "lab" ? "Tahsilat Kaydı" : "Ödeme Kaydı"; const today = new Date().toISOString().slice(0, 10); return ( {title} — {counterpartName} {selfKind === "lab" ? "Bu kliniğin yaptığı toplu ödemeyi kaydedin. Açık bakiyeden otomatik düşülür." : "Bu laboratuvara yaptığınız ödemeyi kaydedin."} {typeof openAmount === "number" && ( <> {" "}Açık bakiye:{" "} {openAmount.toLocaleString("tr-TR")} {defaultCurrency} )}
{state.fieldErrors?.amount && (

{state.fieldErrors.amount}

)}