GnuCash
5.6-150-g038405b370+
|
a simple price database for gnucash More...
Go to the source code of this file.
Typedefs | |
typedef GList | PriceList |
typedef gboolean(* | GncPriceForeachFunc) (GNCPrice *p, gpointer user_data) |
Enumerations | |
enum | PriceSource { PRICE_SOURCE_EDIT_DLG, PRICE_SOURCE_FQ, PRICE_SOURCE_USER_PRICE, PRICE_SOURCE_XFER_DLG_VAL, PRICE_SOURCE_SPLIT_REG, PRICE_SOURCE_SPLIT_IMPORT, PRICE_SOURCE_STOCK_SPLIT, PRICE_SOURCE_STOCK_TRANSACTION, PRICE_SOURCE_INVOICE, PRICE_SOURCE_TEMP, PRICE_SOURCE_INVALID } |
Price source enum. More... | |
enum | PriceRemoveSourceFlags { PRICE_REMOVE_SOURCE_FQ = 1, PRICE_REMOVE_SOURCE_USER = 2, PRICE_REMOVE_SOURCE_APP = 4, PRICE_REMOVE_SOURCE_COMM = 8 } |
enum | PriceRemoveKeepOptions { PRICE_REMOVE_KEEP_NONE, PRICE_REMOVE_KEEP_LAST_WEEKLY, PRICE_REMOVE_KEEP_LAST_MONTHLY, PRICE_REMOVE_KEEP_LAST_QUARTERLY, PRICE_REMOVE_KEEP_LAST_PERIOD, PRICE_REMOVE_KEEP_SCALED } |
Functions | |
GType | gnc_price_get_type (void) |
GType | gnc_pricedb_get_type (void) |
GNCPriceDB * | gnc_pricedb_get_db (QofBook *book) |
Return the pricedb associated with the book. More... | |
GNCPriceDB * | gnc_collection_get_pricedb (QofCollection *col) |
Return the pricedb via the Book's collection. More... | |
void | gnc_pricedb_destroy (GNCPriceDB *db) |
Destroy the given pricedb and unref all of the prices it contains. More... | |
void | gnc_pricedb_begin_edit (GNCPriceDB *) |
Begin an edit. More... | |
void | gnc_pricedb_commit_edit (GNCPriceDB *) |
Commit an edit. More... | |
void | gnc_pricedb_set_bulk_update (GNCPriceDB *db, gboolean bulk_update) |
Set flag to indicate whether duplication checks should be performed. More... | |
gboolean | gnc_pricedb_add_price (GNCPriceDB *db, GNCPrice *p) |
Add a price to the pricedb. More... | |
gboolean | gnc_pricedb_remove_price (GNCPriceDB *db, GNCPrice *p) |
Remove a price from the pricedb and unref the price. More... | |
gboolean | gnc_pricedb_remove_old_prices (GNCPriceDB *db, GList *comm_list, GDate *fiscal_end_date, time64 cutoff, PriceRemoveSourceFlags source, PriceRemoveKeepOptions keep) |
Remove and unref prices older than a certain time. More... | |
GNCPrice * | gnc_pricedb_lookup_latest (GNCPriceDB *db, const gnc_commodity *commodity, const gnc_commodity *currency) |
Find the most recent price between the two commodities. More... | |
PriceList * | gnc_pricedb_lookup_latest_any_currency (GNCPriceDB *db, const gnc_commodity *commodity) |
Find the most recent price between a commodity and all other commodities. More... | |
gboolean | gnc_pricedb_has_prices (GNCPriceDB *db, const gnc_commodity *commodity, const gnc_commodity *currency) |
Report whether the pricedb contains prices for one commodity in another. More... | |
PriceList * | gnc_pricedb_get_prices (GNCPriceDB *db, const gnc_commodity *commodity, const gnc_commodity *currency) |
Return all the prices for a given commodity in another. More... | |
GNCPrice * | gnc_pricedb_lookup_day_t64 (GNCPriceDB *db, const gnc_commodity *commodity, const gnc_commodity *currency, time64 t) |
Return the price between the two commodities on the indicated day. More... | |
GNCPrice * | gnc_pricedb_lookup_nearest_in_time64 (GNCPriceDB *db, const gnc_commodity *c, const gnc_commodity *currency, time64 t) |
Return the price between the two commoditiesz nearest to the given time. More... | |
PriceList * | gnc_pricedb_lookup_nearest_in_time_any_currency_t64 (GNCPriceDB *db, const gnc_commodity *c, time64 t) |
Return the price nearest in time to that given between the given commodity and every other. More... | |
GNCPrice * | gnc_pricedb_lookup_nearest_before_t64 (GNCPriceDB *db, const gnc_commodity *c, const gnc_commodity *currency, time64 t) |
Return the nearest price between the given commodities before the given time. More... | |
PriceList * | gnc_pricedb_lookup_nearest_before_any_currency_t64 (GNCPriceDB *db, const gnc_commodity *c, time64 t) |
Return the nearest price between the given commodity and any other before the given time. More... | |
gnc_numeric | gnc_pricedb_get_nearest_before_price (GNCPriceDB *pdb, const gnc_commodity *orig_currency, const gnc_commodity *new_currency, const time64 t) |
Retrieve the price one currency to another using the price nearest to before the given time. More... | |
gnc_numeric | gnc_pricedb_get_nearest_price (GNCPriceDB *pdb, const gnc_commodity *orig_currency, const gnc_commodity *new_currency, const time64 t) |
Retrieve the price one currency to another using the price nearest to the given time. More... | |
gnc_numeric | gnc_pricedb_get_latest_price (GNCPriceDB *pdb, const gnc_commodity *orig_currency, const gnc_commodity *new_currency) |
Retrieve the price one currency to another using the latest price. More... | |
gnc_numeric | gnc_pricedb_convert_balance_latest_price (GNCPriceDB *pdb, gnc_numeric balance, const gnc_commodity *balance_currency, const gnc_commodity *new_currency) |
Convert a balance from one currency to another using the most recent price between the two. More... | |
gnc_numeric | gnc_pricedb_convert_balance_nearest_price_t64 (GNCPriceDB *pdb, gnc_numeric balance, const gnc_commodity *balance_currency, const gnc_commodity *new_currency, time64 t) |
Convert a balance from one currency to another using the price nearest to the given time. More... | |
gnc_numeric | gnc_pricedb_convert_balance_nearest_before_price_t64 (GNCPriceDB *pdb, gnc_numeric balance, const gnc_commodity *balance_currency, const gnc_commodity *new_currency, time64 t) |
Convert a balance from one currency to another using the price nearest to before the given time. More... | |
gboolean | gnc_pricedb_foreach_price (GNCPriceDB *db, GncPriceForeachFunc f, gpointer user_data, gboolean stable_order) |
Call a GncPriceForeachFunction once for each price in db, until the function returns FALSE. More... | |
int | gnc_pricedb_num_prices (GNCPriceDB *db, const gnc_commodity *c) |
Get the number of prices, in any currency, for a given commodity. More... | |
GNCPrice * | gnc_pricedb_nth_price (GNCPriceDB *db, const gnc_commodity *c, const int n) |
Get the nth price for the given commodity in reverse date order. More... | |
void | gnc_pricedb_nth_price_reset_cache (GNCPriceDB *db) |
guint | gnc_pricedb_get_num_prices (GNCPriceDB *db) |
Return the number of prices in the database. More... | |
gboolean | gnc_pricedb_equal (GNCPriceDB *db1, GNCPriceDB *db2) |
Test equality of two pricedbs. More... | |
Constructors | |
GNCPrice * | gnc_price_create (QofBook *book) |
gnc_price_create - returns a newly allocated and initialized price with a reference count of 1. More... | |
GNCPrice * | gnc_price_clone (GNCPrice *p, QofBook *book) |
gnc_price_clone - returns a newly allocated price that's a content-wise duplicate of the given price, p. More... | |
GNCPrice * | gnc_price_invert (GNCPrice *p) |
Return a newly-allocated price that's the inverse of the given price, p. More... | |
Memory Management | |
void | gnc_price_ref (GNCPrice *p) |
gnc_price_ref - indicate your need for a given price to stick around (i.e. More... | |
void | gnc_price_unref (GNCPrice *p) |
gnc_price_unref - indicate you're finished with a price (i.e. More... | |
Setters | |
All of the setters store copies of the data given, with the exception of the commodity field which just stores the pointer given. It is assumed that commodities are a global resource and are pointer unique. Invocations of the setters should be wrapped with calls to gnc_price_begin_edit() and commit_edit(). The begin/commit calls help ensure that the local price db is synchronized with the backend. | |
void | gnc_price_begin_edit (GNCPrice *p) |
void | gnc_price_commit_edit (GNCPrice *p) |
void | gnc_price_set_commodity (GNCPrice *p, gnc_commodity *c) |
void | gnc_price_set_currency (GNCPrice *p, gnc_commodity *c) |
void | gnc_price_set_time64 (GNCPrice *p, time64 t) |
void | gnc_price_set_source (GNCPrice *p, PriceSource source) |
void | gnc_price_set_source_string (GNCPrice *p, const char *s) |
void | gnc_price_set_typestr (GNCPrice *p, const char *type) |
void | gnc_price_set_value (GNCPrice *p, gnc_numeric value) |
Internal/Debugging | |
void | gnc_price_print (GNCPrice *db, FILE *f, int indent) |
This simple function can be useful for debugging the price code. | |
void | gnc_pricedb_print_contents (GNCPriceDB *db, FILE *f) |
This simple function can be useful for debugging the pricedb code. | |
GNCPrice lists | |
The database communicates multiple prices in and out via gnc price lists. These are just time sorted GLists of GNCPrice pointers. Functions for manipulating these lists are provided. These functions are helpful in that they handle maintaining proper reference counts on behalf of the price list for every price being held in a given list. I.e. insert "refs" the prices being inserted, remove and destroy "unref" the prices that will no longer be referred to by the list. | |
gboolean | gnc_price_list_insert (PriceList **prices, GNCPrice *p, gboolean check_dupl) |
gnc_price_list_insert - insert a price into the given list, calling gnc_price_ref on it during the process. More... | |
gboolean | gnc_price_list_remove (PriceList **prices, GNCPrice *p) |
gnc_price_list_remove - remove the price, p, from the given list, calling gnc_price_unref on it during the process. More... | |
void | gnc_price_list_destroy (PriceList *prices) |
gnc_price_list_destroy - destroy the given price list, calling gnc_price_unref on all the prices included in the list. More... | |
gboolean | gnc_price_list_equal (PriceList *prices1, PriceList *prices2) |
Getters | |
All of the getters return data that's internal to the GNCPrice, not copies, so don't free these values. | |
#define | gnc_price_get_guid(X) qof_entity_get_guid(QOF_INSTANCE(X)) |
#define | gnc_price_return_guid(X) (*(qof_entity_get_guid(QOF_INSTANCE(X)))) |
#define | gnc_price_get_book(X) qof_instance_get_book(QOF_INSTANCE(X)) |
GNCPrice * | gnc_price_lookup (const GncGUID *guid, QofBook *book) |
gnc_commodity * | gnc_price_get_commodity (const GNCPrice *p) |
gnc_commodity * | gnc_price_get_currency (const GNCPrice *p) |
time64 | gnc_price_get_time64 (const GNCPrice *p) |
PriceSource | gnc_price_get_source (const GNCPrice *p) |
const char * | gnc_price_get_source_string (const GNCPrice *p) |
const char * | gnc_price_get_typestr (const GNCPrice *p) |
gnc_numeric | gnc_price_get_value (const GNCPrice *p) |
gboolean | gnc_price_equal (const GNCPrice *p1, const GNCPrice *p2) |
a simple price database for gnucash
Definition in file gnc-pricedb.h.