diff --git a/frontend/src/tools/statistik.jsx b/frontend/src/tools/statistik.jsx index 731fc22..398d34e 100644 --- a/frontend/src/tools/statistik.jsx +++ b/frontend/src/tools/statistik.jsx @@ -106,38 +106,70 @@ function OrdersInPeriod({ period, custom }) { api(`/tools/statistik/month-orders${q}`).then(setOrders).catch(()=>setOrders([])); }, [period, custom]); - const statusColor = { warteliste:'#ffe66d', in_arbeit:'#4ecdc4', fertig:'#6bcb77' }; + const STATUS_ORDER = ['warteliste','in_arbeit','fertig','bezahlt','abgeschlossen']; + const STATUS_COLOR = { warteliste:'#ffe66d', in_arbeit:'#4ecdc4', fertig:'#6bcb77', bezahlt:'#c084fc', abgeschlossen:'#4ade80' }; + const STATUS_LABEL = { warteliste:'Warteliste', in_arbeit:'In Arbeit', fertig:'Fertig', bezahlt:'Bezahlt', abgeschlossen:'Abgeschlossen' }; + const periodLabel = period==='week'?'DIESER WOCHE':period==='month'?'DIESEM MONAT':period==='year'?'DIESEM JAHR':period==='all'?'GESAMT':'IM ZEITRAUM'; + // Gruppieren nach Status + const grouped = {}; + (orders||[]).forEach(o => { + const st = !!o.bezahlt && !!o.abgeholt ? 'abgeschlossen' : !!o.bezahlt ? 'bezahlt' : o.status; + if (!grouped[st]) grouped[st] = []; + grouped[st].push({ ...o, _st: st }); + }); + + // Innerhalb jeder Gruppe nach Datum sortieren (neueste zuerst) + Object.values(grouped).forEach(g => g.sort((a,b) => new Date(b.created_at) - new Date(a.created_at))); + return (