diff --git a/backend/src/tools/statistik/routes.js b/backend/src/tools/statistik/routes.js index 3fd1220..26f5ab9 100644 --- a/backend/src/tools/statistik/routes.js +++ b/backend/src/tools/statistik/routes.js @@ -154,7 +154,10 @@ router.get('/overview', authenticate, (req, res) => { const key = getBucketKey(dateStr); if (!key) continue; if (!buckets[key]) buckets[key] = { month:key, revenue:0, expenses:0, orders:0 }; - if (o.bezahlt) buckets[key].revenue += getOrderRevenue(o); + if (o.bezahlt) { + buckets[key].revenue += getOrderRevenue(o); + buckets[key].base_cost = (buckets[key].base_cost||0) + getOrderBaseCost(o.id); + } buckets[key].orders++; } @@ -170,14 +173,14 @@ router.get('/overview', authenticate, (req, res) => { // Sortiert + ohne Filter auf letzte 12 Monate begrenzen let monthlyData = Object.values(buckets) .sort((a,b) => a.month.localeCompare(b.month)) - .map(m => ({ ...m, revenue: round2(m.revenue), expenses: round2(m.expenses) })); + .map(m => ({ ...m, revenue: round2(m.revenue), base_cost: round2(m.base_cost||0), expenses: round2(m.expenses) })); if (!from && !to) monthlyData = monthlyData.slice(-12); // Kumulierter Nettogewinn (pro Bucket) let cum = 0; const cumulativeData = monthlyData.map(m => { - cum += m.revenue - m.expenses; + cum += (m.revenue||0) - (m.base_cost||0) - (m.expenses||0); return { month: m.month, value: round2(cum) }; }); @@ -233,6 +236,23 @@ router.get('/month-orders', authenticate, (req, res) => { }))); }); +// Debug2: monthlyData mit base_cost prüfen +router.get('/debug2', authenticate, (req, res) => { + const { from, to } = req.query; + const u = uid(req); + const allOrders = db.prepare('SELECT * FROM orders WHERE user_id=? AND bezahlt=1').all(u); + const result = allOrders.map(o => { + const rev = getOrderRevenue(o); + const cost = getOrderBaseCost(o.id); + return { id:o.id, name:o.name, bezahlt_am:o.bezahlt_am, revenue:rev, base_cost:cost, profit: rev-cost }; + }); + res.json({ orders: result, totals: { + revenue: result.reduce((s,o)=>s+o.revenue,0), + base_cost: result.reduce((s,o)=>s+o.base_cost,0), + profit: result.reduce((s,o)=>s+o.profit,0), + }}); +}); + // Debug: rohe Auftragsdaten mit Revenue router.get('/debug', authenticate, (req, res) => { const u = uid(req);