import { NextRequest, NextResponse } from "next/server"; import { getDb } from "@/lib/db"; export async function GET( _request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const sql = getDb(); const { id } = await params; const plRows = await sql( `SELECT pl.*, po.po_number, po.customer_ref, po.order_date, c.name AS customer_name, c.code AS customer_code, c.email AS customer_email, c.phone AS customer_phone, c.address AS customer_address, c.contact_person AS customer_contact, p.name AS product_name, p.sku AS product_sku FROM packing_lists pl JOIN purchase_orders po ON po.id = pl.purchase_order_id JOIN customers c ON c.id = po.customer_id JOIN purchase_order_items poi ON poi.id = pl.po_item_id JOIN products p ON p.id = poi.product_id WHERE pl.id = $1`, [Number(id)] ); if (plRows.length === 0) { return NextResponse.json({ error: "Packing list not found" }, { status: 404 }); } const serials = await sql( `SELECT * FROM packing_list_serials WHERE packing_list_id = $1 ORDER BY id ASC`, [Number(id)] ); return NextResponse.json({ ...plRows[0], serials }); } catch (error) { console.error("[v0] Packing list detail GET error:", error); return NextResponse.json( { error: error instanceof Error ? error.message : "Failed to fetch packing list" }, { status: 500 } ); } } export async function DELETE( _request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const sql = getDb(); const { id } = await params; // Get the packing list details to reverse shipped_quantity const plRows = await sql( `SELECT * FROM packing_lists WHERE id = $1`, [Number(id)] ); if (plRows.length === 0) { return NextResponse.json({ error: "Packing list not found" }, { status: 404 }); } const pl = plRows[0]; // Delete serials await sql(`DELETE FROM packing_list_serials WHERE packing_list_id = $1`, [Number(id)]); // Delete packing list await sql(`DELETE FROM packing_lists WHERE id = $1`, [Number(id)]); // Reverse the shipped_quantity await sql( `UPDATE purchase_order_items SET shipped_quantity = GREATEST(0, COALESCE(shipped_quantity, 0) - $1) WHERE id = $2`, [Number(pl.quantity), Number(pl.po_item_id)] ); return NextResponse.json({ success: true }); } catch (error) { console.error("[v0] Packing list DELETE error:", error); return NextResponse.json( { error: error instanceof Error ? error.message : "Failed to delete packing list" }, { status: 500 } ); } }