diff --git a/src/engine/gnc-associate-account.c b/src/engine/gnc-associate-account.c index c8cc8e39ee..d091e2eef3 100644 --- a/src/engine/gnc-associate-account.c +++ b/src/engine/gnc-associate-account.c @@ -33,15 +33,17 @@ static short module = MOD_ENGINE; -/* Maps GNCTrackingIncomeCategory to string keys. If this enum changes, update */ +/* Maps GNCTrackingIncomeCategory to string keys. If this enum + changes, update */ static char * income_to_key[] = {"income-miscellaneous", - "income-interest", - "income-dividend" - "income-long-term-capital-gain", - "income-short-term-capital-gain"}; + "income-interest", + "income-dividend" + "income-long-term-capital-gain", + "income-short-term-capital-gain"}; -/* Maps GNCTrackingExpenseCategory to string keys. If this enum changes, update */ +/* Maps GNCTrackingExpenseCategory to string keys. If this enum + changes, update */ static char * expense_to_key[] = {"expense-miscellaneous", "expense-commission"}; @@ -50,8 +52,9 @@ static kvp_frame * get_assoc_acc_frame(kvp_frame *account_frame) { kvp_frame *assoc_acc_frame; - kvp_value *assoc_acc_frame_kvpvalue = kvp_frame_get_slot(account_frame, - "associated-accounts"); + kvp_value *assoc_acc_frame_kvpvalue = + kvp_frame_get_slot(account_frame, "associated-accounts"); + assoc_acc_frame = kvp_value_get_frame(assoc_acc_frame_kvpvalue); if(!assoc_acc_frame) { @@ -73,6 +76,7 @@ back_associate_expense_accounts(Account *stock_account, kvp_value *val, *stock_acc_guid_kvpval, *stock_acc_category_kvpval; const GUID *stock_acc_guid; const GUID *existing_acc_guid; + stock_acc_guid = xaccAccountGetGUID(stock_account); stock_acc_guid_kvpval = kvp_value_new_guid(stock_acc_guid); @@ -97,7 +101,8 @@ back_associate_expense_accounts(Account *stock_account, return; } - static void + +static void back_associate_income_accounts(Account *stock_account, GList *accounts, GNCTrackingIncomeCategory category) @@ -106,6 +111,7 @@ back_associate_income_accounts(Account *stock_account, kvp_value *val, *stock_acc_guid_kvpval, *stock_acc_category_kvpval; const GUID *stock_acc_guid; const GUID *existing_acc_guid; + stock_acc_guid = xaccAccountGetGUID(stock_account); stock_acc_guid_kvpval = kvp_value_new_guid(stock_acc_guid); @@ -139,12 +145,11 @@ make_kvpd_on_list(GList *account_list) GList *kvp_acc_list = NULL; const GUID *acc_id; - for(iter = g_list_last(account_list); - iter; - iter = g_list_previous(iter)) - { + for(iter = account_list; iter; iter = g_list_next(iter)) + { GNCAccountType type; Account *current_account; + current_account = iter->data; type = xaccAccountGetType(current_account); g_return_val_if_fail(type == INCOME || type == EXPENSE, NULL); @@ -154,6 +159,8 @@ make_kvpd_on_list(GList *account_list) kvp_acc_list = g_list_prepend(kvp_acc_list, guid_kvp); } + kvp_acc_list = g_list_reverse(kvp_acc_list); + retval = kvp_value_new_glist_nc(kvp_acc_list); return retval; } @@ -167,10 +174,11 @@ de_kvp_account_list(kvp_value *kvpd_list) GList *expense_acc_list= NULL; for(; guid_account_list; guid_account_list=g_list_next(guid_account_list)) { - g_list_prepend(expense_acc_list, xaccAccountLookup(guid_account_list->data)); + g_list_prepend(expense_acc_list, + xaccAccountLookup(guid_account_list->data)); } - g_list_reverse(expense_acc_list); + expense_acc_list = g_list_reverse(expense_acc_list); return expense_acc_list; } else @@ -203,6 +211,7 @@ gnc_tracking_associate_income_accounts(Account *stock_account, kvp_frame *account_frame, *inc_account_frame; kvp_value *kvpd_on_account_list; GNCAccountType type; + g_return_if_fail(stock_account); type = xaccAccountGetType(stock_account); g_return_if_fail(type == STOCK || type == MUTUAL); @@ -236,14 +245,15 @@ gnc_tracking_associate_income_accounts(Account *stock_account, * * * Returns : void * \*********************************************************************/ - -void gnc_tracking_asssociate_expense_account(Account *stock_account, - GNCTrackingExpenseCategory category, - GList *account_list) +void +gnc_tracking_asssociate_expense_account(Account *stock_account, + GNCTrackingExpenseCategory category, + GList *account_list) { kvp_frame *account_frame, *expense_acc_frame; kvp_value *kvpd_on_account_list; GNCAccountType type; + g_return_if_fail(stock_account); type = xaccAccountGetType(stock_account); g_return_if_fail(type == STOCK || type == MUTUAL); @@ -274,8 +284,9 @@ void gnc_tracking_asssociate_expense_account(Account *stock_account, * Returns : A GList of Account *'s listing the accounts * \*********************************************************************/ -GList *gnc_tracking_find_expense_accounts(Account *stock_account, - GNCTrackingExpenseCategory category) +GList * +gnc_tracking_find_expense_accounts(Account *stock_account, + GNCTrackingExpenseCategory category) { GNCAccountType type; @@ -296,6 +307,7 @@ GList *gnc_tracking_find_expense_accounts(Account *stock_account, return de_kvp_account_list(kvpd_on_account_list); } + /*********************************************************************\ * gnc_tracking_find_income_accounts * * find out which accounts are associated with a particular * @@ -307,11 +319,10 @@ GList *gnc_tracking_find_expense_accounts(Account *stock_account, * * * Returns : A GList of Account *'s listing the accounts * \*********************************************************************/ - -GList *gnc_tracking_find_income_accounts(Account *stock_account, - GNCTrackingIncomeCategory category) +GList * +gnc_tracking_find_income_accounts(Account *stock_account, + GNCTrackingIncomeCategory category) { - GNCAccountType type; kvp_frame *account_frame, *income_acc_frame; kvp_value *kvpd_on_account_list; @@ -340,19 +351,22 @@ GList *gnc_tracking_find_income_accounts(Account *stock_account, * Returns : A GList of Account *'s listing the accounts * \*********************************************************************/ -GList *gnc_tracking_find_all_expense_accounts(Account *stock_account) +GList * +gnc_tracking_find_all_expense_accounts(Account *stock_account) { GList *complete_list=NULL; int i; for(i = 0; i < GNC_TR_EXP_N_CATEGORIES; i++) { - g_list_concat(complete_list, - gnc_tracking_find_expense_accounts(stock_account, - i)); + complete_list = + g_list_concat(complete_list, + gnc_tracking_find_expense_accounts(stock_account, i)); } + return complete_list; } + /*********************************************************************\ * gnc_tracking_find_all_income_accounts * * find all income accounts associated with a stock account * @@ -362,9 +376,10 @@ GList *gnc_tracking_find_all_expense_accounts(Account *stock_account) * Returns : A GList of Account *'s listing the accounts * \*********************************************************************/ -GList *gnc_tracking_find_all_income_accounts(Account *stock_account) +GList * +gnc_tracking_find_all_income_accounts(Account *stock_account) { - GList *complete_list= NULL; + GList *complete_list= NULL; int i; for(i = 0; i < GNC_TR_EXP_N_CATEGORIES; i++) @@ -375,6 +390,7 @@ GList *gnc_tracking_find_all_income_accounts(Account *stock_account) } return complete_list; } + /*********************************************************************\ * gnc_tracking_find_stock_account * * find the stock account associated with this expense/income * @@ -386,10 +402,12 @@ GList *gnc_tracking_find_all_income_accounts(Account *stock_account) * Returns : The associated stock account * \*********************************************************************/ -Account *gnc_tracking_find_stock_account(Account *inc_or_expense_acc) +Account * +gnc_tracking_find_stock_account(Account *inc_or_expense_acc) { return NULL; } + /*********************************************************************\ * gnc_tracking_dissociate_account * * remove any association between this income/expense account * @@ -406,12 +424,14 @@ void gnc_tracking_dissociate_account(Account *inc_or_expense_account) { GNCAccountType type; - kvp_frame *stock_account_kvpframe, *assoc_acc_kvpframe, *current_account_kvpframe; + kvp_frame *stock_account_kvpframe, *assoc_acc_kvpframe; + kvp_frame *current_account_kvpframe; kvp_value *stock_account_kvpval, *acc_list_kvpval, *category_kvpval; const GUID *stock_account_guid, *inc_or_expense_account_guid, *current_guid; Account *stock_account; char *category_name; GList *assoc_acc_list, *assoc_acc_list_start; + type = xaccAccountGetType(inc_or_expense_account); g_return_if_fail(type == INCOME || type == EXPENSE); @@ -435,31 +455,37 @@ gnc_tracking_dissociate_account(Account *inc_or_expense_account) stock_account_kvpframe = xaccAccountGetSlots(stock_account); - g_return_if_fail(stock_account_kvpval = kvp_frame_get_slot(stock_account_kvpframe, - "associated-accounts")); + g_return_if_fail(stock_account_kvpval = + kvp_frame_get_slot(stock_account_kvpframe, + "associated-accounts")); assoc_acc_kvpframe = kvp_value_get_frame(stock_account_kvpval); g_return_if_fail(acc_list_kvpval = kvp_frame_get_slot(assoc_acc_kvpframe, category_name)); - g_return_if_fail(assoc_acc_list_start = kvp_value_get_glist(acc_list_kvpval)); + g_return_if_fail(assoc_acc_list_start = + kvp_value_get_glist(acc_list_kvpval)); - for(assoc_acc_list = assoc_acc_list_start;assoc_acc_list;assoc_acc_list = g_list_next(assoc_acc_list)) + for(assoc_acc_list = assoc_acc_list_start; + assoc_acc_list; + assoc_acc_list = g_list_next(assoc_acc_list)) { g_return_if_fail(current_guid = kvp_value_get_guid(assoc_acc_list->data)); if(guid_equal(current_guid, inc_or_expense_account_guid)) { - assoc_acc_list_start = g_list_remove_link(assoc_acc_list_start, assoc_acc_list); + assoc_acc_list_start = + g_list_remove_link(assoc_acc_list_start, assoc_acc_list); g_list_free_1(assoc_acc_list); acc_list_kvpval = kvp_value_new_glist_nc(assoc_acc_list); kvp_frame_set_slot_nc(assoc_acc_kvpframe, - category_name, - acc_list_kvpval); + category_name, + acc_list_kvpval); return; } } + /* should never happen */ PERR("Income/Expense account and stock account disagree on association"); } - + /* ========================== END OF FILE ===================== */