def find_or_make_account(account_tuple, root_account, book, currency): current_account_name, account_path = account_tuple[0], account_tuple[1:] current_account = root_account.lookup_by_name(current_account_name) if current_account == None: current_account = Account(book) current_account.SetName(current_account_name) current_account.SetCommodity(currency) root_account.append_child(current_account) if len(account_path) > 0: return find_or_make_account(account_path, current_account, book, currency) else: account_commod = current_account.GetCommodity() if (account_commod.get_mnemonic(), account_commod.get_namespace() ) == \ (currency.get_mnemonic(), currency.get_namespace()) : return current_account else: return None
def recursivly_build_account_tree(original_parent_account, new_parent_account, new_book, new_commodity_table, opening_balance_per_currency, account_types_to_open): for child in original_parent_account.get_children(): original_account = Account(instance=child) new_account = Account(new_book) # attach new account to its parent new_parent_account.append_child(new_account) # copy simple attributes for attribute in ('Name', 'Type', 'Description', 'Notes', 'Code', 'TaxRelated', 'Placeholder'): # new_account.SetAttribute( original_account.GetAttribute() ) getattr(new_account, 'Set' + attribute)(getattr(original_account, 'Get' + attribute)()) # copy commodity orig_commodity = original_account.GetCommodity() namespace = orig_commodity.get_namespace() mnemonic = orig_commodity.get_mnemonic() new_commodity = new_commodity_table.lookup(namespace, mnemonic) assert (new_commodity.get_instance() != None) new_account.SetCommodity(new_commodity) record_opening_balance( original_account, new_account, new_book, opening_balance_per_currency, (namespace, mnemonic), ) recursivly_build_account_tree(original_account, new_account, new_book, new_commodity_table, opening_balance_per_currency, account_types_to_open)