import { auth } from "@/auth"; import { db } from "@/lib/db"; import { notFound, redirect } from "next/navigation"; import { EditPoForm } from "./edit-po-form"; import type { Metadata } from "next"; interface Props { params: Promise<{ id: string }>; } export const metadata: Metadata = { title: "Edit Purchase Order" }; export default async function EditPoPage({ params }: Props) { const session = await auth(); if (!session?.user) redirect("/login"); const { id } = await params; const po = await db.purchaseOrder.findUnique({ where: { id }, include: { lineItems: { orderBy: { sortOrder: "asc" } } }, }); if (!po) notFound(); if (!["DRAFT", "EDITS_REQUESTED"].includes(po.status)) redirect(`/po/${id}`); const canEdit = po.submitterId === session.user.id || session.user.role === "SUPERUSER"; if (!canEdit) redirect(`/po/${id}`); const [vessels, accounts, vendors] = await Promise.all([ db.vessel.findMany({ where: { isActive: true }, orderBy: { name: "asc" } }), db.account.findMany({ where: { isActive: true }, orderBy: { name: "asc" } }), db.vendor.findMany({ where: { isActive: true }, orderBy: { name: "asc" } }), ]); const serializedPo = { ...po, totalAmount: po.totalAmount.toNumber(), lineItems: po.lineItems.map((li) => ({ ...li, quantity: li.quantity.toNumber(), unitPrice: li.unitPrice.toNumber(), totalPrice: li.totalPrice.toNumber(), gstRate: li.gstRate.toNumber(), })), }; return (

Edit Purchase Order

{po.poNumber}

); }