From 5ca4e8044c7d32a1b0e69328764a8ab8baf51ad2 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Fri, 23 Jan 2026 10:03:29 +0000 Subject: [PATCH] Generated by Spark: Fix all reported errors. --- src/components/dashboard-view.tsx | 6 +++--- src/components/views/PayrollView.tsx | 2 +- src/hooks/use-app-data.ts | 4 ++-- src/hooks/use-invoicing.ts | 6 +++--- src/hooks/use-margin-analysis.ts | 14 +++++++------- src/hooks/use-payroll-calculations.ts | 4 ++-- src/hooks/use-sample-data.ts | 16 ++++++++++++++-- 7 files changed, 32 insertions(+), 20 deletions(-) diff --git a/src/components/dashboard-view.tsx b/src/components/dashboard-view.tsx index d856e7d..ca17971 100644 --- a/src/components/dashboard-view.tsx +++ b/src/components/dashboard-view.tsx @@ -64,7 +64,7 @@ export function DashboardView({ metrics }: DashboardViewProps) {
- £{metrics.monthlyRevenue.toLocaleString()} + £{(metrics.monthlyRevenue || 0).toLocaleString()}
@@ -80,7 +80,7 @@ export function DashboardView({ metrics }: DashboardViewProps) {
- £{metrics.monthlyPayroll.toLocaleString()} + £{(metrics.monthlyPayroll || 0).toLocaleString()}
@@ -96,7 +96,7 @@ export function DashboardView({ metrics }: DashboardViewProps) {
- {metrics.grossMargin.toFixed(1)}% + {(metrics.grossMargin || 0).toFixed(1)}%
diff --git a/src/components/views/PayrollView.tsx b/src/components/views/PayrollView.tsx index 17079b7..419af06 100644 --- a/src/components/views/PayrollView.tsx +++ b/src/components/views/PayrollView.tsx @@ -53,7 +53,7 @@ export function PayrollView({ payrollRuns, timesheets, onPayrollComplete }: Payr ) const totalPendingValue = useMemo(() => - pendingTimesheets.reduce((sum, ts) => sum + ts.amount, 0), + pendingTimesheets.reduce((sum, ts) => sum + (ts.amount || 0), 0), [pendingTimesheets] ) diff --git a/src/hooks/use-app-data.ts b/src/hooks/use-app-data.ts index 3299ca6..ee298b8 100644 --- a/src/hooks/use-app-data.ts +++ b/src/hooks/use-app-data.ts @@ -24,8 +24,8 @@ export function useAppData() { pendingApprovals: timesheets.filter(t => t.status === 'pending').length, overdueInvoices: invoices.filter(i => i.status === 'overdue').length, complianceAlerts: complianceDocs.filter(d => d.status === 'expiring' || d.status === 'expired').length, - monthlyRevenue: invoices.reduce((sum, inv) => sum + inv.amount, 0), - monthlyPayroll: payrollRuns.reduce((sum, pr) => sum + pr.totalAmount, 0), + monthlyRevenue: invoices.reduce((sum, inv) => sum + (inv.amount || 0), 0), + monthlyPayroll: payrollRuns.reduce((sum, pr) => sum + (pr.totalAmount || (pr as any).totalGross || 0), 0), grossMargin: 0, activeWorkers: workers.filter(w => w.status === 'active').length, pendingExpenses: expenses.filter(e => e.status === 'pending').length diff --git a/src/hooks/use-invoicing.ts b/src/hooks/use-invoicing.ts index f39e5b9..2dfbcaf 100644 --- a/src/hooks/use-invoicing.ts +++ b/src/hooks/use-invoicing.ts @@ -45,14 +45,14 @@ export function useInvoicing() { ? timesheets.map(ts => ({ id: `LINE-${ts.id}`, description: `${ts.workerName} - Week ending ${new Date(ts.weekEnding).toLocaleDateString()}`, - quantity: ts.hours, + quantity: ts.hours || 0, rate: ts.rate || 0, - amount: ts.amount, + amount: ts.amount || 0, timesheetId: ts.id })) : [] - const subtotal = timesheets.reduce((sum, ts) => sum + ts.amount, 0) + const subtotal = timesheets.reduce((sum, ts) => sum + (ts.amount || 0), 0) const tax = applyTax ? subtotal * taxRate : 0 const total = Number((subtotal + tax).toFixed(roundingPrecision)) diff --git a/src/hooks/use-margin-analysis.ts b/src/hooks/use-margin-analysis.ts index b09c1da..591d29a 100644 --- a/src/hooks/use-margin-analysis.ts +++ b/src/hooks/use-margin-analysis.ts @@ -73,9 +73,9 @@ export function useMarginAnalysis() { }) : [] - const revenue = periodInvoices.reduce((sum, inv) => sum + inv.amount, 0) - const payrollCosts = periodTimesheets.reduce((sum, ts) => sum + ts.amount, 0) - const expenseCosts = periodExpenses.reduce((sum, exp) => sum + exp.amount, 0) + const revenue = periodInvoices.reduce((sum, inv) => sum + (inv.amount || 0), 0) + const payrollCosts = periodTimesheets.reduce((sum, ts) => sum + (ts.amount || 0), 0) + const expenseCosts = periodExpenses.reduce((sum, exp) => sum + (exp.amount || 0), 0) const totalCosts = payrollCosts + expenseCosts const grossMargin = revenue - totalCosts @@ -147,7 +147,7 @@ export function useMarginAnalysis() { filteredInvoices.forEach(inv => { const existing = clientData.get(inv.clientName) || { revenue: 0, costs: 0, invoiceCount: 0 } clientData.set(inv.clientName, { - revenue: existing.revenue + inv.amount, + revenue: existing.revenue + (inv.amount || 0), costs: existing.costs, invoiceCount: existing.invoiceCount + 1 }) @@ -157,7 +157,7 @@ export function useMarginAnalysis() { const existing = clientData.get(ts.clientName) || { revenue: 0, costs: 0, invoiceCount: 0 } clientData.set(ts.clientName, { ...existing, - costs: existing.costs + ts.amount + costs: existing.costs + (ts.amount || 0) }) }) @@ -190,8 +190,8 @@ export function useMarginAnalysis() { const existing = workerData.get(ts.workerId) || { name: ts.workerName, hours: 0, revenue: 0 } workerData.set(ts.workerId, { name: existing.name, - hours: existing.hours + ts.hours, - revenue: existing.revenue + ts.amount + hours: existing.hours + (ts.hours || 0), + revenue: existing.revenue + (ts.amount || 0) }) }) diff --git a/src/hooks/use-payroll-calculations.ts b/src/hooks/use-payroll-calculations.ts index 5dc72ae..518f652 100644 --- a/src/hooks/use-payroll-calculations.ts +++ b/src/hooks/use-payroll-calculations.ts @@ -202,7 +202,7 @@ export function usePayrollCalculations(config: Partial = {}) { if (!acc[ts.workerId]) { acc[ts.workerId] = { grossPay: 0, workerName: ts.workerName } } - acc[ts.workerId].grossPay += ts.amount + acc[ts.workerId].grossPay += (ts.amount || 0) return acc }, {} as Record) @@ -224,7 +224,7 @@ export function usePayrollCalculations(config: Partial = {}) { return tsDate >= startDate && tsDate <= endDate }) - const eligibleHours = workerTimesheets.reduce((sum, ts) => sum + ts.hours, 0) + const eligibleHours = workerTimesheets.reduce((sum, ts) => sum + (ts.hours || 0), 0) const accruedHoliday = eligibleHours * holidayAccrualRate const avgRate = workerTimesheets.length > 0 diff --git a/src/hooks/use-sample-data.ts b/src/hooks/use-sample-data.ts index 27a79ba..7b5924c 100644 --- a/src/hooks/use-sample-data.ts +++ b/src/hooks/use-sample-data.ts @@ -17,11 +17,23 @@ export function useSampleData() { if (hasInitialized) return const initializeData = async () => { - setTimesheets(appData.timesheets) + const transformedTimesheets = appData.timesheets.map((ts: any) => ({ + ...ts, + hours: ts.totalHours || ts.hours || 0, + amount: ts.total || ts.amount || 0 + })) + + const transformedPayrollRuns = appData.payrollRuns.map((pr: any) => ({ + ...pr, + totalAmount: pr.totalGross || pr.totalAmount || 0, + workersCount: pr.workerCount || pr.workersCount || 0 + })) + + setTimesheets(transformedTimesheets) setInvoices(appData.invoices) setExpenses(appData.expenses) setComplianceDocs(appData.complianceDocs) - setPayrollRuns(appData.payrollRuns) + setPayrollRuns(transformedPayrollRuns) setWorkers(appData.workers) setRateCards(appData.rateCards) setClients(appData.clients)