From d2e0b4ca0f173385ce84745c9b47e1838d6eb1b3 Mon Sep 17 00:00:00 2001 From: flfeders Date: Thu, 6 Aug 2026 15:45:11 +0200 Subject: [PATCH] Load bank booking list before suggestions --- frontend/pages/banking/index.vue | 40 ++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/frontend/pages/banking/index.vue b/frontend/pages/banking/index.vue index fae1329..6fc10c9 100644 --- a/frontend/pages/banking/index.vue +++ b/frontend/pages/banking/index.vue @@ -27,6 +27,7 @@ const isSyncing = ref(false) const cashbookBookingModalOpen = ref(false) const savingCashbookBooking = ref(false) const loadingDocs = ref(true) // Startet im Ladezustand +const loadingSuggestions = ref(true) const suggestionsModalOpen = ref(false) const selectedSuggestionRowId = ref(null) @@ -80,12 +81,10 @@ const setDateRangeFieldToToday = (field) => { dateRange.value[field] = $dayjs().format('YYYY-MM-DD') } -const setupPage = async () => { - loadingDocs.value = true +const loadSuggestionData = async () => { + loadingSuggestions.value = true try { - const [statements, bankAccountItems, customerItems, vendorItems, entityBankItems, documentItems, invoiceItems] = await Promise.all([ - useEntities("bankstatements").select("*, statementallocations(*)", "valueDate", false), - useEntities("bankaccounts").select(), + const [customerItems, vendorItems, entityBankItems, documentItems, invoiceItems] = await Promise.all([ useEntities("customers").select(), useEntities("vendors").select(), useEntities("entitybankaccounts").select(), @@ -93,11 +92,6 @@ const setupPage = async () => { useEntities("incominginvoices").select("*, statementallocations(*), vendor(*)") ]) - bankstatements.value = statements - bankaccounts.value = (bankAccountItems || []).map((account) => ({ - ...account, - displayLabel: getBankAccountLabel(account) - })) customers.value = customerItems vendors.value = vendorItems entitybankaccounts.value = entityBankItems @@ -115,6 +109,28 @@ const setupPage = async () => { openIncomingInvoices.value = invoiceItems .filter(i => i.state === "Gebucht" && !i.archived && i.statementallocations.reduce((n, {amount}) => n + amount, 0).toFixed(2) !== getInvoiceSum(i, false)) + } catch (err) { + console.error("Vorschlagsdaten konnten nicht geladen werden:", err) + } finally { + loadingSuggestions.value = false + } +} + +const setupPage = async () => { + loadingDocs.value = true + const suggestionDataPromise = loadSuggestionData() + + try { + const [statements, bankAccountItems] = await Promise.all([ + useEntities("bankstatements").select("*, statementallocations(*)", "valueDate", false), + useEntities("bankaccounts").select() + ]) + + bankstatements.value = statements + bankaccounts.value = (bankAccountItems || []).map((account) => ({ + ...account, + displayLabel: getBankAccountLabel(account) + })) const availableAccountIds = bankaccounts.value.map((account) => account.id) if (!filterAccountInitialized.value) { @@ -140,6 +156,8 @@ const setupPage = async () => { } finally { loadingDocs.value = false } + + void suggestionDataPromise } // Watcher für Schnellwahlen & Persistenz @@ -586,6 +604,8 @@ onMounted(() => { color="primary" variant="soft" icon="i-heroicons-sparkles" + :loading="loadingSuggestions" + :disabled="loadingSuggestions" @click="suggestionsModalOpen = true" > Vorschläge