Fix all TypeScript errors: restore proper types and typed route casts
Some checks failed
Build & Push Docker Images / lint (push) Successful in 1m16s
Build & Push Docker Images / build-and-push (push) Failing after 4m42s

- Restore `as any` casts for Next.js typedRoutes on dynamic routes
- Use proper types for PDF templates, invoice/expense data, DB schema
- Fix PgColumn casts in sort helpers for expenses/invoices
- Add null guards for optional port/client in record-export
- Fix vitest config (remove invalid poolOptions)
- Lint: 0 errors, TypeScript: 0 errors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 12:29:55 +01:00
parent e847fd0261
commit 082d4f20e3
30 changed files with 96 additions and 71 deletions

View File

@@ -59,11 +59,11 @@ export function ExpenseFormDialog({ open, onOpenChange, expense }: ExpenseFormDi
establishmentName: expense.establishmentName ?? undefined,
amount: Number(expense.amount),
currency: expense.currency,
category: expense.category as string,
paymentMethod: expense.paymentMethod as string,
category: expense.category as CreateExpenseInput['category'],
paymentMethod: expense.paymentMethod as CreateExpenseInput['paymentMethod'],
payer: expense.payer ?? undefined,
expenseDate: new Date(expense.expenseDate),
paymentStatus: (expense.paymentStatus as string) ?? 'unpaid',
paymentStatus: (expense.paymentStatus as CreateExpenseInput['paymentStatus']) ?? 'unpaid',
});
} else if (open && !expense) {
reset({
@@ -161,7 +161,7 @@ export function ExpenseFormDialog({ open, onOpenChange, expense }: ExpenseFormDi
<div className="space-y-2">
<Label htmlFor="category">Category</Label>
<Select
onValueChange={(v) => setValue('category', v as string)}
onValueChange={(v) => setValue('category', v as CreateExpenseInput['category'])}
defaultValue={expense?.category ?? undefined}
>
<SelectTrigger id="category">
@@ -180,7 +180,7 @@ export function ExpenseFormDialog({ open, onOpenChange, expense }: ExpenseFormDi
<div className="space-y-2">
<Label htmlFor="paymentMethod">Payment Method</Label>
<Select
onValueChange={(v) => setValue('paymentMethod', v as string)}
onValueChange={(v) => setValue('paymentMethod', v as CreateExpenseInput['paymentMethod'])}
defaultValue={expense?.paymentMethod ?? undefined}
>
<SelectTrigger id="paymentMethod">