From b8504b7829cd44b5a1e84c1bb7fc4159c78c0dec Mon Sep 17 00:00:00 2001 From: "Dr. Peter Zimmerer" Date: Sun, 15 Mar 2020 18:24:07 +0100 Subject: [PATCH] Bug 797631 - Superfluous account selection dialog on first online retrieval The online id, which is needed to find a GnuCash account for a transaction or the balance retrieved from an online account, is already assigned to each matched GnuCash account within the Online Banking Setup tool. The online id is removed from the GnuCash account if it is no longer matched with an AqBanking account. --- gnucash/import-export/aqb/assistant-ab-initial.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/gnucash/import-export/aqb/assistant-ab-initial.c b/gnucash/import-export/aqb/assistant-ab-initial.c index 13425a67ca..551073ef1f 100644 --- a/gnucash/import-export/aqb/assistant-ab-initial.c +++ b/gnucash/import-export/aqb/assistant-ab-initial.c @@ -64,6 +64,7 @@ #include "gnc-ui-util.h" #include "gnc-session.h" #include "import-account-matcher.h" +#include "import-utilities.h" #ifndef AQBANKING6 # include #endif @@ -682,7 +683,8 @@ static void clear_kvp_acc_cb(gpointer gnc_acc, gpointer ab_acc, gpointer user_data) { g_return_if_fail(gnc_acc); - /* Delete complete "hbci..." KVPs for GnuCash account */ + /* Delete "online-id" and complete "hbci..." KVPs for GnuCash account */ + gnc_account_delete_map_entry((Account *) gnc_acc, "online_id", NULL, NULL, FALSE); gnc_account_delete_map_entry((Account *) gnc_acc, "hbci", NULL, NULL, FALSE); } @@ -694,6 +696,10 @@ save_kvp_acc_cb(gpointer key, gpointer value, gpointer user_data) guint32 ab_account_uid; const gchar *ab_accountid, *gnc_accountid; const gchar *ab_bankcode, *gnc_bankcode; +#ifdef AQBANKING6 + gchar *ab_online_id; + const gchar *gnc_online_id; +#endif g_return_if_fail(ab_acc && gnc_acc); @@ -726,6 +732,14 @@ save_kvp_acc_cb(gpointer key, gpointer value, gpointer user_data) && (!gnc_bankcode || (strcmp(gnc_bankcode, ab_bankcode) != 0))) gnc_ab_set_account_bankcode(gnc_acc, ab_bankcode); + +#ifdef AQBANKING6 + ab_online_id = gnc_ab_create_online_id(ab_bankcode, ab_accountid); + gnc_online_id = gnc_import_get_acc_online_id(gnc_acc); + if (ab_online_id && (!gnc_online_id || (strcmp(ab_online_id, gnc_online_id) != 0))) + gnc_import_set_acc_online_id(gnc_acc, ab_online_id); + g_free(ab_online_id); +#endif } static void