import { formatCurrency } from "@/lib/format"; import { getDashboardStats, getLowStockParts, getPurchaseOrders, getSalesOrders } from "@/lib/repository"; export default function DashboardPage() { const stats = getDashboardStats(); const salesOrders = getSalesOrders().slice(0, 5); const purchaseOrders = getPurchaseOrders().slice(0, 5); const lowStockParts = getLowStockParts().slice(0, 8); return (
Stocked Parts
{stats.totalParts}
Assemblies
{stats.totalAssemblies}
Open Sales Orders
{stats.openSalesOrders}
Open Purchase Orders
{stats.openPurchaseOrders}
Open Invoices
{stats.openInvoices}
Open Vendor Bills
{stats.openVendorBills}
Low Stock Alerts
{stats.lowStockCount}
Inventory Value
{formatCurrency(stats.inventoryValue)}
Accounts Receivable
{formatCurrency(stats.accountsReceivable)}
Accounts Payable
{formatCurrency(stats.accountsPayable)}

Recent Sales Orders

Track outbound work and spot orders that are ready to ship.

{salesOrders.length === 0 ? ( ) : ( salesOrders.map((order) => ( )) )}
OrderCustomerStatusTotal
No sales orders yet.
{order.orderNumber} {order.customerName} {order.status} {formatCurrency(order.totalAmount)}

Recent Purchase Orders

Move supply from ordered to received and feed inventory automatically.

{purchaseOrders.length === 0 ? ( ) : ( purchaseOrders.map((order) => ( )) )}
OrderVendorStatusTotal
No purchase orders yet.
{order.orderNumber} {order.vendorName} {order.status} {formatCurrency(order.totalAmount)}

Replenishment Watchlist

Items at or below reorder point, with a suggested quantity to bring them back up.

{lowStockParts.length === 0 ? ( ) : ( lowStockParts.map((part) => ( )) )}
SKUNameOn HandReorder PointSuggested ReorderLast Vendor
No low stock items right now.
{part.sku} {part.name} {part.quantityOnHand} {part.unitOfMeasure} {part.reorderPoint} {part.suggestedReorderQuantity} {part.preferredVendorName || "—"}
); }