feat(reconciliation): absorb the last bank-view tools and retire /reports/bank-reconciliation (#1871)

The old Bankavstämning report page was the only place a user could still tag
a bank row as ingående balans or move it to another bank account, so the new
/reconciliation page kept linking out to it and the reconciliation lived in
two places. Both row tools now live on the account overview (hover-revealed,
same endpoints), the ?autorun=1 deep link from the transactions inbox runs the
matcher on the new page, and the report slug redirects: old links, ⌘K, the
bokslut readiness wizard and the ignore toast all land on /reconciliation.

BankReconciliationView and its FocusedReport branches (own range preset,
help popover, autoRun plumbing) are removed; the source-grepping parity test
for its quick-book path goes with it.

Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-08-25 09:03:17 +02:00
committed by GitHub
co-authored by Jakob Wennberg Claude Fable 5
parent d88df74b85
commit 9ebb2e518f
12 changed files with 130 additions and 2023 deletions
+5 -4
View File
@@ -19,7 +19,11 @@ export default async function ReportSlugPage({
const [{ slug }, query] = await Promise.all([params, searchParams])
const report = getReport(slug)
if (!report) notFound()
if (report.route) redirect(report.route)
if (report.route) {
// The old bankavstämning deep link (?autorun=1 from the transactions
// inbox) keeps working on the page that absorbed it.
redirect(slug === 'bank-reconciliation' && query.autorun === '1' ? `${report.route}?autorun=1` : report.route)
}
const [{ supabase }, companyId] = await Promise.all([
getDashboardAuthContext(),
@@ -39,9 +43,6 @@ export default async function ReportSlugPage({
slug={slug}
initialPeriods={(periods ?? []) as FiscalPeriod[]}
initialCompanyId={companyId}
// ?autorun=1 deep-links (e.g. the transactions inbox banner) ask the
// bank-reconciliation view to run its dry-run preview once on load.
autoRun={query.autorun === '1'}
/>
)
}
+3 -3
View File
@@ -3180,7 +3180,7 @@ export default function TransactionsPage() {
description: `${successes} transaktioner ignorerade`,
action: (
<ToastAction altText="Öppna Bankavstämning" asChild>
<Link href="/reports/bank-reconciliation">Bankavstämning</Link>
<Link href="/reconciliation">Avstämning</Link>
</ToastAction>
),
})
@@ -3852,7 +3852,7 @@ export default function TransactionsPage() {
className="px-1 pt-3"
action={{
label: t('recon_attn_action'),
href: '/reports/bank-reconciliation?autorun=1',
href: '/reconciliation?autorun=1',
}}
>
{t('recon_attn', { count: selectableInboxIds.length })}
@@ -3900,7 +3900,7 @@ export default function TransactionsPage() {
<BankSyncNowButton />
<BankSyncSinceLastVisit />
<Link
href="/reports/bank-reconciliation"
href="/reconciliation"
className="ml-auto transition-colors duration-150 hover:text-foreground"
>
Bankavstämning →