void xaccAccountScrubImbalance (Account *acc) { GList *node, *splits; const char *str; gint split_count = 0, curr_split_no = 1; if (!acc) return; str = xaccAccountGetName(acc); str = str ? str : "(null)"; PINFO ("Looking for imbalance in account %s \n", str); splits = xaccAccountGetSplitList(acc); split_count = g_list_length (splits); for (node = splits; node; node = node->next) { Split *split = node->data; Transaction *trans = xaccSplitGetParent(split); PINFO("Start processing split %d of %d", curr_split_no, split_count); xaccTransScrubCurrency(trans); xaccTransScrubImbalance (trans, gnc_account_get_root (acc), NULL); PINFO("Finished processing split %d of %d", curr_split_no, split_count); curr_split_no++; } }
void xaccAccountScrubImbalance (Account *acc, QofPercentageFunc percentagefunc) { GList *node, *splits; const char *str; const char *message = _( "Looking for imbalances in account %s: %u of %u"); gint split_count = 0, curr_split_no = 0; if (!acc) return; str = xaccAccountGetName(acc); str = str ? str : "(null)"; PINFO ("Looking for imbalances in account %s \n", str); splits = xaccAccountGetSplitList(acc); split_count = g_list_length (splits); for (node = splits; node; node = node->next) { Split *split = node->data; Transaction *trans = xaccSplitGetParent(split); PINFO("Start processing split %d of %d", curr_split_no + 1, split_count); if (curr_split_no % 100 == 0) { char *progress_msg = g_strdup_printf (message, str, curr_split_no, split_count); (percentagefunc)(progress_msg, (100 * curr_split_no) / split_count); g_free (progress_msg); } TransScrubOrphansFast (xaccSplitGetParent (split), gnc_account_get_root (acc)); (percentagefunc)(NULL, 0.0); xaccTransScrubCurrency(trans); xaccTransScrubImbalance (trans, gnc_account_get_root (acc), NULL); PINFO("Finished processing split %d of %d", curr_split_no + 1, split_count); curr_split_no++; } (percentagefunc)(NULL, -1.0); }
void xaccAccountScrubImbalance (Account *acc) { GList *node; const char *str; if (!acc) return; str = xaccAccountGetName(acc); str = str ? str : "(null)"; PINFO ("Looking for imbalance in account %s \n", str); for (node = xaccAccountGetSplitList(acc); node; node = node->next) { Split *split = node->data; Transaction *trans = xaccSplitGetParent(split); xaccTransScrubCurrency(trans); xaccTransScrubImbalance (trans, gnc_account_get_root (acc), NULL); } }
static int scrub_trans_currency_helper (Transaction *t, gpointer data) { xaccTransScrubCurrency (t); return 0; }