fix: correct engine column names, dashboard revenue calc, email config, and UX issues

- Fix buildLineInserts() using wrong DB column names (cost_center_id → cost_center,
  project_id → project) and add missing tax_code field
- Replace transaction-based dashboard income/expense with journal-entry-based
  calculation using account classes (3xxx revenue, 4-7xxx expenses)
- Add email/phone fields to CompanySettings type, validate RESEND_FROM_EMAIL
  in isResendConfigured(), remove unsafe type casts in invoice send/reminders
- Always auto-fill line description from account name in JournalEntryForm
- Reorder expense lines in TransactionBookingDialog so 1930 is always first row

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-02-24 10:02:54 +01:00
co-authored by Claude Opus 4.6
parent bbb82866ee
commit 4d2140bcf8
9 changed files with 56 additions and 30 deletions
+3 -2
View File
@@ -129,8 +129,9 @@ function buildLineInserts(
amount_in_currency: line.amount_in_currency ? Math.round(line.amount_in_currency * 100) / 100 : null,
exchange_rate: line.exchange_rate || null,
line_description: line.line_description || null,
cost_center_id: line.cost_center || null,
project_id: line.project || null,
tax_code: line.tax_code || null,
cost_center: line.cost_center || null,
project: line.project || null,
sort_order: index,
}))
}
+1 -1
View File
@@ -113,5 +113,5 @@ export async function sendEmail(options: SendEmailOptions): Promise<SendEmailRes
* Check if Resend is properly configured
*/
export function isResendConfigured(): boolean {
return !!process.env.RESEND_API_KEY
return !!process.env.RESEND_API_KEY && !!process.env.RESEND_FROM_EMAIL && process.env.RESEND_FROM_EMAIL !== 'noreply@localhost'
}
+1 -1
View File
@@ -112,7 +112,7 @@ export async function sendReminder(
subject: generateReminderEmailSubject(emailData),
html: generateReminderEmailHtml(emailData),
text: generateReminderEmailText(emailData),
replyTo: (company as CompanySettings & { email?: string }).email || undefined,
replyTo: company.email || undefined,
fromName: company.company_name || undefined
})