// Export.jsx — AutoCount export function ExportPage() { const [from, setFrom] = React.useState('2026-04-01'); const [to, setTo] = React.useState('2026-04-30'); const completed = WORK_ORDERS.filter(w => w.status === 'Job Completed' || w.status === 'Job Started' || w.status === 'On the Way'); const [selected, setSelected] = React.useState(new Set(completed.map(w => w.id))); const toggle = (id) => { const s = new Set(selected); if (s.has(id)) s.delete(id); else s.add(id); setSelected(s); }; const mappings = [ ['Customer Name', 'Debtor Code / Customer'], ['Contact Person', 'Attention'], ['Phone Number', 'Phone'], ['Job Location', 'Delivery Address'], ['Machinery Type', 'Item Code'], ['Crane Tonnage', 'UOM'], ['Job Date', 'Invoice Date'], ['Price', 'Amount'], ['Diesel Surcharge','Additional Charge'], ['Remarks', 'Description'], ['Operator', 'Salesman'], ['WO ID', 'Reference No'], ]; return (
Export Range
{selected.size} jobs selected · est. {(selected.size * 5.4).toFixed(1)} KB
setFrom(e.target.value)}/>
setTo(e.target.value)}/>
{completed.map(w => ( ))}
setSelected(selected.size === completed.length ? new Set() : new Set(completed.map(w => w.id)))}/> WO IDCustomerDateAmount
toggle(w.id)}/> {w.id} {w.customer} {new Date(w.date).toLocaleDateString('en-MY', {day: '2-digit', month: 'short'})} {w.price}
Files write to: autocount/sales-invoice-import-2026-04.csv · Format: AutoCount Sales Invoice Import v2.1
Field Mapping
How Pow Lee work order fields translate into AutoCount fields on import.
Work Order
AutoCount
{mappings.map(([s, d]) => (
{s}
{d}
))}
); } Object.assign(window, { ExportPage });