"use client"; import { Suspense, useMemo } from "react"; import Link from "next/link"; import { useSearchParams } from "next/navigation"; import { useQuery } from "@tanstack/react-query"; import { Plus } from "lucide-react"; import { accountingApi } from "@/lib/accounting-api"; import { useTenantId } from "@/hooks/useTenantId"; import { formatMoney } from "@/lib/utils"; import { PageHeader, Button, DataTable, EmptyState, LoadingState, ErrorState, Badge, JalaliDateText, } from "@/components/ds"; const STATUS_TITLES: Record = { draft: "اسناد پیش‌نویس", reversed: "اسناد برگشتی", posted: "تأیید و ثبت اسناد", }; function VouchersList() { const { tenantId } = useTenantId(); const sp = useSearchParams(); const statusFilter = sp.get("status") || ""; const listQ = useQuery({ queryKey: ["accounting", tenantId, "vouchers"], queryFn: () => accountingApi.vouchers.list(tenantId!), enabled: !!tenantId, }); const rows = useMemo(() => { const all = listQ.data ?? []; if (!statusFilter) return all; return all.filter((v) => String(v.status) === statusFilter); }, [listQ.data, statusFilter]); if (!tenantId || listQ.isLoading) return ; if (listQ.error) return listQ.refetch()} />; const title = STATUS_TITLES[statusFilter] || "لیست اسناد حسابداری"; return (
} /> ( {String(r.voucher_number)} ), }, { key: "voucher_date", header: "تاریخ", render: (r) => , }, { key: "status", header: "وضعیت", render: (r) => ( {String(r.status)} ), }, { key: "total_debit", header: "بدهکار", render: (r) => formatMoney(String(r.total_debit)) }, { key: "total_credit", header: "بستانکار", render: (r) => formatMoney(String(r.total_credit)) }, { key: "description", header: "شرح" }, ]} rows={rows as unknown as Record[]} empty={ } /> } />
); } export default function VouchersPage() { return ( }> ); }