diff --git a/libgnucash/engine/Account.cpp b/libgnucash/engine/Account.cpp index ed795cc502..41f1705e5d 100644 --- a/libgnucash/engine/Account.cpp +++ b/libgnucash/engine/Account.cpp @@ -5078,6 +5078,14 @@ gnc_account_tree_staged_transaction_traversal (const Account *acc, return 0; } +time64 +gnc_account_get_earliest_date (const Account* account) +{ + g_return_val_if_fail (GNC_IS_ACCOUNT(account), INT64_MAX); + const auto& splits = xaccAccountGetSplits (account); + return splits.empty() ? INT64_MAX : xaccTransGetDate (xaccSplitGetParent (splits.front())); +} + /********************************************************************\ \********************************************************************/ diff --git a/libgnucash/engine/Account.h b/libgnucash/engine/Account.h index 3adbd4d1b7..f748588735 100644 --- a/libgnucash/engine/Account.h +++ b/libgnucash/engine/Account.h @@ -1580,6 +1580,15 @@ typedef enum int xaccAccountTreeForEachTransaction(Account *acc, TransactionCallback proc, void *data); + /** + * Returns the date of the earliest split in the account, or INT64_MAX. + * + * @param account The account to retrieve data about. + * + * @return posted_date of first split in the account, or INT64_MAX + */ + time64 gnc_account_get_earliest_date (const Account* account); + /* Look up an Account in the map non-Baysian */ Account* gnc_account_imap_find_account (Account* acc, const char* category,