import { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import { salesOrders } from '@/api/client' import type { SalesOrder } from '@/types/api' import { PageHeader } from '@/components/PageHeader' import { Loading } from '@/components/Loading' import { ErrorBox } from '@/components/ErrorBox' import { DataTable, type Column } from '@/components/DataTable' import { StatusBadge } from '@/components/StatusBadge' export function SalesOrdersPage() { const [rows, setRows] = useState([]) const [error, setError] = useState(null) const [loading, setLoading] = useState(true) useEffect(() => { salesOrders .list() .then((rs) => setRows([...rs].sort((a, b) => a.code.localeCompare(b.code)))) .catch((e: unknown) => setError(e instanceof Error ? e : new Error(String(e)))) .finally(() => setLoading(false)) }, []) const columns: Column[] = [ { header: 'Code', key: 'code', render: (r) => ( {r.code} ), }, { header: 'Customer', key: 'partnerCode', render: (r) => {r.partnerCode} }, { header: 'Date', key: 'orderDate' }, { header: 'Status', key: 'status', render: (r) => }, { header: 'Total', key: 'totalAmount', render: (r) => ( {Number(r.totalAmount).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, })}{' '} {r.currencyCode} ), }, { header: 'Lines', key: 'lines', render: (r) => {r.lines.length}, }, ] return (
+ New Order } /> {loading && } {error && } {!loading && !error && }
) }