GnuCash  4.14+
Modules | Files | Data Structures | Macros | Typedefs | Enumerations | Functions
GnuCash Engine: Core, Non-GUI Accounting Functions

The GnuCash Engine provides a set of objects and classes that encapsulate typical financial accounting concepts. More...

Modules

 Environment
 The API in this file is used to read the environment configuration file and set up a number of environment variables based on the values found in it.
 
 Generic Preference Utilities
 The only function in this file is meant to initialize the preferences system early in the load process.
 
 
 Cap Gains
 This file implements the various routines to automatically compute and handle Cap Gains/Losses resulting from trading activities.
 
 Commodities
 A commodity is something of value that is easily tradeable or sellable; for example, currencies, stocks, bonds, grain, copper, and oil are all commodities.
 
 Lots: Core Function for AR/AP, Inventory, Stock Lots, Cap Gains
 One often needs to know that the item 'bought' in one transaction is the same one as the item 'sold' in a different transaction.
 
 Price Database
 The PriceDB is intended to be a database of price quotes, or more specifically, a database of GNCPrices.
 
 Prices
 Each price in the database represents an "instantaneous" quote for a given commodity with respect to another commodity.
 
 Business
 The Business Engine provides a set of structures for that provide small-business accounting features.
 
 Accounting Policy (FIFO/LIFO)
 This file implements Accounting Policy.
 
 Scheduled/Periodic/Recurring Transactions
 
Scheduled Transactions provide a framework for remembering information about a transactions that are set to occur in the future, either once or periodically.
 
 Data Validation
 Data scrubbing, repairing and forward migration routines.
 
 Transaction, Split
 A good overview of transactions, splits and accounts can be found in the texinfo documentation, together with an overview of how to use this API.
 
 Transaction Logging
 The transaction logging mechanism provides a very simple, low-level logging of user input to a file.
 

Files

file  gnc-engine.h
 All type declarations for the whole Gnucash engine.
 

Data Structures

struct  GncImapInfo
 

Macros

#define ACCOUNT_MATCH_ALL_TYPE   "account-match-all"
 This is the type-override when you want to match all accounts. More...
 
#define GNC_ID_NONE   QOF_ID_NONE
 IDENTIFIERS GncGUID Identifiers can be used to reference Accounts, Transactions, Splits and other objects. More...
 
#define GNC_ID_BOOK   QOF_ID_BOOK
 
#define GNC_ID_SESSION   QOF_ID_SESSION
 
#define GNC_ID_NULL   QOF_ID_NULL
 
#define GNC_ID_ACCOUNT   "Account"
 
#define GNC_ID_COMMODITY   "Commodity"
 
#define GNC_ID_COMMODITY_NAMESPACE   "CommodityNamespace"
 
#define GNC_ID_COMMODITY_TABLE   "CommodityTable"
 
#define GNC_ID_LOT   "Lot"
 
#define GNC_ID_PERIOD   "Period"
 
#define GNC_ID_PRICE   "Price"
 
#define GNC_ID_PRICEDB   "PriceDB"
 
#define GNC_ID_SPLIT   "Split"
 
#define GNC_ID_BUDGET   "Budget"
 
#define GNC_ID_SCHEDXACTION   "SchedXaction"
 
#define GNC_ID_SXES   "SchedXactions"
 
#define GNC_ID_SXTG   "SXTGroup"
 
#define GNC_ID_SXTT   "SXTTrans"
 
#define GNC_ID_TRANS   "Trans"
 
#define GNC_INVOICE_ID   "gncInvoice"
 STRING CONSTANTS ********************************************** Used to declare constant KVP keys used in more than one class.
 
#define GNC_INVOICE_GUID   "invoice-guid"
 
#define GNC_OWNER_ID   "gncOwner"
 
#define GNC_OWNER_TYPE   "owner-type"
 
#define GNC_OWNER_GUID   "owner-guid"
 
#define GNC_SX_ID   "sched-xaction"
 

Typedefs

typedef GList AccountList
 GList of Account.
 
typedef GList LotList
 GList of GNCLots.
 
typedef GList SplitList
 GList of Split.
 
typedef GList TransList
 GList of Transaction.
 
typedef GList AccountGUIDList
 GList of GUIDs of a Account.
 
typedef GList BookGUIDList
 GList of GUIDs of a QofBook.
 
typedef void(* EngineCommitErrorCallback) (gpointer data, QofBackendError errcode)
 
typedef gint(* SplitCallback) (Split *s, gpointer data)
 
typedef gint(* TransactionCallback) (Transaction *t, void *data)
 
typedef void(* gnc_engine_init_hook_t) (int, char **)
 Function type for init hooks in the engine. More...
 

Enumerations

enum  GNCPlaceholderType { PLACEHOLDER_NONE, PLACEHOLDER_THIS, PLACEHOLDER_CHILD }
 DOCUMENT ME!
 

Functions

GList * gnc_accounts_and_all_descendants (GList *accounts)
 
void gnc_engine_init (int argc, char **argv)
 PROTOTYPES. More...
 
void gnc_engine_init_static (int argc, char **argv)
 This is the statically linked-in version of gnc_engine_init. More...
 
void gnc_engine_shutdown (void)
 Called to shutdown the engine. More...
 
gboolean gnc_engine_is_initialized (void)
 check the engine is fully initialized
 
void gnc_log_default (void)
 enable default log modules
 
void gnc_engine_add_init_hook (gnc_engine_init_hook_t hook)
 Pass a function pointer to gnc_engine_add_init_hook and it will be called during the evaluation of gnc_engine_init.
 
void gnc_engine_add_commit_error_callback (EngineCommitErrorCallback cb, gpointer data)
 Set a callback function to be called in case an engine commit fails.
 
void gnc_engine_signal_commit_error (QofBackendError errcode)
 

Lookup Accounts and Subaccounts by name or code

Accountgnc_account_lookup_by_name (const Account *parent, const char *name)
 The gnc_account_lookup_by_name() subroutine fetches the account by name from the descendants of the specified account. More...
 
Accountgnc_account_lookup_by_full_name (const Account *any_account, const gchar *name)
 The gnc_account_lookup_full_name() subroutine works like gnc_account_lookup_by_name, but uses fully-qualified names using the given separator.
 
Accountgnc_account_lookup_by_code (const Account *parent, const char *code)
 The gnc_account_lookup_by_code() subroutine works like gnc_account_lookup_by_name, but uses the account code.
 
Accountgnc_account_lookup_by_opening_balance (Account *account, gnc_commodity *commodity)
 Find the opening balance account for the currency. More...
 
GList * gnc_account_lookup_by_type_and_commodity (Account *root, const char *name, GNCAccountType acctype, gnc_commodity *commodity)
 Find a direct child account matching name, GNCAccountType, and/or commodity. More...
 

GNCAccountType conversion/checking

const char * xaccAccountTypeEnumAsString (GNCAccountType type)
 Conversion routines for the account types to/from strings that are used in persistent storage, communications. More...
 
gboolean xaccAccountStringToType (const char *str, GNCAccountType *type)
 Conversion routines for the account types to/from strings that are used in persistent storage, communications. More...
 
GNCAccountType xaccAccountStringToEnum (const char *str)
 Conversion routines for the account types to/from strings that are used in persistent storage, communications. More...
 
const char * xaccAccountGetTypeStr (GNCAccountType type)
 The xaccAccountGetTypeStr() routine returns a string suitable for use in the GUI/Interface. More...
 
guint32 xaccAccountTypesCompatibleWith (GNCAccountType type)
 Return the bitmask of account types compatible with a given type. More...
 
guint32 xaccParentAccountTypesCompatibleWith (GNCAccountType type)
 Return the bitmask of parent account types compatible with a given type. More...
 
gboolean xaccAccountTypesCompatible (GNCAccountType parent_type, GNCAccountType child_type)
 Return TRUE if accounts of type parent_type can have accounts of type child_type as children. More...
 
guint32 xaccAccountTypesValid (void)
 Returns the bitmask of the account type enums that are valid. More...
 
gboolean xaccAccountIsAssetLiabType (GNCAccountType t)
 Convenience function to check if the account is a valid Asset or Liability type, but not a business account type (meaning not an Accounts Payable/Accounts Receivable). More...
 
GNCAccountType xaccAccountTypeGetFundamental (GNCAccountType t)
 Convenience function to return the fundamental type asset/liability/income/expense/equity given an account type. More...
 
gboolean xaccAccountIsAPARType (GNCAccountType t)
 Convenience function to check if the account is a valid business account type (meaning an Accounts Payable/Accounts Receivable). More...
 
gboolean xaccAccountIsEquityType (GNCAccountType t)
 Convenience function to check if the account is a valid Equity type. More...
 

Account split/transaction list management

SplitListxaccAccountGetSplitList (const Account *account)
 The xaccAccountGetSplitList() routine returns a pointer to a GList of the splits in the account. More...
 
gint64 xaccAccountCountSplits (const Account *acc, gboolean include_children)
 The xaccAccountCountSplits() routine returns the number of all the splits in the account. More...
 
void xaccAccountMoveAllSplits (Account *accfrom, Account *accto)
 The xaccAccountMoveAllSplits() routine reassigns each of the splits in accfrom to accto. More...
 
gint xaccAccountForEachTransaction (const Account *account, TransactionCallback proc, void *data)
 The xaccAccountForEachTransaction() routine will traverse all of the transactions in account and call the callback function proc on each transaction. More...
 
Transaction * xaccAccountFindTransByDesc (const Account *account, const char *description)
 Returns a pointer to the transaction, not a copy. More...
 
Split * xaccAccountFindSplitByDesc (const Account *account, const char *description)
 Returns a pointer to the split, not a copy. More...
 
#define xaccAccountInsertSplit(acc, s)   xaccSplitSetAccount((s), (acc))
 The xaccAccountInsertSplit() method will insert the indicated split into the indicated account. More...
 

Account lots

void xaccAccountInsertLot (Account *, GNCLot *)
 The xaccAccountInsertLot() method will register the indicated lot with this account. More...
 
void xaccAccountRemoveLot (Account *, GNCLot *)
 
LotListxaccAccountGetLotList (const Account *account)
 The xaccAccountGetLotList() routine returns a list of all lots in this account. More...
 
gpointer xaccAccountForEachLot (const Account *acc, gpointer(*proc)(GNCLot *lot, gpointer user_data), gpointer user_data)
 The xaccAccountForEachLot() method will apply the function 'proc' to each lot in the account. More...
 
