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; }
AB_ACCOUNT * gnc_hbci_get_hbci_acc (const AB_BANKING *api, Account *gnc_acc) { int account_uid = 0; AB_ACCOUNT *hbci_acc = NULL; const char *bankcode = NULL, *accountid = NULL; bankcode = gnc_hbci_get_account_bankcode (gnc_acc); accountid = gnc_hbci_get_account_accountid (gnc_acc); account_uid = gnc_hbci_get_account_uid (gnc_acc); if (account_uid > 0) { /*printf("gnc_hbci_get_hbci_acc: gnc_acc %s has blz %s and ccode %d\n", xaccAccountGetName (gnc_acc), bankcode, countrycode);*/ hbci_acc = AB_Banking_GetAccount(api, account_uid); if (!hbci_acc && bankcode && (strlen(bankcode) > 0) && accountid && (strlen(accountid) > 0)) { g_message("gnc_hbci_get_hbci_acc: No AB_ACCOUNT found for UID %d, trying bank code\n", account_uid); hbci_acc = AB_Banking_GetAccountByCodeAndNumber(api, bankcode, accountid); } /* g_message("gnc_hbci_get_hbci_acc: return HBCI_Account %p\n", hbci_acc); */ return hbci_acc; } else if (bankcode && (strlen(bankcode) > 0) && accountid && (strlen(accountid) > 0)) { hbci_acc = AB_Banking_GetAccountByCodeAndNumber(api, bankcode, accountid); return hbci_acc; } return NULL; }
int AB_Banking_LoadAllAccounts(AB_BANKING *ab) { GWEN_STRINGLIST *sl; int rv; sl=GWEN_StringList_new(); rv=GWEN_ConfigMgr_ListSubGroups(ab->configMgr, AB_CFG_GROUP_ACCOUNTS, sl); if (rv<0) { DBG_INFO(AQBANKING_LOGDOMAIN, "here (%d)", rv); GWEN_StringList_free(sl); return rv; } if (GWEN_StringList_Count(sl)) { GWEN_STRINGLISTENTRY *se; se=GWEN_StringList_FirstEntry(sl); while(se) { const char *t; GWEN_DB_NODE *db=NULL; t=GWEN_StringListEntry_Data(se); assert(t); rv=GWEN_ConfigMgr_GetGroup(ab->configMgr, AB_CFG_GROUP_ACCOUNTS, t, &db); if (rv<0) { DBG_WARN(AQBANKING_LOGDOMAIN, "Could not load account group [%s] (%d), ignoring", t, rv); } else { AB_ACCOUNT *a=NULL; uint32_t uid; assert(db); uid=GWEN_DB_GetIntValue(db, "uniqueId", 0, 0); if (uid) a=AB_Banking_GetAccount(ab, uid); if (a) { /* account already exists, reload existing account */ const char *s; AB_PROVIDER *pro; AB_Account_SetDbId(a, t); s=AB_Account_GetBackendName(a); assert(s && *s); pro=AB_Banking_GetProvider(ab, s); if (!pro) { DBG_WARN(AQBANKING_LOGDOMAIN, "Provider \"%s\" not found, ignoring account [%s/%s]", s, AB_Account_GetBankCode(a), AB_Account_GetAccountNumber(a)); } else { int rv; GWEN_DB_NODE *dbP; /* reload account from DB */ AB_Account_ReadDb(a, db); /* let provider also reload account data */ dbP=GWEN_DB_GetGroup(db, GWEN_DB_FLAGS_DEFAULT, "data/backend"); rv=AB_Provider_ExtendAccount(pro, a, AB_ProviderExtendMode_Reload, dbP); if (rv<0) { DBG_WARN(AQBANKING_LOGDOMAIN, "Could not extend account [%s/%s] (%d)", AB_Account_GetBankCode(a), AB_Account_GetAccountNumber(a), rv); } } } else { /* account is new, load and add it */ a=AB_Account_fromDb(ab, db); if (a) { const char *s; AB_PROVIDER *pro; AB_Account_SetDbId(a, t); s=AB_Account_GetBackendName(a); assert(s && *s); pro=AB_Banking_GetProvider(ab, s); if (!pro) { DBG_WARN(AQBANKING_LOGDOMAIN, "Provider \"%s\" not found, ignoring account [%s/%s]", s, AB_Account_GetBankCode(a), AB_Account_GetAccountNumber(a)); } else { int rv; GWEN_DB_NODE *dbP; dbP=GWEN_DB_GetGroup(db, GWEN_DB_FLAGS_DEFAULT, "data/backend"); rv=AB_Provider_ExtendAccount(pro, a, AB_ProviderExtendMode_Extend, dbP); if (rv) { DBG_INFO(AQBANKING_LOGDOMAIN, "here"); AB_Account_free(a); } else { DBG_DEBUG(AQBANKING_LOGDOMAIN, "Adding account"); AB_Account_List_Add(a, ab->accounts); } } } } GWEN_DB_Group_free(db); } se=GWEN_StringListEntry_Next(se); } } GWEN_StringList_free(sl); return 0; }