feat: Add Income Statement to DashboardPage + fix account types
- Add Income Statement section with Revenue and Expenses tables - Color-code revenue (green) and expenses (red) - Show Net Income prominently at bottom - Fix SQL query to use LOWER() for case-insensitive matching - Update account types in DB (asset/liability/revenue/expense/equity) - Balance Sheet and Income Statement now work correctly
This commit is contained in:
@@ -321,6 +321,70 @@ export function DashboardPage() {
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
{/* Income Statement */}
|
||||
<Card>
|
||||
<CardHeader
|
||||
title="Income Statement (Resultaträkning)"
|
||||
subtitle="Revenue and expenses for period 2026-02"
|
||||
/>
|
||||
<div className="grid grid-cols-1 xl:grid-cols-2 gap-6 p-6">
|
||||
<div>
|
||||
<h3 className="text-lg font-semibold mb-4 text-success">Revenue (Intäkter)</h3>
|
||||
<Table>
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead>Code</TableHead>
|
||||
<TableHead>Name</TableHead>
|
||||
<TableHead className="text-right">Amount</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
{ledgerAccounts.filter(a => a.account_type === 'revenue').map((account) => (
|
||||
<TableRow key={account.code}>
|
||||
<TableCell>{account.code}</TableCell>
|
||||
<TableCell>{account.name}</TableCell>
|
||||
<TableCell className="text-right text-success">
|
||||
{formatCurrency(Math.abs(account.balance))}
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
))}
|
||||
</TableBody>
|
||||
</Table>
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-lg font-semibold mb-4 text-danger">Expenses (Kostnader)</h3>
|
||||
<Table>
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHead>Code</TableHead>
|
||||
<TableHead>Name</TableHead>
|
||||
<TableHead className="text-right">Amount</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
{ledgerAccounts.filter(a => a.account_type === 'expense').map((account) => (
|
||||
<TableRow key={account.code}>
|
||||
<TableCell>{account.code}</TableCell>
|
||||
<TableCell>{account.name}</TableCell>
|
||||
<TableCell className="text-right text-danger">
|
||||
{formatCurrency(account.balance)}
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
))}
|
||||
</TableBody>
|
||||
</Table>
|
||||
</div>
|
||||
</div>
|
||||
<div className="border-t p-6">
|
||||
<div className="flex justify-between items-center">
|
||||
<span className="text-lg font-semibold">Net Income:</span>
|
||||
<span className={`text-2xl font-bold ${netIncome >= 0 ? 'text-success' : 'text-danger'}`}>
|
||||
{formatCurrency(netIncome)}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
{/* Recent Deals */}
|
||||
<Card>
|
||||
<CardHeader
|
||||
|
||||
Reference in New Issue
Block a user