void gncScrubBusinessAccount (Account *acc) { if (!acc) return; if (FALSE == xaccAccountIsAPARType (xaccAccountGetType (acc))) return; gncScrubBusinessAccountLots (acc); gncScrubBusinessAccountSplits (acc); }
static gint predicate_is_apar_account(gconstpointer a, gconstpointer user_data) { const Split *split = a; const Account *account = xaccSplitGetAccount(split); if (xaccAccountIsAPARType(xaccAccountGetType(account))) return 0; else return -1; }
void gncScrubBusinessAccountLots (Account *acc) { LotList *lots, *node; gint lot_count = 0; gint curr_lot_no = 1; const gchar *str; if (!acc) return; if (FALSE == xaccAccountIsAPARType (xaccAccountGetType (acc))) return; str = xaccAccountGetName(acc); str = str ? str : "(null)"; ENTER ("(acc=%s)", str); PINFO ("Cleaning up superfluous lot links in account %s \n", str); xaccAccountBeginEdit(acc); lots = xaccAccountGetLotList(acc); lot_count = g_list_length (lots); for (node = lots; node; node = node->next) { GNCLot *lot = node->data; PINFO("Start processing lot %d of %d", curr_lot_no, lot_count); if (lot) gncScrubBusinessLot (lot); PINFO("Finished processing lot %d of %d", curr_lot_no, lot_count); curr_lot_no++; } g_list_free(lots); xaccAccountCommitEdit(acc); LEAVE ("(acc=%s)", str); }
static void lot_scrub_cb (Account *acc, gpointer data) { if (FALSE == xaccAccountIsAPARType (xaccAccountGetType (acc))) return; gncScrubBusinessAccount (acc); }