GnuCash  4.8a-176-g88ecf8dd1
Account.h
Go to the documentation of this file.
1 /********************************************************************\
2  * This program is free software; you can redistribute it and/or *
3  * modify it under the terms of the GNU General Public License as *
4  * published by the Free Software Foundation; either version 2 of *
5  * the License, or (at your option) any later version. *
6  * *
7  * This program is distributed in the hope that it will be useful, *
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
10  * GNU General Public License for more details. *
11  * *
12  * You should have received a copy of the GNU General Public License*
13  * along with this program; if not, contact: *
14  * *
15  * Free Software Foundation Voice: +1-617-542-5942 *
16  * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
17  * Boston, MA 02110-1301, USA gnu@gnu.org *
18  * *
19 \********************************************************************/
45 #ifndef XACC_ACCOUNT_H
46 #define XACC_ACCOUNT_H
47 #include "qof.h"
48 #include "gnc-engine.h"
49 #include "policy.h"
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 typedef gnc_numeric (*xaccGetBalanceFn)( const Account *account );
55 
56 typedef gnc_numeric (*xaccGetBalanceInCurrencyFn) (
57  const Account *account, const gnc_commodity *report_commodity,
58  gboolean include_children);
59 
60 typedef gnc_numeric (*xaccGetBalanceAsOfDateFn) (
61  Account *account, time64 date);
62 
63 typedef void (*AccountCb)(Account *a, gpointer data);
64 typedef gpointer (*AccountCb2)(Account *a, gpointer data);
65 
66 typedef struct
67 {
68  QofInstanceClass parent_class;
69 } AccountClass;
70 
71 typedef struct
72 {
73  Account *acc;
74  QofBook *book;
76 
77 /* --- type macros --- */
78 #define GNC_TYPE_ACCOUNT (gnc_account_get_type ())
79 #define GNC_ACCOUNT(o) \
80  (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_ACCOUNT, Account))
81 #define GNC_ACCOUNT_CLASS(k) \
82  (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_ACCOUNT, AccountClass))
83 #define GNC_IS_ACCOUNT(o) \
84  (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_ACCOUNT))
85 #define GNC_IS_ACCOUNT_CLASS(k) \
86  (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_ACCOUNT))
87 #define GNC_ACCOUNT_GET_CLASS(o) \
88  (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_ACCOUNT, AccountClass))
89 
93 GType gnc_account_get_type(void);
94 
105 typedef enum
106 {
167  /* bank account types */
176  ACCT_TYPE_LAST
178 
179 
180 
185 Account * xaccMallocAccount (QofBook *book);
186 
188 Account * gnc_account_create_root (QofBook *book);
189 
198 Account * xaccCloneAccount (const Account *source, QofBook *book);
199 
202 void xaccAccountBeginEdit (Account *account);
203 
206 void xaccAccountCommitEdit (Account *account);
207 
211 void xaccAccountDestroy (Account *account);
212 
214 gboolean xaccAccountEqual(const Account *a, const Account* b,
215  gboolean check_guids);
216 
226 int xaccAccountOrder (const Account *account_1, const Account *account_2);
227 
230 /* ------------------ */
231 
239 const gchar *gnc_get_account_separator_string (void);
240 gunichar gnc_get_account_separator (void);
241 void gnc_set_account_separator (const gchar *separator);
242 
243 /*@ dependent @*/
244 Account *gnc_book_get_root_account(QofBook *book);
245 void gnc_book_set_root_account(QofBook *book, Account *root);
246 
248 #define xaccAccountGetGUID(X) qof_entity_get_guid(QOF_INSTANCE(X))
249 #define xaccAccountReturnGUID(X) (X ? *(qof_entity_get_guid(QOF_INSTANCE(X))) : *(guid_null()))
250 
254 /*@ dependent @*/ Account * xaccAccountLookup (const GncGUID *guid, QofBook *book);
255 #define xaccAccountLookupDirect(g,b) xaccAccountLookup(&(g),b)
256 
259 /* Tests account and descendants -- if all have no splits then return TRUE.
260  * Otherwise if any account or its descendants have split return FALSE.
261  */
262 
263 gboolean gnc_account_and_descendants_empty (Account *acc);
264 
277 gchar *gnc_account_name_violations_errmsg (const gchar *separator, GList* invalid_account_names);
278 
289 GList *gnc_account_list_name_violations (QofBook *book, const gchar *separator);
290 
291 /* ------------------ */
292 
296 QofBook *gnc_account_get_book(const Account *account);
298 void xaccAccountSetType (Account *account, GNCAccountType);
300 void xaccAccountSetName (Account *account, const char *name);
302 void xaccAccountSetCode (Account *account, const char *code);
304 void xaccAccountSetDescription (Account *account, const char *desc);
306 void xaccAccountSetColor (Account *account, const char *color);
308 void xaccAccountSetFilter (Account *account, const char *filter);
310 void xaccAccountSetSortOrder (Account *account, const char *sortorder);
312 void xaccAccountSetSortReversed (Account *account, gboolean sortreversed);
314 void xaccAccountSetNotes (Account *account, const char *notes);
316 void xaccAccountSetLastNum (Account *account, const char *num);
318 void gnc_account_set_policy (Account *account, GNCPolicy *policy);
323 GNCAccountType xaccAccountGetType (const Account *account);
326 gboolean xaccAccountIsPriced(const Account *acc);
327 
336  const gnc_numeric start_baln);
337 
346  const gnc_numeric start_baln);
347 
356  const gnc_numeric start_baln);
357 
363 
369 
379 void gnc_account_set_defer_bal_computation (Account *acc, gboolean defer);
380 
390 gboolean gnc_account_insert_split (Account *acc, Split *s);
391 
401 gboolean gnc_account_remove_split (Account *acc, Split *s);
402 
404 const char * xaccAccountGetName (const Account *account);
406 const char * xaccAccountGetCode (const Account *account);
408 const char * xaccAccountGetDescription (const Account *account);
410 const char * xaccAccountGetColor (const Account *account);
412 const char * xaccAccountGetFilter (const Account *account);
414 const char * xaccAccountGetSortOrder (const Account *account);
416 gboolean xaccAccountGetSortReversed (const Account *account);
418 const char * xaccAccountGetNotes (const Account *account);
420 const char * xaccAccountGetLastNum (const Account *account);
422 GNCPolicy *gnc_account_get_policy (Account *account);
425 
430 
435 void xaccAccountSortSplits (Account *acc, gboolean force);
436 
450 gchar * gnc_account_get_full_name (const Account *account);
451 
462 Account * xaccAccountGainsAccount (Account *acc, gnc_commodity *curr);
469 void dxaccAccountSetPriceSrc (Account *account, const char *src);
476 const char * dxaccAccountGetPriceSrc (const Account *account);
511 void xaccAccountSetCommodity (Account *account, gnc_commodity *comm);
512 
514 /*@ dependent @*/
515 gnc_commodity * xaccAccountGetCommodity (const Account *account);
516 
523 gnc_commodity * gnc_account_get_currency_or_parent(const Account* account);
524 
529 int xaccAccountGetCommoditySCU (const Account *account);
530 
533 int xaccAccountGetCommoditySCUi (const Account *account);
534 
539 void xaccAccountSetCommoditySCU (Account *account, int frac);
540 
542 void xaccAccountSetNonStdSCU (Account *account, gboolean flag);
543 
546 gboolean xaccAccountGetNonStdSCU (const Account *account);
555 gnc_numeric xaccAccountGetBalance (const Account *account);
558 gnc_numeric xaccAccountGetClearedBalance (const Account *account);
561 gnc_numeric xaccAccountGetReconciledBalance (const Account *account);
562 gnc_numeric xaccAccountGetPresentBalance (const Account *account);
563 gnc_numeric xaccAccountGetProjectedMinimumBalance (const Account *account);
565 gnc_numeric xaccAccountGetBalanceAsOfDate (Account *account,
566  time64 date);
567 
569 gnc_numeric xaccAccountGetReconciledBalanceAsOfDate (Account *account, time64 date);
570 
571 /* These two functions convert a given balance from one commodity to
572  another. The account argument is only used to get the Book, and
573  may have nothing to do with the supplied balance. Likewise, the
574  date argument is only used for commodity conversion and may have
575  nothing to do with supplied balance.
576 
577  Since they really have nothing to do with Accounts, there's
578  probably some better place for them, but where? gnc-commodity.h?
579 */
580 gnc_numeric xaccAccountConvertBalanceToCurrency(
581  const Account *account, /* for book */
582  gnc_numeric balance,
583  const gnc_commodity *balance_currency,
584  const gnc_commodity *new_currency);
585 gnc_numeric xaccAccountConvertBalanceToCurrencyAsOfDate(
586  const Account *account, /* for book */
587  gnc_numeric balance, const gnc_commodity *balance_currency,
588  const gnc_commodity *new_currency, time64 date);
589 
590 /* These functions get some type of balance in the desired commodity.
591  'report_commodity' may be NULL to use the account's commodity. */
592 gnc_numeric xaccAccountGetBalanceInCurrency (
593  const Account *account, const gnc_commodity *report_commodity,
594  gboolean include_children);
595 gnc_numeric xaccAccountGetClearedBalanceInCurrency (
596  const Account *account, const gnc_commodity *report_commodity,
597  gboolean include_children);
598 gnc_numeric xaccAccountGetReconciledBalanceInCurrency (
599  const Account *account, const gnc_commodity *report_commodity,
600  gboolean include_children);
601 gnc_numeric xaccAccountGetPresentBalanceInCurrency (
602  const Account *account, const gnc_commodity *report_commodity,
603  gboolean include_children);
604 gnc_numeric xaccAccountGetProjectedMinimumBalanceInCurrency (
605  const Account *account, const gnc_commodity *report_commodity,
606  gboolean include_children);
607 
611  Account *acc, time64 date, gnc_commodity *report_commodity,
612  gboolean include_children);
616  Account *account, time64 date, gnc_commodity *report_commodity,
617  gboolean include_children);
618 
619 gnc_numeric xaccAccountGetNoclosingBalanceChangeForPeriod (
620  Account *acc, time64 date1, time64 date2, gboolean recurse);
621 gnc_numeric xaccAccountGetBalanceChangeForPeriod (
622  Account *acc, time64 date1, time64 date2, gboolean recurse);
623 
654 void gnc_account_append_child (Account *new_parent, Account *child);
655 
666 void gnc_account_remove_child (Account *parent, Account *child);
667 
676 /*@ dependent @*/
677 Account * gnc_account_get_parent (const Account *account);
678 
689 
696 gboolean gnc_account_is_root (const Account *account);
697 
712 GList *gnc_account_get_children (const Account *account);
713 
717 GList *gnc_account_get_children_sorted (const Account *account);
718 
725 gint gnc_account_n_children (const Account *account);
726 
738 gint gnc_account_child_index (const Account *parent, const Account *child);
739 
750 Account *gnc_account_nth_child (const Account *parent, gint num);
751 
767 GList * gnc_account_get_descendants (const Account *account);
768 
787 GList *gnc_account_get_descendants_sorted (const Account *account);
788 
795 gint gnc_account_n_descendants (const Account *account);
796 
803 gint gnc_account_get_current_depth (const Account *account);
804 
812 gint gnc_account_get_tree_depth (const Account *account);
813 
830 void gnc_account_foreach_child (const Account *account,
831  AccountCb func, /*@ null @*/ gpointer user_data);
832 
846 void gnc_account_foreach_descendant (const Account *account,
847  AccountCb func, /*@ null @*/ gpointer user_data);
848 
864 gpointer gnc_account_foreach_descendant_until (const Account *account,
865  AccountCb2 func, /*@ null @*/ gpointer user_data);
866 
867 
880 void gnc_account_join_children (Account *to_parent, Account *from_parent);
881 
887 void gnc_account_merge_children (Account *parent);
888 
892 void xaccAccountSetReconcileChildrenStatus(Account *account, gboolean status);
893 
895 gboolean xaccAccountGetReconcileChildrenStatus(const Account *account);
896 
902 gboolean xaccAccountHasAncestor(const Account *acc, const Account *ancestor);
903 
918 Account *gnc_account_lookup_by_name (const Account *parent, const char *name);
919 
924 Account *gnc_account_lookup_by_full_name (const Account *any_account,
925  const gchar *name);
926 
931  const char *code);
932 
939 Account *gnc_account_lookup_by_opening_balance (Account *account, gnc_commodity *commodity);
940 
956  const char* name,
957  GNCAccountType acctype,
958  gnc_commodity* commodity);
961 /* ------------------ */
962 
971 const char * xaccAccountTypeEnumAsString (GNCAccountType type);
977 gboolean xaccAccountStringToType (const char* str, GNCAccountType *type);
983 GNCAccountType xaccAccountStringToEnum (const char* str);
984 
988 const char * xaccAccountGetTypeStr (GNCAccountType type);
989 
994 
997 
1000 gboolean xaccAccountTypesCompatible (GNCAccountType parent_type,
1001  GNCAccountType child_type);
1002 
1005 guint32 xaccAccountTypesValid(void);
1006 
1011 
1015 
1016 
1021 
1025 
1026 
1029 /* ------------------ */
1030 
1038 #define xaccAccountInsertSplit(acc, s) xaccSplitSetAccount((s), (acc))
1039 
1051 SplitList* xaccAccountGetSplitList (const Account *account);
1052 
1055 void xaccAccountMoveAllSplits (Account *accfrom, Account *accto);
1056 
1085 gint xaccAccountForEachTransaction(const Account *account,
1086  TransactionCallback proc,
1087  void *data);
1088 
1090 Transaction * xaccAccountFindTransByDesc(const Account *account,
1091  const char *description);
1092 
1094 Split * xaccAccountFindSplitByDesc(const Account *account,
1095  const char *description);
1096 
1099 /* ------------------ */
1100 
1109 void xaccAccountInsertLot (Account *, GNCLot *);
1110 void xaccAccountRemoveLot (Account *, GNCLot *);
1111 
1120 LotList* xaccAccountGetLotList (const Account *account);
1121 
1128 gpointer xaccAccountForEachLot(
1129  const Account *acc,
1130  gpointer (*proc)(GNCLot *lot, gpointer user_data), /*@ null @*/ gpointer user_data);
1131 
1132 
1139  gboolean (*match_func)(GNCLot *lot,
1140  gpointer user_data),
1141  /*@ null @*/ gpointer user_data, GCompareFunc sort_func);
1142 
1144 /* ------------------ */
1145 
1150 gboolean xaccAccountGetReconcileLastDate (const Account *account,
1151  time64 *last_date);
1153 void xaccAccountSetReconcileLastDate (Account *account, time64 last_date);
1154 
1156 gboolean xaccAccountGetReconcileLastInterval (const Account *account,
1157  int *months, int *days);
1160  int months, int days);
1162 gboolean xaccAccountGetReconcilePostponeDate (const Account *account,
1163  time64 *postpone_date);
1166  time64 postpone_date);
1167 
1169 gboolean xaccAccountGetReconcilePostponeBalance (const Account *account,
1170  gnc_numeric *balance);
1173  gnc_numeric balance);
1174 
1181 typedef enum
1182 {
1183  PLACEHOLDER_NONE,
1184  PLACEHOLDER_THIS,
1185  PLACEHOLDER_CHILD,
1187 
1198 gboolean xaccAccountGetPlaceholder (const Account *account);
1199 
1206 void xaccAccountSetPlaceholder (Account *account, gboolean val);
1207 
1214 gboolean xaccAccountGetIsOpeningBalance (const Account *account);
1215 
1222 void xaccAccountSetIsOpeningBalance (Account *account, gboolean val);
1223 
1243 gboolean xaccAccountGetHidden (const Account *acc);
1244 
1252 void xaccAccountSetHidden (Account *acc, gboolean val);
1253 
1263 gboolean xaccAccountIsHidden (const Account *acc);
1276 gboolean xaccAccountGetAutoInterest (const Account *acc);
1277 
1284 void xaccAccountSetAutoInterest (Account *acc, gboolean val);
1285 
1294 gboolean xaccAccountGetTaxRelated (const Account *account);
1296 void xaccAccountSetTaxRelated (Account *account, gboolean tax_related);
1298 const char * xaccAccountGetTaxUSCode (const Account *account);
1300 void xaccAccountSetTaxUSCode (Account *account, const char *code);
1302 const char * xaccAccountGetTaxUSPayerNameSource (const Account *account);
1304 void xaccAccountSetTaxUSPayerNameSource (Account *account, const char *source);
1306 gint64 xaccAccountGetTaxUSCopyNumber (const Account *account);
1308 void xaccAccountSetTaxUSCopyNumber (Account *account, gint64 copy_number);
1316 const char *gnc_account_get_debit_string (GNCAccountType acct_type);
1318 const char *gnc_account_get_credit_string (GNCAccountType acct_type);
1319 
1332 void xaccAccountSetMark (Account *account, short mark);
1333 
1339 void xaccClearMark (Account *account, short val);
1340 
1343 void xaccClearMarkDown (Account *account, short val);
1391 
1397 
1403 
1409 gboolean xaccTransactionTraverse(Transaction *trans, int stage);
1410 
1425  unsigned int stage,
1426  TransactionCallback thunk,
1427  void *data);
1428 
1443  unsigned int stage,
1444  TransactionCallback thunk,
1445  void *data);
1446 
1479  TransactionCallback proc, void *data);
1480 
1484 
1485 /* Look up an Account in the map non-Baysian
1486  */
1487 Account* gnc_account_imap_find_account (GncImportMatchMap *imap, const char* category,
1488  const char *key);
1489 
1490 /* Store an Account in the map non Baysian
1491  */
1492 void gnc_account_imap_add_account (GncImportMatchMap *imap, const char *category,
1493  const char *key, Account *acc);
1494 
1495 /* Remove a reference to an Account in the map non Baysian
1496  */
1497 void gnc_account_imap_delete_account (GncImportMatchMap *imap, const char *category,
1498  const char *key);
1499 
1503 
1506 void gnc_account_imap_add_account_bayes (GncImportMatchMap *imap, GList* tokens,
1507  Account *acc);
1508 
1509 typedef struct imap_info
1510 {
1511  Account *source_account;
1512  Account *map_account;
1513  GList *list;
1514  char *head;
1515  char *category;
1516  char *match_string;
1517  char *count;
1518 }GncImapInfo;
1519 
1524 
1528 GList *gnc_account_imap_get_info (Account *acc, const char *category);
1529 
1533 gchar *gnc_account_get_map_entry (Account *acc, const char *head, const char *category);
1534 
1538 void gnc_account_delete_map_entry (Account *acc, char *head, char *category,
1539  char *match_string, gboolean empty);
1540 
1544 
1549 
1562 void DxaccAccountSetCurrency (Account *account, gnc_commodity *currency);
1563 
1567 gnc_commodity * DxaccAccountGetCurrency (const Account *account);
1568 
1576 void dxaccAccountSetQuoteTZ (Account *account, const char *tz);
1584 const char * dxaccAccountGetQuoteTZ (const Account *account);
1591 #define ACCOUNT_KVP "kvp"
1592 #define ACCOUNT_NAME_ "name"
1593 #define ACCOUNT_CODE_ "code"
1594 #define ACCOUNT_DESCRIPTION_ "desc"
1595 #define ACCOUNT_COLOR_ "color"
1596 #define ACCOUNT_FILTER_ "filter"
1597 #define ACCOUNT_SORT_ORDER_ "sort-order"
1598 #define ACCOUNT_SORT_REVERSED_ "sort-reversed"
1599 #define ACCOUNT_NOTES_ "notes"
1600 #define ACCOUNT_BALANCE_ "balance"
1601 #define ACCOUNT_NOCLOSING_ "noclosing"
1602 #define ACCOUNT_OPENING_BALANCE_ "opening-balance"
1603 #define ACCOUNT_CLEARED_ "cleared"
1604 #define ACCOUNT_RECONCILED_ "reconciled"
1605 #define ACCOUNT_PRESENT_ "present"
1606 #define ACCOUNT_FUTURE_MINIMUM_ "future-minimum"
1607 #define ACCOUNT_TAX_RELATED "tax-related-p"
1608 #define ACCOUNT_TYPE_ "account-type"
1609 #define ACCOUNT_SCU "smallest-commodity-unit"
1610 #define ACCOUNT_NSCU "non-standard-scu"
1611 #define ACCOUNT_PARENT "parent-account"
1612 
1617 #define ACCOUNT_MATCH_ALL_TYPE "account-match-all"
1618 
1619 #ifdef __cplusplus
1620 } /* extern "C" */
1621 #endif
1622 
1623 #endif /* XACC_ACCOUNT_H */
1624 
void xaccAccountSetType(Account *account, GNCAccountType)
Set the account's type.
Definition: Account.cpp:2407
Account * gnc_account_get_parent(const Account *account)
This routine returns a pointer to the parent of the specified account.
Definition: Account.cpp:2880
void xaccAccountSetFilter(Account *account, const char *filter)
Set the account's Filter.
Definition: Account.cpp:2557
void xaccAccountSetSortOrder(Account *account, const char *sortorder)
Set the account's Sort Order.
Definition: Account.cpp:2567
gint xaccAccountForEachTransaction(const Account *account, TransactionCallback proc, void *data)
The xaccAccountForEachTransaction() routine will traverse all of the transactions in account and call...
Definition: Account.cpp:5383
int xaccAccountTreeForEachTransaction(Account *acc, TransactionCallback proc, void *data)
Traverse all of the transactions in the given account group.
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 cu...
Definition: Account.cpp:5326
gboolean xaccAccountGetAutoInterest(const Account *acc)
Get the "auto interest" flag for an account.
Definition: Account.cpp:4261
const char * xaccAccountGetLastNum(const Account *account)
Get the last num field of an Account.
Definition: Account.cpp:4858
GNCAccountType xaccAccountTypeGetFundamental(GNCAccountType t)
Convenience function to return the fundamental type asset/liability/income/expense/equity given an ac...
Definition: Account.cpp:4581
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...
Definition: Account.cpp:5984
GList LotList
GList of GNCLots.
Definition: gnc-engine.h:209
gboolean xaccAccountGetSortReversed(const Account *account)
Get the account's Sort Order direction.
Definition: Account.cpp:3357
guint32 xaccAccountTypesCompatibleWith(GNCAccountType type)
Return the bitmask of account types compatible with a given type.
Definition: Account.cpp:4453
void gnc_account_append_child(Account *new_parent, Account *child)
This function will remove from the child account any pre-existing parent relationship, and will then add the account as a child of the new parent.
Definition: Account.cpp:2782
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...
GList * gnc_account_get_descendants_sorted(const Account *account)
This function returns a GList containing all the descendants of the specified account, sorted at each level.
Definition: Account.cpp:3025
gint gnc_account_n_descendants(const Account *account)
Return the number of descendants of the specified account.
Definition: Account.cpp:2962
gint64 xaccAccountGetTaxUSCopyNumber(const Account *account)
DOCUMENT ME!
Definition: Account.cpp:4133
gboolean gnc_account_is_root(const Account *account)
This routine indicates whether the specified account is the root node of an account tree...
Definition: Account.cpp:2904
SplitList * xaccAccountGetSplitList(const Account *account)
The xaccAccountGetSplitList() routine returns a pointer to a GList of the splits in the account...
Definition: Account.cpp:3964
gboolean xaccAccountGetNonStdSCU(const Account *account)
Return boolean, indicating whether this account uses a non-standard SCU.
Definition: Account.cpp:2711
int xaccAccountGetCommoditySCUi(const Account *account)
Return the 'internal' SCU setting.
Definition: Account.cpp:2675
gnc_commodity * DxaccAccountGetCurrency(const Account *account)
Definition: Account.cpp:3383
void gnc_account_foreach_descendant(const Account *account, AccountCb func, gpointer user_data)
This method will traverse all children of this accounts and their descendants, calling 'func' on each...
Definition: Account.cpp:3202
void xaccAccountSetNotes(Account *account, const char *notes)
Set the account's notes.
Definition: Account.cpp:2603
gboolean xaccAccountIsPriced(const Account *acc)
Returns true if the account is a stock, mutual fund or currency, otherwise false. ...
Definition: Account.cpp:4637
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 ...
Definition: Account.cpp:5994
Expense accounts are used to denote expenses.
Definition: Account.h:146
const char * xaccAccountGetFilter(const Account *account)
Get the account's filter.
Definition: Account.cpp:3337
GNCAccountType xaccAccountGetType(const Account *account)
Returns the account's account type.
Definition: Account.cpp:3236
void xaccAccountSetMark(Account *account, short mark)
Set a mark on the account.
Definition: Account.cpp:2043
int xaccAccountGetCommoditySCU(const Account *account)
Return the SCU for the account.
Definition: Account.cpp:2682
const char * xaccAccountGetCode(const Account *account)
Get the account's accounting code.
Definition: Account.cpp:3313
void xaccAccountSetReconcileLastDate(Account *account, time64 last_date)
DOCUMENT ME!
Definition: Account.cpp:4677
Account * gnc_account_create_root(QofBook *book)
Create a new root level account.
Definition: Account.cpp:1223
void xaccAccountSetTaxRelated(Account *account, gboolean tax_related)
DOCUMENT ME!
Definition: Account.cpp:4089
Mutual Fund accounts will typically be shown in registers which show three columns: price...
Definition: Account.h:128
void xaccAccountSortSplits(Account *acc, gboolean force)
The xaccAccountSortSplits() routine will resort the account's splits if the sort is dirty...
Definition: Account.cpp:1985
void xaccAccountSetCode(Account *account, const char *code)
Set the account's accounting code.
Definition: Account.cpp:2448
gpointer gnc_account_foreach_descendant_until(const Account *account, AccountCb2 func, gpointer user_data)
This method will traverse all children of this accounts and their descendants, calling 'func' on each...
Definition: Account.cpp:3210
void gnc_account_set_policy(Account *account, GNCPolicy *policy)
Set the account's lot order policy.
Definition: Account.cpp:2092
void xaccAccountSetReconcileLastInterval(Account *account, int months, int days)
DOCUMENT ME!
Definition: Account.cpp:4729
gboolean gnc_account_remove_split(Account *acc, Split *s)
Remove the given split from an account.
Definition: Account.cpp:1960
gnc_numeric xaccAccountGetBalanceAsOfDateInCurrency(Account *account, time64 date, gnc_commodity *report_commodity, gboolean include_children)
This function gets the balance at the end of the given date in the desired commodity.
Definition: Account.cpp:3907
guint32 xaccAccountTypesValid(void)
Returns the bitmask of the account type enums that are valid.
Definition: Account.cpp:4558
const char * xaccAccountTypeEnumAsString(GNCAccountType type)
Conversion routines for the account types to/from strings that are used in persistent storage...
Definition: Account.cpp:4333
stop here; the following types just aren't ready for prime time
Definition: Account.h:164
GList * gnc_account_list_name_violations(QofBook *book, const gchar *separator)
Runs through all the accounts and returns a list of account names that contain the provided separator...
Definition: Account.cpp:266
void xaccAccountInsertLot(Account *, GNCLot *)
The xaccAccountInsertLot() method will register the indicated lot with this account.
Definition: Account.cpp:2124
void xaccAccountMoveAllSplits(Account *accfrom, Account *accto)
The xaccAccountMoveAllSplits() routine reassigns each of the splits in accfrom to accto...
Definition: Account.cpp:2184
void gnc_account_set_sort_dirty(Account *acc)
Tell the account believes that the splits may be incorrectly sorted and need to be resorted...
Definition: Account.cpp:1870
The cash account type is used to denote a shoe-box or pillowcase stuffed with * cash.
Definition: Account.h:113
const char * gnc_account_get_debit_string(GNCAccountType acct_type)
Get the debit string associated with this account type.
Definition: Account.cpp:4171
void xaccAccountSetLastNum(Account *account, const char *num)
Set the last num field of an Account.
Definition: Account.cpp:4870
gnc_numeric xaccAccountGetClearedBalance(const Account *account)
Get the current balance of the account, only including cleared transactions.
Definition: Account.cpp:3493
Account * gnc_account_imap_find_account_bayes(GncImportMatchMap *imap, GList *tokens)
Look up an Account in the map using Baysian.
Definition: Account.cpp:5772
gboolean xaccAccountGetReconcilePostponeDate(const Account *account, time64 *postpone_date)
DOCUMENT ME!
Definition: Account.cpp:4753
Account used to record multiple commodity transactions.
Definition: Account.h:158
void xaccAccountDestroy(Account *account)
The xaccAccountDestroy() routine can be used to get rid of an account.
Definition: Account.cpp:1550
gboolean xaccAccountIsHidden(const Account *acc)
Should this account be "hidden".
Definition: Account.cpp:4288
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 s...
Definition: Account.cpp:3040
void gnc_account_remove_child(Account *parent, Account *child)
This function will remove the specified child account from the specified parent account.
Definition: Account.cpp:2844
int xaccAccountOrder(const Account *account_1, const Account *account_2)
The xaccAccountOrder() subroutine defines a sorting order on accounts.
Definition: Account.cpp:2343
Stock accounts will typically be shown in registers which show three columns: price, number of shares, and value.
Definition: Account.h:125
const char * xaccAccountGetColor(const Account *account)
Get the account's color.
Definition: Account.cpp:3327
Split * xaccAccountFindSplitByDesc(const Account *account, const char *description)
Returns a pointer to the split, not a copy.
Definition: Account.cpp:5098
gboolean xaccAccountIsAssetLiabType(GNCAccountType t)
Convenience function to check if the account is a valid Asset or Liability type, but not a business a...
Definition: Account.cpp:4567
void xaccClearMarkDown(Account *account, short val)
The xaccClearMarkDown will clear the mark only in this and in sub-accounts.
Definition: Account.cpp:2065
GList SplitList
GList of Split.
Definition: gnc-engine.h:211
GNCAccountType xaccAccountStringToEnum(const char *str)
Conversion routines for the account types to/from strings that are used in persistent storage...
Definition: Account.cpp:4404
bank account type – don't use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:168
gchar * gnc_account_get_full_name(const Account *account)
The gnc_account_get_full_name routine returns the fully qualified name of the account using the given...
Definition: Account.cpp:3265
gnc_numeric xaccAccountGetReconciledBalanceAsOfDate(Account *account, time64 date)
Get the reconciled balance of the account at the end of the day of the date specified.
Definition: Account.cpp:3589
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.
Definition: Account.cpp:5835
void xaccAccountSetPlaceholder(Account *account, gboolean val)
Set the "placeholder" flag for an account.
Definition: Account.cpp:4205
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:4540
gnc_numeric xaccAccountGetNoclosingBalanceAsOfDateInCurrency(Account *acc, time64 date, gnc_commodity *report_commodity, gboolean include_children)
This function gets the balance at the end of the given date, ignoring closing entries, in the desired commodity.
Definition: Account.cpp:3917
gchar * gnc_account_name_violations_errmsg(const gchar *separator, GList *invalid_account_names)
Composes a translatable error message showing which account names clash with the current account sepa...
Definition: Account.cpp:228
gboolean xaccTransactionTraverse(Transaction *trans, int stage)
xaccTransactionTraverse() checks the stage of the given transaction.
Definition: Account.cpp:5249
void xaccAccountSetColor(Account *account, const char *color)
Set the account's Color.
Definition: Account.cpp:2547
Transaction * xaccAccountFindTransByDesc(const Account *account, const char *description)
Returns a pointer to the transaction, not a copy.
Definition: Account.cpp:5113
void gnc_account_set_balance_dirty(Account *acc)
Tell the account that the running balances may be incorrect and need to be recomputed.
Definition: Account.cpp:1884
Income accounts are used to denote income.
Definition: Account.h:143
void gnc_account_foreach_child(const Account *account, AccountCb func, gpointer user_data)
This method will traverse the immediate children of this accounts, calling 'func' on each account...
Definition: Account.cpp:3184
Account * gnc_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.
Definition: Account.cpp:3053
void gnc_account_tree_begin_staged_transaction_traversals(Account *acc)
gnc_account_tree_begin_staged_transaction_traversals() resets the traversal marker inside every trans...
Definition: Account.cpp:5276
void dxaccAccountSetPriceSrc(Account *account, const char *src)
Set a string that identifies the Finance::Quote backend that should be used to retrieve online prices...
Definition: Account.cpp:4965
void xaccAccountBeginStagedTransactionTraversals(const Account *account)
xaccAccountBeginStagedTransactionTraversals() resets the traversal marker for each transaction which ...
Definition: Account.cpp:5238
Implement Accounting Policy.
GNCPlaceholderType xaccAccountGetDescendantPlaceholder(const Account *account)
Returns PLACEHOLDER_NONE if account is NULL or neither account nor any descendant of account is a pla...
Definition: Account.cpp:4237
const char * xaccAccountGetDescription(const Account *account)
Get the account's description.
Definition: Account.cpp:3320
void gnc_account_set_start_reconciled_balance(Account *acc, const gnc_numeric start_baln)
This function will set the starting reconciled commodity balance for this account.
Definition: Account.cpp:3473
void gnc_account_delete_all_bayes_maps(Account *acc)
Delete all bayes entries for Account.
Definition: Account.cpp:6021
const char * dxaccAccountGetQuoteTZ(const Account *account)
Get the timezone to be used when interpreting the results from a given Finance::Quote backend...
Definition: Account.cpp:5004
GType gnc_account_get_type(void)
Returns the GType type system description of the Account class.
line of credit – don't use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:174
void xaccAccountClearReconcilePostpone(Account *account)
DOCUMENT ME!
Definition: Account.cpp:4844
const char * xaccAccountGetTaxUSPayerNameSource(const Account *account)
DOCUMENT ME!
Definition: Account.cpp:4114
void xaccSplitsBeginStagedTransactionTraversals(SplitList *splits)
xaccSplitsBeginStagedTransactionTraversals() resets the traversal marker for each transaction which i...
Definition: Account.cpp:5222
void gnc_account_reset_convert_bayes_to_flat(void)
Reset the flag that indicates the function imap_convert_bayes_to_flat has been run.
Definition: Account.cpp:5740
GList * gnc_account_get_children_sorted(const Account *account)
This routine returns a GList of all children accounts of the specified account, ordered by xaccAccoun...
Definition: Account.cpp:2918
The bank account type denotes a savings or checking account held at a bank.
Definition: Account.h:110
LotList * xaccAccountGetLotList(const Account *account)
The xaccAccountGetLotList() routine returns a list of all lots in this account.
Definition: Account.cpp:3987
void xaccAccountRecomputeBalance(Account *)
The following recompute the partial balances (stored with the transaction) and the total balance...
Definition: Account.cpp:2262
GList * gnc_account_imap_get_info_bayes(Account *acc)
Returns a GList of structure imap_info of all Bayesian mappings for required Account.
Definition: Account.cpp:5946
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.
Definition: Account.cpp:5957
Account * gnc_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.
Definition: Account.cpp:3120
gboolean gnc_account_get_defer_bal_computation(Account *acc)
Get the account's flag for deferred balance computation.
Definition: Account.cpp:1910
void xaccAccountSetReconcilePostponeDate(Account *account, time64 postpone_date)
DOCUMENT ME!
Definition: Account.cpp:4778
A/P account type.
Definition: Account.h:154
const char * xaccAccountGetTaxUSCode(const Account *account)
DOCUMENT ME!
Definition: Account.cpp:4095
gboolean xaccAccountIsAPARType(GNCAccountType t)
Convenience function to check if the account is a valid business account type (meaning an Accounts Pa...
Definition: Account.cpp:4613
bank account type – don't use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:170
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:4370
void xaccAccountSetIsOpeningBalance(Account *account, gboolean val)
Set the "opening-balance" flag for an account.
Definition: Account.cpp:4227
void xaccAccountSetReconcilePostponeBalance(Account *account, gnc_numeric balance)
DOCUMENT ME!
Definition: Account.cpp:4824
gboolean xaccAccountEqual(const Account *a, const Account *b, gboolean check_guids)
Compare two accounts for equality - this is a deep compare.
Definition: Account.cpp:1625
gboolean xaccAccountGetTaxRelated(const Account *account)
DOCUMENT ME!
Definition: Account.cpp:4083
void gnc_account_set_start_cleared_balance(Account *acc, const gnc_numeric start_baln)
This function will set the starting cleared commodity balance for this account.
Definition: Account.cpp:3460
Account * xaccCloneAccount(const Account *source, QofBook *book)
The xaccCloneAccount() routine makes a simple copy of the indicated account, placing it in the indica...
Definition: Account.cpp:1240
gnc_numeric xaccAccountGetReconciledBalance(const Account *account)
Get the current balance of the account, only including reconciled transactions.
Definition: Account.cpp:3500
asset (and liability) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:119
gint gnc_account_n_children(const Account *account)
Return the number of children of the specified account.
Definition: Account.cpp:2933
void gnc_account_join_children(Account *to_parent, Account *from_parent)
The gnc_account_join_children() subroutine will move (reparent) all child accounts from the from_pare...
Definition: Account.cpp:5126
gnc_numeric xaccAccountGetBalanceAsOfDate(Account *account, time64 date)
Get the balance of the account at the end of the day before the date specified.
Definition: Account.cpp:3577
All type declarations for the whole Gnucash engine.
gnc_numeric xaccAccountGetBalance(const Account *account)
Get the current balance of the account, which may include future splits.
Definition: Account.cpp:3486
gboolean xaccAccountGetReconcileLastDate(const Account *account, time64 *last_date)
DOCUMENT ME!
Definition: Account.cpp:4652
void dxaccAccountSetQuoteTZ(Account *account, const char *tz)
Set the timezone to be used when interpreting the results from a given Finance::Quote backend...
Definition: Account.cpp:4993
The currency account type indicates that the account is a currency trading account.
Definition: Account.h:132
void xaccAccountSetCommoditySCU(Account *account, int frac)
Set the SCU for the account.
Definition: Account.cpp:2659
GNCAccountType
The account types are used to determine how the transaction data in the account is displayed...
Definition: Account.h:105
gnc_commodity * gnc_account_get_currency_or_parent(const Account *account)
Returns a gnc_commodity that is a currency, suitable for being a Transaction's currency.
Definition: Account.cpp:3412
gboolean xaccAccountGetHidden(const Account *acc)
Get the "hidden" flag for an account.
Definition: Account.cpp:4276
GncImportMatchMap * gnc_account_imap_create_imap(Account *acc)
Obtain an ImportMatchMap object from an Account or a Book.
Definition: Account.cpp:5402
gboolean gnc_account_insert_split(Account *acc, Split *s)
Insert the given split from an account.
Definition: Account.cpp:1924
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:3017
void xaccAccountSetAutoInterest(Account *acc, gboolean val)
Set the "auto interest" flag for an account.
Definition: Account.cpp:4267
void xaccAccountSetTaxUSCode(Account *account, const char *code)
DOCUMENT ME!
Definition: Account.cpp:4104
GNCPlaceholderType
DOCUMENT ME!
Definition: Account.h:1181
gboolean xaccAccountGetIsOpeningBalance(const Account *account)
Get the "opening-balance" flag for an account.
Definition: Account.cpp:4211
guint32 xaccParentAccountTypesCompatibleWith(GNCAccountType type)
Return the bitmask of parent account types compatible with a given type.
Definition: Account.cpp:4493
gboolean xaccAccountGetReconcileChildrenStatus(const Account *account)
DOCUMENT ME!
Definition: Account.cpp:5041
gboolean xaccAccountGetReconcileLastInterval(const Account *account, int *months, int *days)
DOCUMENT ME!
Definition: Account.cpp:4695
Not a type.
Definition: Account.h:107
const char * dxaccAccountGetPriceSrc(const Account *account)
Get a string that identifies the Finance::Quote backend that should be used to retrieve online prices...
Definition: Account.cpp:4977
liability (and asset) accounts indicate generic, generalized accounts that are none of the above...
Definition: Account.h:122
const char * gnc_account_get_credit_string(GNCAccountType acct_type)
Get the credit string associated with this account type.
Definition: Account.cpp:4183
GList * gnc_account_get_children(const Account *account)
This routine returns a GList of all children accounts of the specified account.
Definition: Account.cpp:2911
void xaccAccountSetHidden(Account *acc, gboolean val)
Set the "hidden" flag for an account.
Definition: Account.cpp:4282
void xaccAccountBeginEdit(Account *account)
The xaccAccountBeginEdit() subroutine is the first phase of a two-phase-commit wrapper for account up...
Definition: Account.cpp:1430
gboolean xaccAccountHasAncestor(const Account *acc, const Account *ancestor)
Returns true if the account is 'ancestor' or has 'ancestor' as an ancestor.
Definition: Account.cpp:4310
gnc_commodity * xaccAccountGetCommodity(const Account *account)
Get the account's commodity.
Definition: Account.cpp:3405
gboolean xaccAccountGetPlaceholder(const Account *account)
Get the "placeholder" flag for an account.
Definition: Account.cpp:4199
gint gnc_account_get_current_depth(const Account *account)
Return the number of levels of this account below the root account.
Definition: Account.cpp:2970
A/R account type.
Definition: Account.h:152
void xaccAccountSetSortReversed(Account *account, gboolean sortreversed)
Set the account's Sort Order direction.
Definition: Account.cpp:2577
bank account type – don't use this for now, see NUM_ACCOUNT_TYPES
Definition: Account.h:172
Account * xaccAccountGainsAccount(Account *acc, gnc_commodity *curr)
Retrieve the gains account used by this account for the indicated currency, creating and recording a ...
Definition: Account.cpp:4925
Account * gnc_account_nth_child(const Account *parent, gint num)
Return the n'th child account of the specified parent account.
Definition: Account.cpp:2948
Account * xaccMallocAccount(QofBook *book)
Constructor.
Definition: Account.cpp:1209
gint gnc_account_child_index(const Account *parent, const Account *child)
Return the index of the specified child within the list of the parent's children. ...
Definition: Account.cpp:2940
gint64 time64
Many systems, including Microsoft Windows and BSD-derived Unixes like Darwin, are retaining the int-3...
Definition: gnc-date.h:93
void xaccAccountSetTaxUSPayerNameSource(Account *account, const char *source)
DOCUMENT ME!
Definition: Account.cpp:4123
void xaccAccountSetDescription(Account *account, const char *desc)
Set the account's description.
Definition: Account.cpp:2467
void DxaccAccountSetCurrency(Account *account, gnc_commodity *currency)
Definition: Account.cpp:2722
void gnc_account_set_start_balance(Account *acc, const gnc_numeric start_baln)
This function will set the starting commodity balance for this account.
Definition: Account.cpp:3448
void xaccAccountSetNonStdSCU(Account *account, gboolean flag)
Set the flag indicating that this account uses a non-standard SCU.
Definition: Account.cpp:2695
LotList * xaccAccountFindOpenLots(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.
Definition: Account.cpp:3994
Account * gnc_account_get_root(Account *account)
This routine returns the root account of the account tree that the specified account belongs to...
Definition: Account.cpp:2887
Account * gnc_account_lookup_by_opening_balance(Account *account, gnc_commodity *commodity)
Find the opening balance account for the currency.
Definition: Account.cpp:3068
void gnc_account_set_defer_bal_computation(Account *acc, gboolean defer)
Set the defer balance flag.
Definition: Account.cpp:1897
const char * xaccAccountGetName(const Account *account)
Get the account's name.
Definition: Account.cpp:3258
Equity account is used to balance the balance sheet.
Definition: Account.h:149
const char * xaccAccountGetTypeStr(GNCAccountType type)
The xaccAccountGetTypeStr() routine returns a string suitable for use in the GUI/Interface.
Definition: Account.cpp:4443
const char * xaccAccountGetSortOrder(const Account *account)
Get the account's Sort Order.
Definition: Account.cpp:3347
Not a type.
Definition: Account.h:108
The type used to store guids in C.
Definition: guid.h:75
int xaccAccountStagedTransactionTraversal(const Account *a, unsigned int stage, TransactionCallback thunk, void *data)
xaccAccountStagedTransactionTraversal() calls thunk on each transaction in account a whose current ma...
Definition: Account.cpp:5286
void xaccAccountCommitEdit(Account *account)
ThexaccAccountCommitEdit() subroutine is the second phase of a two-phase-commit wrapper for account u...
Definition: Account.cpp:1471
void xaccClearMark(Account *account, short val)
Get the mark set by xaccAccountSetMark short xaccAccountGetMark (const Account *account);.
Definition: Account.cpp:2054
void xaccAccountSetName(Account *account, const char *name)
Set the account's name.
Definition: Account.cpp:2428
The hidden root account of an account tree.
Definition: Account.h:156
GNCPolicy * gnc_account_get_policy(Account *account)
Get the account's lot order policy.
Definition: Account.cpp:2084
void gnc_account_merge_children(Account *parent)
The gnc_account_merge_children() subroutine will go through an account, merging all child accounts th...
Definition: Account.cpp:5151
gboolean xaccAccountIsEquityType(GNCAccountType t)
Convenience function to check if the account is a valid Equity type.
Definition: Account.cpp:4625
void xaccAccountSetReconcileChildrenStatus(Account *account, gboolean status)
DOCUMENT ME!
Definition: Account.cpp:5018
The Credit card account is used to denote credit (e.g.
Definition: Account.h:116
const gchar * gnc_get_account_separator_string(void)
Returns the account separation character chosen by the user.
Definition: Account.cpp:198
void xaccAccountSetCommodity(Account *account, gnc_commodity *comm)
Set the account's commodity.
Definition: Account.cpp:2613
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:3145
const char * xaccAccountGetNotes(const Account *account)
Get the account's notes.
Definition: Account.cpp:3373
gboolean xaccAccountGetReconcilePostponeBalance(const Account *account, gnc_numeric *balance)
DOCUMENT ME!
Definition: Account.cpp:4797
gint gnc_account_get_tree_depth(const Account *account)
Return the number of levels of descendants accounts below the specified account.
Definition: Account.cpp:2989
Account * xaccAccountLookup(const GncGUID *guid, QofBook *book)
The xaccAccountLookup() subroutine will return the account associated with the given id...
Definition: Account.cpp:2031
void xaccAccountSetTaxUSCopyNumber(Account *account, gint64 copy_number)
DOCUMENT ME!
Definition: Account.cpp:4147