LotListxaccAccountFindOpenLots (const Account *acc, gboolean(*match_func)(GNCLot *lot, gpointer user_data), gpointer user_data, GCompareFunc sort_func)
 Find a list of open lots that match the match_func. More...
 

Account Reconciliation information getters/setters

gboolean xaccAccountGetReconcileLastDate (const Account *account, time64 *last_date)
 DOCUMENT ME!
 
void xaccAccountSetReconcileLastDate (Account *account, time64 last_date)
 DOCUMENT ME!
 
gboolean xaccAccountGetReconcileLastInterval (const Account *account, int *months, int *days)
 DOCUMENT ME!
 
void xaccAccountSetReconcileLastInterval (Account *account, int months, int days)
 DOCUMENT ME!
 
gboolean xaccAccountGetReconcilePostponeDate (const Account *account, time64 *postpone_date)
 DOCUMENT ME!
 
void xaccAccountSetReconcilePostponeDate (Account *account, time64 postpone_date)
 DOCUMENT ME!
 
gboolean xaccAccountGetReconcilePostponeBalance (const Account *account, gnc_numeric *balance)
 DOCUMENT ME!
 
void xaccAccountSetReconcilePostponeBalance (Account *account, gnc_numeric balance)
 DOCUMENT ME!
 
void xaccAccountClearReconcilePostpone (Account *account)
 DOCUMENT ME!
 

Account Placeholder flag

gboolean xaccAccountGetPlaceholder (const Account *account)
 Get the "placeholder" flag for an account. More...
 
void xaccAccountSetPlaceholder (Account *account, gboolean val)
 Set the "placeholder" flag for an account. More...
 

Account Append Text flag

gboolean xaccAccountGetAppendText (const Account *account)
 Get the "import-append-text" flag for an account. More...
 
void xaccAccountSetAppendText (Account *account, gboolean val)
 Set the "import-append-text" flag for an account. More...
 
gboolean xaccAccountGetIsOpeningBalance (const Account *account)
 Get the "opening-balance" flag for an account. More...
 
void xaccAccountSetIsOpeningBalance (Account *account, gboolean val)
 Set the "opening-balance" flag for an account. More...
 
GNCPlaceholderType xaccAccountGetDescendantPlaceholder (const Account *account)
 Returns PLACEHOLDER_NONE if account is NULL or neither account nor any descendant of account is a placeholder. More...
 

Account Hidden flag

gboolean xaccAccountGetHidden (const Account *acc)
 Get the "hidden" flag for an account. More...
 
void xaccAccountSetHidden (Account *acc, gboolean val)
 Set the "hidden" flag for an account. More...
 
gboolean xaccAccountIsHidden (const Account *acc)
 Should this account be "hidden". More...
 

Account Auto Interest flag

gboolean xaccAccountGetAutoInterest (const Account *acc)
 Get the "auto interest" flag for an account. More...
 
void xaccAccountSetAutoInterest (Account *acc, gboolean val)
 Set the "auto interest" flag for an account. More...
 

Account Tax related getters/setters

gboolean xaccAccountGetTaxRelated (const Account *account)
 DOCUMENT ME!
 
void xaccAccountSetTaxRelated (Account *account, gboolean tax_related)
 DOCUMENT ME!
 
const char * xaccAccountGetTaxUSCode (const Account *account)
 DOCUMENT ME!
 
void xaccAccountSetTaxUSCode (Account *account, const char *code)
 DOCUMENT ME!
 
const char * xaccAccountGetTaxUSPayerNameSource (const Account *account)
 DOCUMENT ME!
 
void xaccAccountSetTaxUSPayerNameSource (Account *account, const char *source)
 DOCUMENT ME!
 
gint64 xaccAccountGetTaxUSCopyNumber (const Account *account)
 DOCUMENT ME!
 
void xaccAccountSetTaxUSCopyNumber (Account *account, gint64 copy_number)
 DOCUMENT ME!
 

Account type debit/credit string getters

@ { *

const char * gnc_account_get_debit_string (GNCAccountType acct_type)
 Get the debit string associated with this account type.
 
const char * gnc_account_get_credit_string (GNCAccountType acct_type)
 Get the credit string associated with this account type.
 

Account marking

void xaccAccountSetMark (Account *account, short mark)
 Set a mark on the account. More...
 
void xaccClearMark (Account *account, short val)
 Get the mark set by xaccAccountSetMark short xaccAccountGetMark (const Account *account);. More...
 
void xaccClearMarkDown (Account *account, short val)
 The xaccClearMarkDown will clear the mark only in this and in sub-accounts. More...
 

Staged Traversal

The following functions provide support for "staged traversals" over all of the transactions in an account or group.

The idea is to be able to perform a sequence of traversals ("stages"), and perform an operation on each transaction exactly once for that stage.

Only transactions whose current "stage" is less than the stage of the current traversal will be affected, and they will be "brought up" to the current stage when they are processed.

For example, you could perform a stage 1 traversal of all the transactions in an account, and then perform a stage 1 traversal of the transactions in a second account. Presuming the traversal of the first account didn't abort prematurely, any transactions shared by both accounts would be ignored during the traversal of the second account since they had been processed while traversing the first account.

However, if you had traversed the second account using a stage of 2, then all the transactions in the second account would have been processed.

Traversal can be aborted by having the callback function return a non-zero value. The traversal is aborted immediately, and the non-zero value is returned. Note that an aborted traversal can be restarted; no information is lost due to an abort.

The initial impetus for this particular approach came from generalizing a mark/sweep practice that was already being used in FileIO.c.

Note that currently, there is a hard limit of 256 stages, which can be changed by enlarging "marker" in the transaction struct.

void gnc_account_tree_begin_staged_transaction_traversals (Account *acc)
 gnc_account_tree_begin_staged_transaction_traversals() resets the traversal marker inside every transactions of every account in the account tree originating with the specified node. More...
 
void xaccSplitsBeginStagedTransactionTraversals (SplitList *splits)
 xaccSplitsBeginStagedTransactionTraversals() resets the traversal marker for each transaction which is a parent of one of the splits in the list.
 
void xaccAccountBeginStagedTransactionTraversals (const Account *account)
 xaccAccountBeginStagedTransactionTraversals() resets the traversal marker for each transaction which is a parent of one of the splits in the account.
 
gboolean xaccTransactionTraverse (Transaction *trans, int stage)
 xaccTransactionTraverse() checks the stage of the given transaction. More...
 
int xaccAccountStagedTransactionTraversal (const Account *a, unsigned int stage, TransactionCallback thunk, void *data)
 xaccAccountStagedTransactionTraversal() calls thunk on each transaction in account a whose current marker is less than the given stage and updates each transaction's marker to be stage. More...
 
int gnc_account_tree_staged_transaction_traversal (const Account *account, unsigned int stage, TransactionCallback thunk, void *data)
 gnc_account_tree_staged_transaction_traversal() calls thunk on each transaction in the group whose current marker is less than the given stage and updates each transaction's marker to be stage. More...
 
int xaccAccountTreeForEachTransaction (Account *acc, TransactionCallback proc, void *data)
 Traverse all of the transactions in the given account group. More...
 
GncImportMatchMapgnc_account_imap_create_imap (Account *acc)
 Obtain an ImportMatchMap object from an Account or a Book.
 
Accountgnc_account_imap_find_account (GncImportMatchMap *imap, const char *category, const char *key)
 
void gnc_account_imap_add_account (GncImportMatchMap *imap, const char *category, const char *key, Account *acc)
 
void gnc_account_imap_delete_account (GncImportMatchMap *imap, const char *category, const char *key)
 
Accountgnc_account_imap_find_account_bayes (GncImportMatchMap *imap, GList *tokens)
 Look up an Account in the map using Baysian. More...
 
void gnc_account_imap_add_account_bayes (GncImportMatchMap *imap, GList *tokens, Account *acc)
 Updates the imap for a given account using a list of tokens.
 
GList * gnc_account_imap_get_info_bayes (Account *acc)
 Returns a GList of structure imap_info of all Bayesian mappings for required Account.
 
GList * gnc_account_imap_get_info (Account *acc, const char *category)
 Returns a GList of structure imap_info of all Non Bayesian mappings for required Account.
 
gchar * gnc_account_get_map_entry (Account *acc, const char *head, const char *category)
 Returns the text string pointed to by head and category for the Account, free the returned text.
 
void gnc_account_delete_map_entry (Account *acc, char *head, char *category, char *match_string, gboolean empty)
 Delete the entry for Account pointed to by head,category and match_string, if empty is TRUE then use delete if empty.
 
void gnc_account_delete_all_bayes_maps (Account *acc)
 Delete all bayes entries for Account.
 
void gnc_account_reset_convert_bayes_to_flat (void)
 Reset the flag that indicates the function imap_convert_bayes_to_flat has been run.
 

Deprecated Routines.

void DxaccAccountSetCurrency (Account *account, gnc_commodity *currency)
 
gnc_commodity * DxaccAccountGetCurrency (const Account *account)
 
void dxaccAccountSetQuoteTZ (Account *account, const char *tz)
 Set the timezone to be used when interpreting the results from a given Finance::Quote backend. More...
 
const char * dxaccAccountGetQuoteTZ (const Account *account)
 Get the timezone to be used when interpreting the results from a given Finance::Quote backend. More...
 

Account parameter names

#define ACCOUNT_KVP   "kvp"
 
#define ACCOUNT_NAME_   "name"
 
#define ACCOUNT_CODE_   "code"
 
#define ACCOUNT_DESCRIPTION_   "desc"
 
#define ACCOUNT_COLOR_   "color"
 
#define ACCOUNT_FILTER_   "filter"
 
#define ACCOUNT_SORT_ORDER_   "sort-order"
 
#define ACCOUNT_SORT_REVERSED_   "sort-reversed"
 
#define ACCOUNT_NOTES_   "notes"
 
#define ACCOUNT_BALANCE_   "balance"
 
#define ACCOUNT_NOCLOSING_   "noclosing"
 
#define ACCOUNT_OPENING_BALANCE_   "opening-balance"
 
#define ACCOUNT_CLEARED_   "cleared"
 
#define ACCOUNT_RECONCILED_   "reconciled"
 
#define ACCOUNT_PRESENT_   "present"
 
#define ACCOUNT_FUTURE_MINIMUM_   "future-minimum"
 
#define ACCOUNT_TAX_RELATED   "tax-related-p"
 
#define ACCOUNT_TYPE_   "account-type"
 
#define ACCOUNT_SCU   "smallest-commodity-unit"
 
#define ACCOUNT_NSCU   "non-standard-scu"
 
#define ACCOUNT_PARENT   "parent-account"
 

QofLogModule identifiers

#define GNC_MOD_ROOT   "gnc"
 
#define GNC_MOD_ENGINE   "gnc.engine"
 
#define GNC_MOD_ACCOUNT   "gnc.account"
 
#define GNC_MOD_SX   "gnc.engine.sx"
 
#define GNC_MOD_QUERY   "gnc.query"
 
#define GNC_MOD_SCRUB   "gnc.scrub"
 
#define GNC_MOD_LOT   "gnc.lots"
 
#define GNC_MOD_COMMODITY   "gnc.commodity"
 
#define GNC_MOD_BACKEND   "gnc.backend"
 
#define GNC_MOD_PRICE   "gnc.pricedb"
 
#define GNC_MOD_BUSINESS   "gnc.business"
 
#define GNC_MOD_IO   "gnc.io"
 
#define GNC_MOD_BOOK   "gnc.book-period"
 
#define GNC_MOD_GUI   "gnc.gui"
 
#define GNC_MOD_GUI_SX   "gnc.gui.sx"
 
#define GNC_MOD_GUILE   "gnc.guile"
 
#define GNC_MOD_LEDGER   "gnc.ledger"
 
#define GNC_MOD_REGISTER   "gnc.register"
 
#define GNC_MOD_HTML   "gnc.html"
 
#define GNC_MOD_PREFS   "gnc.pref"
 
#define GNC_MOD_IMPORT   "gnc.import"
 
#define GNC_MOD_ASSISTANT   "gnc.assistant"
 
#define GNC_MOD_BUDGET   "gnc.budget"
 

Detailed Description

The GnuCash Engine provides a set of objects and classes that encapsulate typical financial accounting concepts.

The GnuCash GUI is expected to manipulate these objects through the provided engine API.

Macro Definition Documentation

◆ ACCOUNT_MATCH_ALL_TYPE

#define ACCOUNT_MATCH_ALL_TYPE   "account-match-all"

This is the type-override when you want to match all accounts.

Used in the gnome-search parameter list. Be careful when you use this.

Definition at line 1654 of file Account.h.

◆ GNC_ID_NONE

#define GNC_ID_NONE   QOF_ID_NONE

IDENTIFIERS GncGUID Identifiers can be used to reference Accounts, Transactions, Splits and other objects.

These Gnucash types are referred to as Gnucash entities. GncGUID Identifiers are globally-unique and permanent, i.e., once an entity has been assigned an identifier, it retains that same identifier for its lifetime.

  • Identifiers are 'typed' with strings. The ids used in gnucash are defined below. An id with type GNC_ID_NONE does not refer to any entity, although that may change as new ids are created. An id with type GNC_ID_NULL does not refer to any entity, and will never refer to any entity. An identifier with any other type may refer to an actual entity, but that is not guaranteed. If an id does refer to an entity, the type of the entity will match the type of the identifier.

Definition at line 95 of file gnc-engine.h.

◆ xaccAccountInsertSplit

#define xaccAccountInsertSplit (   acc,
 
)    xaccSplitSetAccount((s), (acc))

