Merge Peter Zimmer's 'pkzw_bug797631' into maint.

This commit is contained in:
John Ralls 2020-03-15 12:41:38 -07:00
commit d825d74c86
3 changed files with 30 additions and 6 deletions

View File

@ -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 <aqbanking/dlg_setup.h>
#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

View File

@ -63,7 +63,6 @@ G_GNUC_UNUSED static QofLogModule log_module = G_LOG_DOMAIN;
static AB_BANKING *gnc_AB_BANKING = NULL;
static gint gnc_AB_BANKING_refcount = 0;
static gchar* create_online_id(const gchar *bankcode, const gchar *accountnumber);
static gpointer join_ab_strings_cb(const gchar *str, gpointer user_data);
static Account *gnc_ab_accinfo_to_gnc_acc(GtkWidget *parent,
AB_IMEXPORTER_ACCOUNTINFO *account_info);
@ -318,8 +317,8 @@ gnc_AB_VALUE_to_readable_string(const AB_VALUE *value)
}
static gchar*
create_online_id(const gchar *bankcode, const gchar *accountnumber)
gchar*
gnc_ab_create_online_id(const gchar *bankcode, const gchar *accountnumber)
{
gchar *online_id;
@ -669,7 +668,7 @@ gnc_ab_accinfo_to_gnc_acc(GtkWidget *parent, AB_IMEXPORTER_ACCOUNTINFO *acc_info
bankcode = AB_ImExporterAccountInfo_GetBankCode(acc_info);
accountnumber = AB_ImExporterAccountInfo_GetAccountNumber(acc_info);
online_id = create_online_id(bankcode, accountnumber);
online_id = gnc_ab_create_online_id(bankcode, accountnumber);
gnc_acc = gnc_import_select_account(
parent, online_id, 1, AB_ImExporterAccountInfo_GetAccountName(acc_info),
NULL, ACCT_TYPE_NONE, NULL, NULL);
@ -708,7 +707,7 @@ gnc_ab_txn_to_gnc_acc(GtkWidget *parent, const AB_TRANSACTION *transaction)
return NULL;
}
online_id = create_online_id(bankcode, accountnumber);
online_id = gnc_ab_create_online_id(bankcode, accountnumber);
gnc_acc = gnc_import_select_account(
parent, online_id, 1, AB_Transaction_GetLocalName(transaction),
NULL, ACCT_TYPE_NONE, NULL, NULL);

View File

@ -276,6 +276,17 @@ gboolean gnc_ab_ieci_run_matcher(GncABImExContextImport *ieci);
*/
GWEN_DB_NODE *gnc_ab_get_permanent_certs(void);
/**
* Creates an online ID from bank code and account number.
*
* The returned string must be g_free'd by the caller.
*
* @param bankcode Bank code
* @param accountnumber Account number
* @return an online ID
*/
gchar* gnc_ab_create_online_id(const gchar *bankcode, const gchar *accountnumber);
G_END_DECLS
/** @} */