static void save_kvp_acc_cb(gpointer key, gpointer value, gpointer user_data) { AB_ACCOUNT *ab_acc = key; Account *gnc_acc = value; guint32 ab_account_uid; const gchar *ab_accountid, *gnc_accountid; const gchar *ab_bankcode, *gnc_bankcode; g_return_if_fail(ab_acc && gnc_acc); ab_account_uid = AB_Account_GetUniqueId(ab_acc); if (gnc_ab_get_account_uid(gnc_acc) != ab_account_uid) gnc_ab_set_account_uid(gnc_acc, ab_account_uid); ab_accountid = AB_Account_GetAccountNumber(ab_acc); gnc_accountid = gnc_ab_get_account_accountid(gnc_acc); if (ab_accountid && (!gnc_accountid || (strcmp(ab_accountid, gnc_accountid) != 0))) gnc_ab_set_account_accountid(gnc_acc, ab_accountid); ab_bankcode = AB_Account_GetBankCode(ab_acc); gnc_bankcode = gnc_ab_get_account_bankcode(gnc_acc); if (ab_bankcode && (!gnc_bankcode || (strcmp(gnc_bankcode, ab_bankcode) != 0))) gnc_ab_set_account_bankcode(gnc_acc, ab_bankcode); }
AB_ACCOUNT * gnc_ab_get_ab_account(const AB_BANKING *api, Account *gnc_acc) { AB_ACCOUNT *ab_account = NULL; const gchar *bankcode = NULL; const gchar *accountid = NULL; guint32 account_uid = 0; bankcode = gnc_ab_get_account_bankcode(gnc_acc); accountid = gnc_ab_get_account_accountid(gnc_acc); account_uid = gnc_ab_get_account_uid (gnc_acc); if (account_uid > 0) { ab_account = AB_Banking_GetAccount(api, account_uid); if (!ab_account && bankcode && *bankcode && accountid && *accountid) { g_message("gnc_ab_get_ab_account: No AB_ACCOUNT found for UID %d, " "trying bank code\n", account_uid); ab_account = AB_Banking_GetAccountByCodeAndNumber(api, bankcode, accountid); } return ab_account; } else if (bankcode && *bankcode && accountid && *accountid) { ab_account = AB_Banking_GetAccountByCodeAndNumber(api, bankcode, accountid); return ab_account; } return NULL; }
static void clear_kvp_acc_cb(Account *gnc_acc, gpointer user_data) { if (gnc_ab_get_account_uid(gnc_acc)) gnc_ab_set_account_uid(gnc_acc, 0); if (gnc_ab_get_account_accountid(gnc_acc)) gnc_ab_set_account_accountid(gnc_acc, ""); if (gnc_ab_get_account_bankcode(gnc_acc)) gnc_ab_set_account_bankcode(gnc_acc, ""); }