The xaccAccountInsertSplit() method will insert the indicated split into the indicated account.

If the split already belongs to another account, it will be removed from that account first.

Definition at line 1038 of file Account.h.

Typedef Documentation

◆ gnc_engine_init_hook_t

typedef void(* gnc_engine_init_hook_t) (int, char **)

Function type for init hooks in the engine.

Definition at line 225 of file gnc-engine.h.

Function Documentation

◆ DxaccAccountGetCurrency()

gnc_commodity* DxaccAccountGetCurrency ( const Account account)
Deprecated:
The current API associates only one thing with an account: the 'commodity'.

Use xaccAccountGetCommodity() to fetch it.

Definition at line 3432 of file Account.cpp.

3433 {
3434  GValue v = G_VALUE_INIT;
3435  const char *s = NULL;
3436  gnc_commodity_table *table;
3437  gnc_commodity *retval = NULL;
3438 
3439  if (!acc) return NULL;
3440  qof_instance_get_path_kvp (QOF_INSTANCE(acc), &v, {"old-currency"});
3441  if (G_VALUE_HOLDS_STRING (&v))
3442  s = g_value_get_string (&v);
3443  if (s)
3444  {
3446  retval = gnc_commodity_table_lookup_unique (table, s);
3447  }
3448  g_value_unset (&v);
3449 
3450  return retval;
3451 }
gnc_commodity_table * gnc_commodity_table_get_table(QofBook *book)
Returns the commodity table associated with a book.
QofBook * qof_instance_get_book(gconstpointer inst)
Return the book pointer.

◆ dxaccAccountGetQuoteTZ()

const char* dxaccAccountGetQuoteTZ ( const Account account)

Get the timezone to be used when interpreting the results from a given Finance::Quote backend.

Unfortunately, the upstream sources don't label their output, so the user has to specify this bit. This function uses a static char*.

Deprecated:
Price quote information is now stored on the commodity, not the account.

Definition at line 5085 of file Account.cpp.

5086 {
5087  static char *quote_tz = nullptr;
5088  if (!acc) return NULL;
5089  if (!xaccAccountIsPriced(acc)) return NULL;
5090  g_free (quote_tz);
5091  quote_tz = get_kvp_string_tag (acc, "old-quote-tz");
5092  return quote_tz;
5093 }
gboolean xaccAccountIsPriced(const Account *acc)
Returns true if the account is a stock, mutual fund or currency, otherwise false. ...
Definition: Account.cpp:4718

◆ DxaccAccountSetCurrency()

void DxaccAccountSetCurrency ( Account account,
gnc_commodity *  currency 
)
Deprecated:
The current API associates only one thing with an account: the 'commodity'.

Use xaccAccountGetCommodity() to fetch it.

These two funcs take control of their gnc_commodity args. Don't free

Definition at line 2747 of file Account.cpp.

2748 {
2749  QofBook *book;
2750  GValue v = G_VALUE_INIT;
2751  const char *s = gnc_commodity_get_unique_name (currency);
2752  gnc_commodity *commodity;
2753  gnc_commodity_table *table;
2754 
2755  if ((!acc) || (!currency)) return;
2756  g_value_init (&v, G_TYPE_STRING);
2757  g_value_set_string (&v, s);
2758  qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {"old-currency"});
2759  mark_account (acc);
2760  xaccAccountCommitEdit(acc);
2761  g_value_unset (&v);
2762 
2764  commodity = gnc_commodity_table_lookup_unique (table, s);
2765 
2766  if (!commodity)
2767  {
2768  book = qof_instance_get_book(acc);
2770  currency);
2771  }
2772 }
gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table *table, gnc_commodity *comm)
Add a new commodity to the commodity table.
gnc_commodity_table * gnc_commodity_table_get_table(QofBook *book)
Returns the commodity table associated with a book.
QofBook * qof_instance_get_book(gconstpointer inst)
Return the book pointer.
const char * gnc_commodity_get_unique_name(const gnc_commodity *cm)
Retrieve the 'unique' name for the specified commodity.
void xaccAccountCommitEdit(Account *acc)
ThexaccAccountCommitEdit() subroutine is the second phase of a two-phase-commit wrapper for account u...
Definition: Account.cpp:1496

◆ dxaccAccountSetQuoteTZ()

void dxaccAccountSetQuoteTZ ( Account account,
const char *  tz 
)

Set the timezone to be used when interpreting the results from a given Finance::Quote backend.

Unfortunately, the upstream sources don't label their output, so the user has to specify this bit.

Deprecated:
Price quote information is now stored on the commodity, not the account.

Definition at line 5074 of file Account.cpp.

5075 {
5076  if (!acc) return;
5077  if (!xaccAccountIsPriced(acc)) return;
5078  set_kvp_string_tag (acc, "old-quote-tz", tz);
5079 }
gboolean xaccAccountIsPriced(const Account *acc)
Returns true if the account is a stock, mutual fund or currency, otherwise false. ...
Definition: Account.cpp:4718

◆ gnc_account_imap_find_account_bayes()

Account* gnc_account_imap_find_account_bayes ( GncImportMatchMap imap,
GList *  tokens 
)

Look up an Account in the map using Baysian.

Look up an Account in the map using Baysian.

Definition at line 5853 of file Account.cpp.

5854 {
5855  if (!imap)
5856  return nullptr;
5857  check_import_map_data (imap->book);
5858  auto first_pass = get_first_pass_probabilities(imap, tokens);
5859  if (!first_pass.size())
5860  return nullptr;
5861  auto final_probabilities = build_probabilities(first_pass);
5862  if (!final_probabilities.size())
5863  return nullptr;
5864  auto best = highest_probability(final_probabilities);
5865  if (best.account_guid == "")
5866  return nullptr;
5867  if (best.probability < threshold)
5868  return nullptr;
5869  gnc::GUID guid;
5870  try {
5871  guid = gnc::GUID::from_string(best.account_guid);
5872  } catch (gnc::guid_syntax_exception&) {
5873  return nullptr;
5874  }
5875  auto account = xaccAccountLookup (reinterpret_cast<GncGUID*>(&guid), imap->book);
5876  return account;
5877 }
Account * xaccAccountLookup(const GncGUID *guid, QofBook *book)
The xaccAccountLookup() subroutine will return the account associated with the given id...
Definition: Account.cpp:2056

◆ gnc_account_lookup_by_name()

Account* gnc_account_lookup_by_name ( const Account parent,
const char *  name 
)

The gnc_account_lookup_by_name() subroutine fetches the account by name from the descendants of the specified account.

The immediate children are searched first. If there is no match,, then a recursive search of all descendants is performed looking for a match.

Returns
A pointer to the account with the specified name, or NULL if the account was not found.

Definition at line 3089 of file Account.cpp.

3090 {
3091  return (Account*)account_foreach_descendant_breadthfirst_until (parent, is_acct_name, (char*)name);
3092 }

◆ gnc_account_lookup_by_opening_balance()

Account* gnc_account_lookup_by_opening_balance ( Account account,
gnc_commodity *  commodity 
)

Find the opening balance account for the currency.

Parameters
accountThe account of which the sought-for account is a descendant.
commodityThe commodity in which the account should be denominated
Returns
The descendant account of EQUITY_TYPE_OPENING_BALANCE or NULL if one doesn't exist.

Definition at line 3117 of file Account.cpp.

3118 {
3119  return (Account *)gnc_account_foreach_descendant_until (account, is_opening_balance_account, commodity);
3120 }
gpointer gnc_account_foreach_descendant_until(const Account *acc, AccountCb2 thunk, gpointer user_data)
This method will traverse all children of this accounts and their descendants, calling &#39;func&#39; on each...
Definition: Account.cpp:3259

