"use client" import { useRouter } from "next/navigation" import { ResourcePage } from "@/shared/data-view/resource-page" import { ColumnHeader } from "@/shared/data-view/table-view" import FormDialog from "@/shared/components/form-dialog" import { PurchaseOrderForm } from "@/modules/purchase-orders/purchase-order-form" import { PURCHASE_ORDER_ROUTES } from "@garage/api" import type { PurchaseOrdersClient } from "@garage/api" import { RelationLink } from "@/shared/components/relation-link" import { Building2, Printer } from "lucide-react" import { getFullName } from "@/shared/utils/getFullName" import { useDocumentPrint } from "@/shared/hooks/use-document-print" export default function PurchaseOrdersPage() { const router = useRouter() const { print, isPrinting } = useDocumentPrint() return ( pageTitle="Purchase Orders" routeKey={PURCHASE_ORDER_ROUTES.INDEX} searchable searchPlaceholder="Search purchase orders..." getClient={(api) => api.purchaseOrders} onRowClick={(row) => router.push(`/purchase/purchase-order/${(row as any).id}`)} headerProps={({ selectedItem, invalidateQuery }) => ({ actions: ( {(resourceId, { close }) => ( { invalidateQuery(); close()}} /> )} ), })} columns={({ actionsColumn }) => [ { accessorKey: "order_number", header: ({ column }) => , cell: ({ row }) => (row.original as any).order_number || "—", }, { accessorKey: "title", header: ({ column }) => , }, { accessorKey: "vendor_name", header: ({ column }) => , cell: ({ row }) => { const item = row.original as any return ( ) }, }, { accessorKey: "order_date", header: ({ column }) => , cell: ({ row }) => { const val = (row.original as any).order_date return val ? new Date(val).toLocaleDateString() : "—" }, }, { accessorKey: "delivery_date", header: ({ column }) => , cell: ({ row }) => { const val = (row.original as any).delivery_date return val ? new Date(val).toLocaleDateString() : "—" }, }, { accessorKey: "created_at", header: ({ column }) => , cell: ({ row }) => { const val = (row.original as any).created_at return val ? new Date(val).toLocaleDateString() : "—" }, }, actionsColumn({ extraItems: (row) => [ { label: isPrinting ? "Printing..." : "Print", icon: Printer, onClick: (r) => print("purchase_order", String(r.id), "print"), }, ], }), ]} /> ) }