◆ gnc_account_lookup_by_type_and_commodity()

GList* gnc_account_lookup_by_type_and_commodity ( Account root,
const char *  name,
GNCAccountType  acctype,
gnc_commodity *  commodity 
)

Find a direct child account matching name, GNCAccountType, and/or commodity.

Name and commodity may be nullptr in which case the accounts in the list may have any value for those properties. Note that commodity matching is by equivalence: If the mnemonic/symbol and namespace are the same, it matches.

Parameters
rootThe account among whose children one expects to find the account.
nameThe name of the account to look for or nullptr.
acctypeThe GNCAccountType to match.
commodityThe commodity in which the account should be denominated or nullptr.
Returns
A GList of children matching the supplied parameters.

Definition at line 3194 of file Account.cpp.

3198 {
3199  GList *retval{};
3200  auto rpriv{GET_PRIVATE(root)};
3201  for (auto node = rpriv->children; node; node = node->next)
3202  {
3203  auto account{static_cast<Account*>(node->data)};
3204  if (xaccAccountGetType (account) == acctype)
3205  {
3206  if (commodity &&
3208  commodity))
3209  continue;
3210 
3211  if (name && strcmp(name, xaccAccountGetName(account)))
3212  continue;
3213 
3214  retval = g_list_prepend(retval, account);
3215  }
3216  }
3217 
3218  if (!retval) // Recurse through the children
3219  for (auto node = rpriv->children; node; node = node->next)
3220  {
3221  auto account{static_cast<Account*>(node->data)};
3222  auto result = gnc_account_lookup_by_type_and_commodity(account,
3223  name,
3224  acctype,
3225  commodity);
3226  if (result)
3227  retval = g_list_concat(result, retval);
3228  }
3229  return retval;
3230 }
GNCAccountType xaccAccountGetType(const Account *acc)
Returns the account&#39;s account type.
Definition: Account.cpp:3285
gnc_commodity * xaccAccountGetCommodity(const Account *acc)
Get the account&#39;s commodity.
Definition: Account.cpp:3454
const char * xaccAccountGetName(const Account *acc)
Get the account&#39;s name.
Definition: Account.cpp:3307
gboolean gnc_commodity_equiv(const gnc_commodity *a, const gnc_commodity *b)
This routine returns TRUE if the two commodities are equivalent.
GList * gnc_account_lookup_by_type_and_commodity(Account *root, const char *name, GNCAccountType acctype, gnc_commodity *commodity)
Find a direct child account matching name, GNCAccountType, and/or commodity.
Definition: Account.cpp:3194

◆ gnc_account_tree_begin_staged_transaction_traversals()

void gnc_account_tree_begin_staged_transaction_traversals ( Account acc)

gnc_account_tree_begin_staged_transaction_traversals() resets the traversal marker inside every transactions of every account in the account tree originating with the specified node.

This is done so that a new sequence of staged traversals can begin.

Definition at line 5357 of file Account.cpp.

5358 {
5359  GList *descendants;
5360 
5361  descendants = gnc_account_get_descendants(account);
5362  g_list_foreach(descendants, (GFunc)do_one_account, NULL);
5363  g_list_free(descendants);
5364 }
GList * gnc_account_get_descendants(const Account *account)
This routine returns a flat list of all of the accounts that are descendants of the specified account...
Definition: Account.cpp:3042

◆ gnc_account_tree_staged_transaction_traversal()

int gnc_account_tree_staged_transaction_traversal ( const Account account,
unsigned int  stage,
TransactionCallback  thunk,
void *  data 
)

gnc_account_tree_staged_transaction_traversal() calls thunk on each transaction in the group whose current marker is less than the given stage and updates each transaction's marker to be stage.

The traversal will stop if thunk returns a non-zero value. gnc_account_tree_staged_transaction_traversal() function will return zero or the non-zero value returned by thunk. This API does not handle handle recursive traversals.

Warning
For performance reasons, the transaction callback thunk must never destroy any of the transaction's splits, nor assign any of them to a different account. To do so risks a crash.

Definition at line 5407 of file Account.cpp.

5411 {
5412  const AccountPrivate *priv;
5413  GList *acc_p, *split_p;
5414  Transaction *trans;
5415  Split *s;
5416  int retval;
5417 
5418  if (!acc) return 0;
5419 
5420  /* depth first traversal */
5421  priv = GET_PRIVATE(acc);
5422  for (acc_p = priv->children; acc_p; acc_p = g_list_next(acc_p))
5423  {
5424  retval = gnc_account_tree_staged_transaction_traversal(static_cast <Account*> (acc_p->data),
5425  stage, thunk, cb_data);
5426  if (retval) return retval;
5427  }
5428 
5429  /* Now this account */
5430  for (split_p = priv->splits; split_p; split_p = g_list_next(split_p))
5431  {
5432  s = static_cast <Split*> (split_p->data);
5433  trans = s->parent;
5434  if (trans && (trans->marker < stage))
5435  {
5436  trans->marker = stage;
5437  if (thunk)
5438  {
5439  retval = thunk(trans, cb_data);
5440  if (retval) return retval;
5441  }
5442  }
5443  }
5444 
5445  return 0;
5446 }
int gnc_account_tree_staged_transaction_traversal(const Account *acc, unsigned int stage, TransactionCallback thunk, void *cb_data)
gnc_account_tree_staged_transaction_traversal() calls thunk on each transaction in the group whose cu...
Definition: Account.cpp:5407

◆ gnc_engine_init()

void gnc_engine_init ( int  argc,
char **  argv 
)

PROTOTYPES.

gnc_engine_init should be called before gnc engine functions can be used.

Definition at line 116 of file gnc-engine.c.

117 {
118  if (1 == engine_is_initialized) return;
119 
120  gnc_engine_init_part1();
121  gnc_engine_init_part2();
122  gnc_engine_init_part3(argc, argv);
123 }

◆ gnc_engine_init_static()

void gnc_engine_init_static ( int  argc,
char **  argv 
)

This is the statically linked-in version of gnc_engine_init.

It is identical to that function except that it doesn't load any backend library.

Definition at line 126 of file gnc-engine.c.

127 {
128  if (1 == engine_is_initialized) return;
129 
130  gnc_engine_init_part1();
131  gnc_engine_init_part3(argc, argv);
132 }

◆ gnc_engine_shutdown()

void gnc_engine_shutdown ( void  )

Called to shutdown the engine.

Definition at line 141 of file gnc-engine.c.

142 {
144  qof_close();
145  engine_is_initialized = 0;
146 }
void qof_log_shutdown(void)
Be nice, close the logfile if possible.
Definition: qoflog.cpp:268
void qof_close(void)
Safely close down the Query Object Framework.
Definition: qofutil.cpp:269

◆ xaccAccountCountSplits()

gint64 xaccAccountCountSplits ( const Account acc,
gboolean  include_children 
)

The xaccAccountCountSplits() routine returns the number of all the splits in the account.

xaccAccountCountSplits is O(N). if testing for emptiness, use xaccAccountGetSplitList != NULL.

Parameters
accthe account for which to count the splits
include_childrenalso count splits in descendants (TRUE) or for this account only (FALSE).

Definition at line 4021 of file Account.cpp.

4022 {
4023  gint64 nr, i;
4024 
4025  PWARN ("xaccAccountCountSplits is deprecated and will be removed \
4026 in GnuCash 5.0. If testing for an empty account, use \
4027 xaccAccountGetSplitList(account) == NULL instead. To test descendants \
4028 as well, use gnc_account_and_descendants_empty.");
4029  g_return_val_if_fail(GNC_IS_ACCOUNT(acc), 0);
4030 
4031  nr = g_list_length(xaccAccountGetSplitList(acc));
4032  if (include_children && (gnc_account_n_children(acc) != 0))
4033  {
4034  for (i=0; i < gnc_account_n_children(acc); i++)
4035  {
4036  nr += xaccAccountCountSplits(gnc_account_nth_child(acc, i), TRUE);
4037  }
4038  }
4039  return nr;
4040 }
SplitList * xaccAccountGetSplitList(const Account *acc)
The xaccAccountGetSplitList() routine returns a pointer to a GList of the splits in the account...
Definition: Account.cpp:4013
#define PWARN(format, args...)
Log a warning.
Definition: qoflog.h:250
gint gnc_account_n_children(const Account *account)
Return the number of children of the specified account.
Definition: Account.cpp:2958
gint64 xaccAccountCountSplits(const Account *acc, gboolean include_children)
The xaccAccountCountSplits() routine returns the number of all the splits in the account.
Definition: Account.cpp:4021
Account * gnc_account_nth_child(const Account *parent, gint num)
Return the n&#39;th child account of the specified parent account.
Definition: Account.cpp:2973

◆ xaccAccountFindOpenLots()

LotList* xaccAccountFindOpenLots ( const Account acc,
gboolean(*)(GNCLot *lot, gpointer user_data)  match_func,
gpointer  user_data,
GCompareFunc  sort_func 
)

Find a list of open lots that match the match_func.

Sort according to sort_func. If match_func is NULL, then all open lots are returned. If sort_func is NULL, then the returned list has no particular order. The caller must free to returned list.

Definition at line 4063 of file Account.cpp.

4067 {
4068  AccountPrivate *priv;
4069  GList *lot_list;
4070  GList *retval = NULL;
4071 
4072  g_return_val_if_fail(GNC_IS_ACCOUNT(acc), NULL);
4073 
4074  priv = GET_PRIVATE(acc);
4075  for (lot_list = priv->lots; lot_list; lot_list = lot_list->next)
4076  {
4077  GNCLot *lot = static_cast<GNCLot*>(lot_list->data);
4078 
4079  /* If this lot is closed, then ignore it */
4080  if (gnc_lot_is_closed (lot))
4081  continue;
4082 
4083  if (match_func && !(match_func)(lot, user_data))
4084  continue;
4085 
4086  /* Ok, this is a valid lot. Add it to our list of lots */
4087  retval = g_list_prepend (retval, lot);
4088  }
4089 
4090  if (sort_func)
4091  retval = g_list_sort (retval, sort_func);
4092 
4093  return retval;
4094 }
gboolean gnc_lot_is_closed(GNCLot *lot)
The gnc_lot_is_closed() routine returns a boolean flag: is this lot closed? A lot is closed if its ba...
Definition: gnc-lot.c:382

◆ xaccAccountFindSplitByDesc()

Split* xaccAccountFindSplitByDesc ( const Account account,
const char *  description 
)

Returns a pointer to the split, not a copy.

Definition at line 5179 of file Account.cpp.

5180 {
5181  Split *split;
5182 
5183  /* Get the split which has a transaction matching the description. */
5184  finder_help_function(acc, description, &split, NULL);
5185  return split;
5186 }

◆ xaccAccountFindTransByDesc()

Transaction* xaccAccountFindTransByDesc ( const Account account,
const char *  description 
)

Returns a pointer to the transaction, not a copy.

Definition at line 5194 of file Account.cpp.

5195 {
5196  Transaction *trans;
5197 
5198  /* Get the translation matching the description. */
5199  finder_help_function(acc, description, NULL, &trans);
5200  return trans;
5201 }

◆ xaccAccountForEachLot()

gpointer xaccAccountForEachLot ( const Account acc,
gpointer(*)(GNCLot *lot, gpointer user_data)  proc,
gpointer  user_data 
)

The xaccAccountForEachLot() method will apply the function 'proc' to each lot in the account.

If 'proc' returns a non-NULL value, further application will be stopped, and the resulting value will be returned. There is no guaranteed order over which the Lots will be traversed.

◆ xaccAccountForEachTransaction()

gint xaccAccountForEachTransaction ( const Account account,
TransactionCallback  proc,
void *  data 
)

The xaccAccountForEachTransaction() routine will traverse all of the transactions in account and call the callback function proc on each transaction.

Processing will continue if-and-only-if proc returns 0. The user data pointer data will be passed on to the callback function proc.

This function does not descend recursively to traverse transactions in child accounts.

proc will be called exactly once for each transaction that is pointed to by at least one split in the given account.

The result of this function will be 0 if and only if every relevant transaction was traversed exactly once. Else the return value is the last non-zero value returned by proc.

Warning
For performance reasons, the transaction callback proc must never destroy any of the transaction's splits, nor assign any of them to a different account. To do so risks a crash.
The traversal occurs only over the transactions that are locally cached in the local gnucash engine. If the gnucash engine is attached to a remote database, the database may contain (many) transactions that are not mirrored in the local cache. This routine will not cause an SQL database query to be performed; it will not traverse transactions present only in the remote database.

Definition at line 5464 of file Account.cpp.

5466 {
5467  if (!acc || !proc) return 0;
5469  return xaccAccountStagedTransactionTraversal(acc, 42, proc, data);
5470 }
void xaccAccountBeginStagedTransactionTraversals(const Account *account)
xaccAccountBeginStagedTransactionTraversals() resets the traversal marker for each transaction which ...
Definition: Account.cpp:5319
int xaccAccountStagedTransactionTraversal(const Account *acc, unsigned int stage, TransactionCallback thunk, void *cb_data)
xaccAccountStagedTransactionTraversal() calls thunk on each transaction in account a whose current ma...
Definition: Account.cpp:5367

◆ xaccAccountGetAppendText()

gboolean xaccAccountGetAppendText ( const Account account)

Get the "import-append-text" flag for an account.

This is the saved state of the Append checkbox in the "Generic import transaction matcher" used to set the initial state of the Append checkbox next time this account is imported.

Parameters
accountThe account whose flag should be retrieved.
Returns
The current state of the account's "import-append-text" flag.

Definition at line 4280 of file Account.cpp.

4281 {
4282  return boolean_from_key(acc, {"import-append-text"});
4283 }

◆ xaccAccountGetAutoInterest()

gboolean xaccAccountGetAutoInterest ( const Account acc)

Get the "auto interest" flag for an account.

If this flag is set then the account (and any children) will trigger an interest transfer after reconciling.

Parameters
accThe account whose flag should be retrieved.
Returns
The current state of the account's "auto interest" flag.

Definition at line 4342 of file Account.cpp.

4343 {
4344  return boolean_from_key (acc, {KEY_RECONCILE_INFO, "auto-interest-transfer"});
4345 }

◆ xaccAccountGetDescendantPlaceholder()

GNCPlaceholderType xaccAccountGetDescendantPlaceholder ( const Account account)

Returns PLACEHOLDER_NONE if account is NULL or neither account nor any descendant of account is a placeholder.

If account is a placeholder, returns PLACEHOLDER_THIS. Otherwise, if any descendant of account is a placeholder, return PLACEHOLDER_CHILD.

Definition at line 4318 of file Account.cpp.

4319 {
4320  GList *descendants, *node;
4321  GNCPlaceholderType ret = PLACEHOLDER_NONE;
4322 
4323  g_return_val_if_fail(GNC_IS_ACCOUNT(acc), PLACEHOLDER_NONE);
4324  if (xaccAccountGetPlaceholder(acc)) return PLACEHOLDER_THIS;
4325 
4326  descendants = gnc_account_get_descendants(acc);
4327  for (node = descendants; node; node = node->next)
4328  if (xaccAccountGetPlaceholder((Account *) node->data))
4329  {
4330  ret = PLACEHOLDER_CHILD;
4331  break;
4332  }
4333 
4334  g_list_free(descendants);
4335  return ret;
4336 }
GList * gnc_account_get_descendants(const Account *account)
This routine returns a flat list of all of the accounts that are descendants of the specified account...
Definition: Account.cpp:3042
GNCPlaceholderType
DOCUMENT ME!
Definition: Account.h:1193
gboolean xaccAccountGetPlaceholder(const Account *acc)
Get the "placeholder" flag for an account.
Definition: Account.cpp:4268

◆ xaccAccountGetHidden()

gboolean xaccAccountGetHidden ( const Account acc)

Get the "hidden" flag for an account.

If this flag is set then the account (and any children) will be hidden from the user unless they explicitly ask to see them.

Parameters
accThe account whose flag should be retrieved.
Returns
The current state of the account's "hidden" flag.

Definition at line 4357 of file Account.cpp.

4358 {
4359  return boolean_from_key (acc, {"hidden"});
4360 }

◆ xaccAccountGetIsOpeningBalance()

gboolean xaccAccountGetIsOpeningBalance ( const Account account)

Get the "opening-balance" flag for an account.

If this flag is set then the account is used for opening balance transactions.

Parameters
accountThe account whose flag should be retrieved.
Returns
The current state of the account's "opening-balance" flag.

Definition at line 4292 of file Account.cpp.

4293 {
4294  if (GET_PRIVATE(acc)->type != ACCT_TYPE_EQUITY)
4295  return false;
4296  auto priv = GET_PRIVATE(acc);
4297  if (priv->equity_type == TriState::Unset)
4298  {
4299  auto equity_type = get_kvp_string_tag (acc, "equity-type");
4300  priv->equity_type = g_strcmp0 (equity_type, "opening-balance") ?
4301  TriState::False : TriState::True;
4302  g_free (equity_type);
4303  }
4304  return (priv->equity_type == TriState::True);
4305 }
Equity account is used to balance the balance sheet.
Definition: Account.h:149

◆ xaccAccountGetLotList()

LotList* xaccAccountGetLotList ( const Account account)

The xaccAccountGetLotList() routine returns a list of all lots in this account.

Parameters
accountThe account whose lots should be returned.
Returns
A GList of lot pointers, or NULL if there are no lots in this account children. It is the callers responsibility to free any returned list with the g_list_free() function.

Definition at line 4056 of file Account.cpp.

4057 {
4058  g_return_val_if_fail(GNC_IS_ACCOUNT(acc), NULL);
4059  return g_list_copy(GET_PRIVATE(acc)->lots);
4060 }

◆ xaccAccountGetPlaceholder()

gboolean xaccAccountGetPlaceholder ( const Account account)

Get the "placeholder" flag for an account.

If this flag is set then the account may not be modified by the user.

Parameters
accountThe account whose flag should be retrieved.
Returns
The current state of the account's "placeholder" flag.

Definition at line 4268 of file Account.cpp.

4269 {
4270  return boolean_from_key(acc, {"placeholder"});
4271 }

◆ xaccAccountGetSplitList()

SplitList* xaccAccountGetSplitList ( const Account account)

The xaccAccountGetSplitList() routine returns a pointer to a GList of the splits in the account.

Note
This GList is the account's internal data structure: do not delete it when done; treat it as a read-only structure. Note that some routines (such as xaccAccountRemoveSplit()) modify this list directly, and could leave you with a corrupted pointer.
This should be changed so that the returned value is a copy of the list. No other part of the code should have access to the internal data structure used by this object.

Definition at line 4013 of file Account.cpp.

4014 {
4015  g_return_val_if_fail(GNC_IS_ACCOUNT(acc), NULL);
4016  xaccAccountSortSplits((Account*)acc, FALSE); // normally a noop
4017  return GET_PRIVATE(acc)->splits;
4018 }
void xaccAccountSortSplits(Account *acc, gboolean force)
The xaccAccountSortSplits() routine will resort the account&#39;s splits if the sort is dirty...
Definition: Account.cpp:2010

◆ xaccAccountGetTypeStr()

const char* xaccAccountGetTypeStr ( GNCAccountType  type)

The xaccAccountGetTypeStr() routine returns a string suitable for use in the GUI/Interface.

These strings should be translated to the local language.

Definition at line 4524 of file Account.cpp.

4525 {
4526  if (type < 0 || NUM_ACCOUNT_TYPES <= type ) return "";
4527  return _(account_type_name [type]);
4528 }
stop here; the following types just aren&#39;t ready for prime time
Definition: Account.h:164

◆ xaccAccountInsertLot()

void xaccAccountInsertLot ( Account ,
GNCLot *   
)

The xaccAccountInsertLot() method will register the indicated lot with this account.

Any splits later inserted into this lot must belong to this account. If the lot is already in another account, the lot, and all of the splits in it, will be moved from that account to this account.

Definition at line 2149 of file Account.cpp.

2150 {
2151  AccountPrivate *priv, *opriv;
2152  Account * old_acc = NULL;
2153  Account* lot_account;
2154 
2155  /* errors */
2156  g_return_if_fail(GNC_IS_ACCOUNT(acc));
2157  g_return_if_fail(GNC_IS_LOT(lot));
2158 
2159  /* optimizations */
2160  lot_account = gnc_lot_get_account(lot);
2161  if (lot_account == acc)
2162  return;
2163 
2164  ENTER ("(acc=%p, lot=%p)", acc, lot);
2165 
2166  /* pull it out of the old account */
2167  if (lot_account)
2168  {
2169  old_acc = lot_account;
2170  opriv = GET_PRIVATE(old_acc);
2171  opriv->lots = g_list_remove(opriv->lots, lot);
2172  }
2173 
2174  priv = GET_PRIVATE(acc);
2175  priv->lots = g_list_prepend(priv->lots, lot);
2176  gnc_lot_set_account(lot, acc);
2177 
2178  /* Don't move the splits to the new account. The caller will do this
2179  * if appropriate, and doing it here will not work if we are being
2180  * called from gnc_book_close_period since xaccAccountInsertSplit
2181  * will try to balance capital gains and things aren't ready for that. */
2182 
2183  qof_event_gen (QOF_INSTANCE(lot), QOF_EVENT_ADD, NULL);
2184  qof_event_gen (&acc->inst, QOF_EVENT_MODIFY, NULL);
2185 
2186  LEAVE ("(acc=%p, lot=%p)", acc, lot);
2187 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
Account * gnc_lot_get_account(const GNCLot *lot)
The gnc_lot_get_account() routine returns the account with which this lot is associated.
Definition: gnc-lot.c:392
void qof_event_gen(QofInstance *entity, QofEventId event_id, gpointer event_data)
Invoke all registered event handlers using the given arguments.
Definition: qofevent.cpp:231

◆ xaccAccountIsAPARType()

gboolean xaccAccountIsAPARType ( GNCAccountType  t)

Convenience function to check if the account is a valid business account type (meaning an Accounts Payable/Accounts Receivable).

Definition at line 4694 of file Account.cpp.

4695 {
4696  switch (t)
4697  {
4698  case ACCT_TYPE_RECEIVABLE:
4699  case ACCT_TYPE_PAYABLE:
4700  return TRUE;
4701  default:
4702  return FALSE;
4703  }
4704 }
A/P account type.
Definition: Account.h:154
A/R account type.
Definition: Account.h:152

◆ xaccAccountIsAssetLiabType()

gboolean xaccAccountIsAssetLiabType ( GNCAccountType  t)

Convenience function to check if the account is a valid Asset or Liability type, but not a business account type (meaning not an Accounts Payable/Accounts Receivable).

Definition at line 4648 of file Account.cpp.

4649 {
4650  switch (t)
4651  {
4652  case ACCT_TYPE_RECEIVABLE:
4653  case ACCT_TYPE_PAYABLE:
4654  return FALSE;
4655  default:
4658  }
4659 }
gboolean xaccAccountTypesCompatible(GNCAccountType parent_type, GNCAccountType child_type)
Return TRUE if accounts of type parent_type can have accounts of type child_type as children...
Definition: Account.cpp:4621
A/P account type.
Definition: Account.h:154
asset (and liability) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:119
liability (and asset) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:122
A/R account type.
Definition: Account.h:152

◆ xaccAccountIsEquityType()

gboolean xaccAccountIsEquityType ( GNCAccountType  t)

Convenience function to check if the account is a valid Equity type.

Definition at line 4706 of file Account.cpp.

4707 {
4708  switch (t)
4709  {
4710  case ACCT_TYPE_EQUITY:
4711  return TRUE;
4712  default:
4713  return FALSE;
4714  }
4715 }
Equity account is used to balance the balance sheet.
Definition: Account.h:149

◆ xaccAccountIsHidden()

gboolean xaccAccountIsHidden ( const Account acc)

Should this account be "hidden".

If this flag is set for this account (or any parent account) then the account should be hidden from the user unless they explicitly ask to see it. This function is different from the xaccAccountGetHidden() function because it checks the flag in parent accounts in addition to this account.

Parameters
accThe account whose flag should be retrieved.
Returns
Whether or not this account should be "hidden".

Definition at line 4369 of file Account.cpp.

4370 {
4371  AccountPrivate *priv;
4372 
4373  g_return_val_if_fail(GNC_IS_ACCOUNT(acc), FALSE);
4374 
4375  if (xaccAccountGetHidden(acc))
4376  return TRUE;
4377  priv = GET_PRIVATE(acc);
4378  while ((acc = priv->parent) != NULL)
4379  {
4380  priv = GET_PRIVATE(acc);
4381  if (xaccAccountGetHidden(acc))
4382  return TRUE;
4383  }
4384  return FALSE;
4385 }
gboolean xaccAccountGetHidden(const Account *acc)
Get the "hidden" flag for an account.
Definition: Account.cpp:4357

◆ xaccAccountMoveAllSplits()

void xaccAccountMoveAllSplits ( Account accfrom,
Account accto 
)

The xaccAccountMoveAllSplits() routine reassigns each of the splits in accfrom to accto.

Definition at line 2209 of file Account.cpp.

2210 {
2211  AccountPrivate *from_priv;
2212 
2213  /* errors */
2214  g_return_if_fail(GNC_IS_ACCOUNT(accfrom));
2215  g_return_if_fail(GNC_IS_ACCOUNT(accto));
2216 
2217  /* optimizations */
2218  from_priv = GET_PRIVATE(accfrom);
2219  if (!from_priv->splits || accfrom == accto)
2220  return;
2221 
2222  /* check for book mix-up */
2223  g_return_if_fail (qof_instance_books_equal(accfrom, accto));
2224  ENTER ("(accfrom=%p, accto=%p)", accfrom, accto);
2225 
2226  xaccAccountBeginEdit(accfrom);
2227  xaccAccountBeginEdit(accto);
2228  /* Begin editing both accounts and all transactions in accfrom. */
2229  g_list_foreach(from_priv->splits, (GFunc)xaccPreSplitMove, NULL);
2230 
2231  /* Concatenate accfrom's lists of splits and lots to accto's lists. */
2232  //to_priv->splits = g_list_concat(to_priv->splits, from_priv->splits);
2233  //to_priv->lots = g_list_concat(to_priv->lots, from_priv->lots);
2234 
2235  /* Set appropriate flags. */
2236  //from_priv->balance_dirty = TRUE;
2237  //from_priv->sort_dirty = FALSE;
2238  //to_priv->balance_dirty = TRUE;
2239  //to_priv->sort_dirty = TRUE;
2240 
2241  /*
2242  * Change each split's account back pointer to accto.
2243  * Convert each split's amount to accto's commodity.
2244  * Commit to editing each transaction.
2245  */
2246  g_list_foreach(from_priv->splits, (GFunc)xaccPostSplitMove, (gpointer)accto);
2247 
2248  /* Finally empty accfrom. */
2249  g_assert(from_priv->splits == NULL);
2250  g_assert(from_priv->lots == NULL);
2251  xaccAccountCommitEdit(accfrom);
2252  xaccAccountCommitEdit(accto);
2253 
2254  LEAVE ("(accfrom=%p, accto=%p)", accfrom, accto);
2255 }
#define ENTER(format, args...)
Print a function entry debugging message.
Definition: qoflog.h:272
gboolean qof_instance_books_equal(gconstpointer ptr1, gconstpointer ptr2)
See if two QofInstances share the same book.
void xaccAccountBeginEdit(Account *acc)
The xaccAccountBeginEdit() subroutine is the first phase of a two-phase-commit wrapper for account up...
Definition: Account.cpp:1455
#define LEAVE(format, args...)
Print a function exit debugging message.
Definition: qoflog.h:282
void xaccAccountCommitEdit(Account *acc)
ThexaccAccountCommitEdit() subroutine is the second phase of a two-phase-commit wrapper for account u...
Definition: Account.cpp:1496

◆ xaccAccountSetAppendText()

void xaccAccountSetAppendText ( Account account,
gboolean  val 
)

Set the "import-append-text" flag for an account.

This is the saved state of the Append checkbox in the "Generic import transaction matcher" used to set the initial state of the Append checkbox next time this account is imported.

Parameters
accountThe account whose flag should be retrieved.
valThe new state for the account's "import-append-text" flag.

Definition at line 4286 of file Account.cpp.

4287 {
4288  set_boolean_key(acc, {"import-append-text"}, val);
4289 }

◆ xaccAccountSetAutoInterest()

void xaccAccountSetAutoInterest ( Account acc,
gboolean  val 
)

Set the "auto interest" flag for an account.

If this flag is set then the account (and any children) will trigger an interest transfer after reconciling.

Parameters
accThe account whose flag should be retrieved.
valThe new state for the account's "auto interest" flag.

Definition at line 4348 of file Account.cpp.

4349 {
4350  set_boolean_key (acc, {KEY_RECONCILE_INFO, "auto-interest-transfer"}, val);
4351 }

◆ xaccAccountSetHidden()

void xaccAccountSetHidden ( Account acc,
gboolean  val 
)

Set the "hidden" flag for an account.

If this flag is set then the account (and any children) will be hidden from the user unless they explicitly ask to see them.

Parameters
accThe account whose flag should be retrieved.
valThe new state for the account's "hidden" flag.

Definition at line 4363 of file Account.cpp.

4364 {
4365  set_boolean_key (acc, {"hidden"}, val);
4366 }

◆ xaccAccountSetIsOpeningBalance()

void xaccAccountSetIsOpeningBalance ( Account account,
gboolean  val 
)

Set the "opening-balance" flag for an account.

If this flag is set then the account is used for opening balance transactions.

Parameters
accountThe account whose flag should be set.
valThe new state for the account's "opening-balance" flag.

Definition at line 4308 of file Account.cpp.

4309 {
4310  if (GET_PRIVATE(acc)->type != ACCT_TYPE_EQUITY)
4311  return;
4312  auto priv = GET_PRIVATE (acc);
4313  priv->equity_type = val ? TriState::True : TriState::False;
4314  set_kvp_string_tag(acc, "equity-type", val ? "opening-balance" : nullptr);
4315 }
Equity account is used to balance the balance sheet.
Definition: Account.h:149

◆ xaccAccountSetMark()

void xaccAccountSetMark ( Account account,
short  mark 
)

Set a mark on the account.

The meaning of this mark is completely undefined. Its presented here as a utility for the programmer, to use as desired. Handy for performing customer traversals over the account tree. The mark is not stored in the database/file format. When accounts are newly created, the mark is set to zero.

Definition at line 2068 of file Account.cpp.

2069 {
2070  AccountPrivate *priv;
2071 
2072  g_return_if_fail(GNC_IS_ACCOUNT(acc));
2073 
2074  priv = GET_PRIVATE(acc);
2075  priv->mark = m;
2076 }

◆ xaccAccountSetPlaceholder()

void xaccAccountSetPlaceholder ( Account account,
gboolean  val 
)

Set the "placeholder" flag for an account.

If this flag is set then the account may not be modified by the user.

Parameters
accountThe account whose flag should be retrieved.
valThe new state for the account's "placeholder" flag.

Definition at line 4274 of file Account.cpp.

4275 {
4276  set_boolean_key(acc, {"placeholder"}, val);
4277 }

◆ xaccAccountStagedTransactionTraversal()

int xaccAccountStagedTransactionTraversal ( const Account a,
unsigned int  stage,
TransactionCallback  thunk,
void *  data 
)

xaccAccountStagedTransactionTraversal() calls thunk on each transaction in account a whose current marker is less than the given stage and updates each transaction's marker to be stage.

The traversal will stop if thunk returns a non-zero value. xaccAccountStagedTransactionTraversal() function will return zero or the non-zero value returned by thunk. This API does not handle handle recursive traversals.

Warning
For performance reasons, the transaction callback thunk must never destroy any of the transaction's splits, nor assign any of them to a different account. To do so risks a crash.

Definition at line 5367 of file Account.cpp.

5371 {
5372  AccountPrivate *priv;
5373  GList *split_p;
5374  GList *next;
5375  Transaction *trans;
5376  Split *s;
5377  int retval;
5378 
5379  if (!acc) return 0;
5380 
5381  priv = GET_PRIVATE(acc);
5382  for (split_p = priv->splits; split_p; split_p = next)
5383  {
5384  /* Get the next element in the split list now, just in case some
5385  * naughty thunk destroys the one we're using. This reduces, but
5386  * does not eliminate, the possibility of undefined results if
5387  * a thunk removes splits from this account. */
5388  next = g_list_next(split_p);
5389 
5390  s = static_cast <Split*> (split_p->data);
5391  trans = s->parent;
5392  if (trans && (trans->marker < stage))
5393  {
5394  trans->marker = stage;
5395  if (thunk)
5396  {
5397  retval = thunk(trans, cb_data);
5398  if (retval) return retval;
5399  }
5400  }
5401  }
5402 
5403  return 0;
5404 }

◆ xaccAccountStringToEnum()

GNCAccountType xaccAccountStringToEnum ( const char *  str)

Conversion routines for the account types to/from strings that are used in persistent storage, communications.

These strings should not be translated to the local language. Typical conversion is "INCOME" -> ACCT_TYPE_INCOME.

Definition at line 4485 of file Account.cpp.

4486 {
4487  GNCAccountType type;
4488  gboolean rc;
4489  rc = xaccAccountStringToType(str, &type);
4490  if (FALSE == rc) return ACCT_TYPE_INVALID;
4491  return type;
4492 }
gboolean xaccAccountStringToType(const char *str, GNCAccountType *type)
Conversion routines for the account types to/from strings that are used in persistent storage...
Definition: Account.cpp:4451
GNCAccountType
The account types are used to determine how the transaction data in the account is displayed...
Definition: Account.h:105
Not a type.
Definition: Account.h:107

◆ xaccAccountStringToType()

gboolean xaccAccountStringToType ( const char *  str,
GNCAccountType type 
)

Conversion routines for the account types to/from strings that are used in persistent storage, communications.

These strings should not be translated to the local language. Typical conversion is "INCOME" -> ACCT_TYPE_INCOME.

Definition at line 4451 of file Account.cpp.

4452 {
4453 
4454  GNC_RETURN_ON_MATCH(NONE);
4455  GNC_RETURN_ON_MATCH(BANK);
4456  GNC_RETURN_ON_MATCH(CASH);
4457  GNC_RETURN_ON_MATCH(CREDIT);
4458  GNC_RETURN_ON_MATCH(ASSET);
4459  GNC_RETURN_ON_MATCH(LIABILITY);
4460  GNC_RETURN_ON_MATCH(STOCK);
4461  GNC_RETURN_ON_MATCH(MUTUAL);
4462  GNC_RETURN_ON_MATCH(CURRENCY);
4463  GNC_RETURN_ON_MATCH(INCOME);
4464  GNC_RETURN_ON_MATCH(EXPENSE);
4465  GNC_RETURN_ON_MATCH(EQUITY);
4466  GNC_RETURN_ON_MATCH(RECEIVABLE);
4467  GNC_RETURN_ON_MATCH(PAYABLE);
4468  GNC_RETURN_ON_MATCH(ROOT);
4469  GNC_RETURN_ON_MATCH(TRADING);
4470  GNC_RETURN_ON_MATCH(CHECKING);
4471  GNC_RETURN_ON_MATCH(SAVINGS);
4472  GNC_RETURN_ON_MATCH(MONEYMRKT);
4473  GNC_RETURN_ON_MATCH(CREDITLINE);
4474 
4475  PERR("asked to translate unknown account type string %s.\n",
4476  str ? str : "(null)");
4477 
4478  return(FALSE);
4479 }
#define PERR(format, args...)
Log a serious error.
Definition: qoflog.h:244

◆ xaccAccountTreeForEachTransaction()

int xaccAccountTreeForEachTransaction ( Account acc,
TransactionCallback  proc,
void *  data 
)

Traverse all of the transactions in the given account group.

Continue processing IF proc returns 0. This function will descend recursively to traverse transactions in the children of the accounts in the group.

Proc will be called exactly once for each transaction that is pointed to by at least one split in any account in the hierarchy topped by the root Account acc.

The result of this function will be 0 IF every relevant transaction was traversed exactly once; otherwise, the return value is the last non-zero value returned by the callback.

Warning
For performance reasons, the transaction callback proc must never destroy any of the transaction's splits, nor assign any of them to a different account. To do so risks a crash.
The traversal occurs only over the transactions that are locally cached in the local gnucash engine. If the gnucash engine is attached to a remote database, the database may contain (many) transactions that are not mirrored in the local cache. This routine will not cause an SQL database query to be performed; it will not traverse transactions present only in the remote database.

Note that this routine is just a trivial wrapper for

gnc_account_tree_begin_staged_transaction_traversals(g); gnc_account_tree_staged_transaction_traversal(g, 42, proc, data);

◆ xaccAccountTypeEnumAsString()

const char* xaccAccountTypeEnumAsString ( GNCAccountType  type)

Conversion routines for the account types to/from strings that are used in persistent storage, communications.

These strings should not be translated to the local language. Typical conversion is ACCT_TYPE_INCOME -> "INCOME".

Definition at line 4414 of file Account.cpp.

4415 {
4416  switch (type)
4417  {
4418  GNC_RETURN_ENUM_AS_STRING(NONE);
4419  GNC_RETURN_ENUM_AS_STRING(BANK);
4420  GNC_RETURN_ENUM_AS_STRING(CASH);
4421  GNC_RETURN_ENUM_AS_STRING(CREDIT);
4422  GNC_RETURN_ENUM_AS_STRING(ASSET);
4423  GNC_RETURN_ENUM_AS_STRING(LIABILITY);
4424  GNC_RETURN_ENUM_AS_STRING(STOCK);
4425  GNC_RETURN_ENUM_AS_STRING(MUTUAL);
4426  GNC_RETURN_ENUM_AS_STRING(CURRENCY);
4427  GNC_RETURN_ENUM_AS_STRING(INCOME);
4428  GNC_RETURN_ENUM_AS_STRING(EXPENSE);
4429  GNC_RETURN_ENUM_AS_STRING(EQUITY);
4430  GNC_RETURN_ENUM_AS_STRING(RECEIVABLE);
4431  GNC_RETURN_ENUM_AS_STRING(PAYABLE);
4432  GNC_RETURN_ENUM_AS_STRING(ROOT);
4433  GNC_RETURN_ENUM_AS_STRING(TRADING);
4434  GNC_RETURN_ENUM_AS_STRING(CHECKING);
4435  GNC_RETURN_ENUM_AS_STRING(SAVINGS);
4436  GNC_RETURN_ENUM_AS_STRING(MONEYMRKT);
4437  GNC_RETURN_ENUM_AS_STRING(CREDITLINE);
4438  default:
4439  PERR ("asked to translate unknown account type %d.\n", type);
4440  break;
4441  }
4442  return(NULL);
4443 }
#define PERR(format, args...)
Log a serious error.
Definition: qoflog.h:244

◆ xaccAccountTypeGetFundamental()

GNCAccountType xaccAccountTypeGetFundamental ( GNCAccountType  t)

Convenience function to return the fundamental type asset/liability/income/expense/equity given an account type.

Definition at line 4662 of file Account.cpp.

4663 {
4664  switch (t)
4665  {
4666  case ACCT_TYPE_BANK:
4667  case ACCT_TYPE_STOCK:
4668  case ACCT_TYPE_MONEYMRKT:
4669  case ACCT_TYPE_CHECKING:
4670  case ACCT_TYPE_SAVINGS:
4671  case ACCT_TYPE_MUTUAL:
4672  case ACCT_TYPE_CURRENCY:
4673  case ACCT_TYPE_CASH:
4674  case ACCT_TYPE_ASSET:
4675  case ACCT_TYPE_RECEIVABLE:
4676  return ACCT_TYPE_ASSET;
4677  case ACCT_TYPE_CREDIT:
4678  case ACCT_TYPE_LIABILITY:
4679  case ACCT_TYPE_PAYABLE:
4680  case ACCT_TYPE_CREDITLINE:
4681  return ACCT_TYPE_LIABILITY;
4682  case ACCT_TYPE_INCOME:
4683  return ACCT_TYPE_INCOME;
4684  case ACCT_TYPE_EXPENSE:
4685  return ACCT_TYPE_EXPENSE;
4686  case ACCT_TYPE_EQUITY:
4687  return ACCT_TYPE_EQUITY;
4688  case ACCT_TYPE_TRADING:
4689  default:
4690  return ACCT_TYPE_NONE;
4691  }
4692 }
Expense accounts are used to denote expenses.
Definition: Account.h:146
Mutual Fund accounts will typically be shown in registers which show three columns: price...
Definition: Account.h:128
The cash account type is used to denote a shoe-box or pillowcase stuffed with * cash.
Definition: Account.h:113
Account used to record multiple commodity transactions.
Definition: Account.h:158
Stock accounts will typically be shown in registers which show three columns: price, number of shares, and value.
Definition: Account.h:125
bank account type – don&#39;t use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:168
Income accounts are used to denote income.
Definition: Account.h:143
line of credit – don&#39;t use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:174
The bank account type denotes a savings or checking account held at a bank.
Definition: Account.h:110
A/P account type.
Definition: Account.h:154
bank account type – don&#39;t use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:170
asset (and liability) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:119
The currency account type indicates that the account is a currency trading account.
Definition: Account.h:132
liability (and asset) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:122
A/R account type.
Definition: Account.h:152
bank account type – don&#39;t use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:172
Equity account is used to balance the balance sheet.
Definition: Account.h:149
Not a type.
Definition: Account.h:108
The Credit card account is used to denote credit (e.g.
Definition: Account.h:116

◆ xaccAccountTypesCompatible()

gboolean xaccAccountTypesCompatible ( GNCAccountType  parent_type,
GNCAccountType  child_type 
)

Return TRUE if accounts of type parent_type can have accounts of type child_type as children.

Definition at line 4621 of file Account.cpp.

4623 {
4624  /* ACCT_TYPE_NONE isn't compatible with anything, even ACCT_TYPE_NONE. */
4625  if (parent_type == ACCT_TYPE_NONE || child_type == ACCT_TYPE_NONE)
4626  return FALSE;
4627 
4628  /* ACCT_TYPE_ROOT can't have a parent account, and asking will raise
4629  * an error. */
4630  if (child_type == ACCT_TYPE_ROOT)
4631  return FALSE;
4632 
4633  return ((xaccParentAccountTypesCompatibleWith (child_type) &
4634  (1 << parent_type))
4635  != 0);
4636 }
guint32 xaccParentAccountTypesCompatibleWith(GNCAccountType type)
Return the bitmask of parent account types compatible with a given type.
Definition: Account.cpp:4574
Not a type.
Definition: Account.h:108
The hidden root account of an account tree.
Definition: Account.h:156

◆ xaccAccountTypesCompatibleWith()

guint32 xaccAccountTypesCompatibleWith ( GNCAccountType  type)

Return the bitmask of account types compatible with a given type.

That is, you could switch to any of the account types in the compatible list without unwanted side-effects.

Definition at line 4534 of file Account.cpp.

4535 {
4536  switch (type)
4537  {
4538  case ACCT_TYPE_BANK:
4539  case ACCT_TYPE_CASH:
4540  case ACCT_TYPE_ASSET:
4541  case ACCT_TYPE_CREDIT:
4542  case ACCT_TYPE_LIABILITY:
4543  case ACCT_TYPE_INCOME:
4544  case ACCT_TYPE_EXPENSE:
4545  case ACCT_TYPE_EQUITY:
4546  return
4547  (1 << ACCT_TYPE_BANK) |
4548  (1 << ACCT_TYPE_CASH) |
4549  (1 << ACCT_TYPE_ASSET) |
4550  (1 << ACCT_TYPE_CREDIT) |
4551  (1 << ACCT_TYPE_LIABILITY) |
4552  (1 << ACCT_TYPE_INCOME) |
4553  (1 << ACCT_TYPE_EXPENSE) |
4554  (1 << ACCT_TYPE_EQUITY);
4555  case ACCT_TYPE_STOCK:
4556  case ACCT_TYPE_MUTUAL:
4557  case ACCT_TYPE_CURRENCY:
4558  return
4559  (1 << ACCT_TYPE_STOCK) |
4560  (1 << ACCT_TYPE_MUTUAL) |
4561  (1 << ACCT_TYPE_CURRENCY);
4562  case ACCT_TYPE_RECEIVABLE:
4563  return (1 << ACCT_TYPE_RECEIVABLE);
4564  case ACCT_TYPE_PAYABLE:
4565  return (1 << ACCT_TYPE_PAYABLE);
4566  case ACCT_TYPE_TRADING:
4567  return (1 << ACCT_TYPE_TRADING);
4568  default:
4569  PERR("bad account type: %d", type);
4570  return 0;
4571  }
4572 }
Expense accounts are used to denote expenses.
Definition: Account.h:146
Mutual Fund accounts will typically be shown in registers which show three columns: price...
Definition: Account.h:128
#define PERR(format, args...)
Log a serious error.
Definition: qoflog.h:244
The cash account type is used to denote a shoe-box or pillowcase stuffed with * cash.
Definition: Account.h:113
Account used to record multiple commodity transactions.
Definition: Account.h:158
Stock accounts will typically be shown in registers which show three columns: price, number of shares, and value.
Definition: Account.h:125
Income accounts are used to denote income.
Definition: Account.h:143
The bank account type denotes a savings or checking account held at a bank.
Definition: Account.h:110
A/P account type.
Definition: Account.h:154
asset (and liability) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:119
The currency account type indicates that the account is a currency trading account.
Definition: Account.h:132
liability (and asset) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:122
A/R account type.
Definition: Account.h:152
Equity account is used to balance the balance sheet.
Definition: Account.h:149
The Credit card account is used to denote credit (e.g.
Definition: Account.h:116

◆ xaccAccountTypesValid()

guint32 xaccAccountTypesValid ( void  )

Returns the bitmask of the account type enums that are valid.

Deprecated and root account types are stripped.

Definition at line 4639 of file Account.cpp.

4640 {
4641  guint32 mask = (1 << NUM_ACCOUNT_TYPES) - 1;
4642  mask &= ~((1 << ACCT_TYPE_CURRENCY) | /* DEPRECATED */
4643  (1 << ACCT_TYPE_ROOT)); /* ROOT */
4644 
4645  return mask;
4646 }
stop here; the following types just aren&#39;t ready for prime time
Definition: Account.h:164
The currency account type indicates that the account is a currency trading account.
Definition: Account.h:132
The hidden root account of an account tree.
Definition: Account.h:156

◆ xaccClearMark()

void xaccClearMark ( Account account,
short  val 
)

Get the mark set by xaccAccountSetMark short xaccAccountGetMark (const Account *account);.

The xaccClearMark will find the root account, and clear the mark in the entire account tree.

Definition at line 2079 of file Account.cpp.

2080 {
2081  Account *root;
2082 
2083  g_return_if_fail(GNC_IS_ACCOUNT(acc));
2084 
2085  root = gnc_account_get_root(acc);
2086  xaccClearMarkDown(root ? root : acc, val);
2087 }
void xaccClearMarkDown(Account *acc, short val)
The xaccClearMarkDown will clear the mark only in this and in sub-accounts.
Definition: Account.cpp:2090
Account * gnc_account_get_root(Account *acc)
This routine returns the root account of the account tree that the specified account belongs to...
Definition: Account.cpp:2912

◆ xaccClearMarkDown()

void xaccClearMarkDown ( Account account,
short  val 
)

The xaccClearMarkDown will clear the mark only in this and in sub-accounts.

Definition at line 2090 of file Account.cpp.

2091 {
2092  AccountPrivate *priv;
2093  GList *node;
2094 
2095  g_return_if_fail(GNC_IS_ACCOUNT(acc));
2096 
2097  priv = GET_PRIVATE(acc);
2098  priv->mark = val;
2099  for (node = priv->children; node; node = node->next)
2100  {
2101  xaccClearMarkDown(static_cast<Account*>(node->data), val);
2102  }
2103 }
void xaccClearMarkDown(Account *acc, short val)
The xaccClearMarkDown will clear the mark only in this and in sub-accounts.
Definition: Account.cpp:2090

◆ xaccParentAccountTypesCompatibleWith()

guint32 xaccParentAccountTypesCompatibleWith ( GNCAccountType  type)

Return the bitmask of parent account types compatible with a given type.

Definition at line 4574 of file Account.cpp.

4575 {
4576  switch (type)
4577  {
4578  case ACCT_TYPE_BANK:
4579  case ACCT_TYPE_CASH:
4580  case ACCT_TYPE_ASSET:
4581  case ACCT_TYPE_STOCK:
4582  case ACCT_TYPE_MUTUAL:
4583  case ACCT_TYPE_CURRENCY:
4584  case ACCT_TYPE_CREDIT:
4585  case ACCT_TYPE_LIABILITY:
4586  case ACCT_TYPE_RECEIVABLE:
4587  case ACCT_TYPE_PAYABLE:
4588  return
4589  (1 << ACCT_TYPE_BANK) |
4590  (1 << ACCT_TYPE_CASH) |
4591  (1 << ACCT_TYPE_ASSET) |
4592  (1 << ACCT_TYPE_STOCK) |
4593  (1 << ACCT_TYPE_MUTUAL) |
4594  (1 << ACCT_TYPE_CURRENCY) |
4595  (1 << ACCT_TYPE_CREDIT) |
4596  (1 << ACCT_TYPE_LIABILITY) |
4597  (1 << ACCT_TYPE_RECEIVABLE) |
4598  (1 << ACCT_TYPE_PAYABLE) |
4599  (1 << ACCT_TYPE_ROOT);
4600  case ACCT_TYPE_INCOME:
4601  case ACCT_TYPE_EXPENSE:
4602  return
4603  (1 << ACCT_TYPE_INCOME) |
4604  (1 << ACCT_TYPE_EXPENSE) |
4605  (1 << ACCT_TYPE_ROOT);
4606  case ACCT_TYPE_EQUITY:
4607  return
4608  (1 << ACCT_TYPE_EQUITY) |
4609  (1 << ACCT_TYPE_ROOT);
4610  case ACCT_TYPE_TRADING:
4611  return
4612  (1 << ACCT_TYPE_TRADING) |
4613  (1 << ACCT_TYPE_ROOT);
4614  default:
4615  PERR("bad account type: %d", type);
4616  return 0;
4617  }
4618 }
Expense accounts are used to denote expenses.
Definition: Account.h:146
Mutual Fund accounts will typically be shown in registers which show three columns: price...
Definition: Account.h:128
#define PERR(format, args...)
Log a serious error.
Definition: qoflog.h:244
The cash account type is used to denote a shoe-box or pillowcase stuffed with * cash.
Definition: Account.h:113
Account used to record multiple commodity transactions.
Definition: Account.h:158
Stock accounts will typically be shown in registers which show three columns: price, number of shares, and value.
Definition: Account.h:125
Income accounts are used to denote income.
Definition: Account.h:143
The bank account type denotes a savings or checking account held at a bank.
Definition: Account.h:110
A/P account type.
Definition: Account.h:154
asset (and liability) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:119
The currency account type indicates that the account is a currency trading account.
Definition: Account.h:132
liability (and asset) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:122
A/R account type.
Definition: Account.h:152
Equity account is used to balance the balance sheet.
Definition: Account.h:149
The hidden root account of an account tree.
Definition: Account.h:156
The Credit card account is used to denote credit (e.g.
Definition: Account.h:116

◆ xaccTransactionTraverse()

gboolean xaccTransactionTraverse ( Transaction *  trans,
int  stage 
)

xaccTransactionTraverse() checks the stage of the given transaction.

If the transaction hasn't reached the given stage, the transaction is updated to that stage and the function returns TRUE. Otherwise no change is made and the function returns FALSE.

Definition at line 5330 of file Account.cpp.

5331 {
5332  if (trans == NULL) return FALSE;
5333 
5334  if (trans->marker < stage)
5335  {
5336  trans->marker = stage;
5337  return TRUE;
5338  }
5339 
5340  return FALSE;
5341 }