mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
fix currency cloning usage
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@9605 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
796ca8aae2
commit
d8bd81162b
@ -141,8 +141,6 @@ xaccMallocAccount (QofBook *book)
|
|||||||
Account *
|
Account *
|
||||||
xaccCloneAccountSimple(const Account *from, QofBook *book)
|
xaccCloneAccountSimple(const Account *from, QofBook *book)
|
||||||
{
|
{
|
||||||
const char * ucom;
|
|
||||||
const gnc_commodity_table * comtbl;
|
|
||||||
Account *ret;
|
Account *ret;
|
||||||
|
|
||||||
if (!from || !book) return NULL;
|
if (!from || !book) return NULL;
|
||||||
@ -166,9 +164,7 @@ xaccCloneAccountSimple(const Account *from, QofBook *book)
|
|||||||
|
|
||||||
/* The new book should contain a commodity that matches
|
/* The new book should contain a commodity that matches
|
||||||
* the one in the old book. Find it, use it. */
|
* the one in the old book. Find it, use it. */
|
||||||
ucom = gnc_commodity_get_unique_name (from->commodity);
|
ret->commodity = gnc_commodity_obtain_twin (from->commodity, book);
|
||||||
comtbl = gnc_commodity_table_get_table (book);
|
|
||||||
ret->commodity = gnc_commodity_table_lookup_unique (comtbl, ucom);
|
|
||||||
|
|
||||||
ret->commodity_scu = from->commodity_scu;
|
ret->commodity_scu = from->commodity_scu;
|
||||||
ret->non_standard_scu = from->non_standard_scu;
|
ret->non_standard_scu = from->non_standard_scu;
|
||||||
@ -181,8 +177,6 @@ xaccCloneAccountSimple(const Account *from, QofBook *book)
|
|||||||
Account *
|
Account *
|
||||||
xaccCloneAccount (const Account *from, QofBook *book)
|
xaccCloneAccount (const Account *from, QofBook *book)
|
||||||
{
|
{
|
||||||
const char * ucom;
|
|
||||||
const gnc_commodity_table * comtbl;
|
|
||||||
Account *ret;
|
Account *ret;
|
||||||
|
|
||||||
if (!from || !book) return NULL;
|
if (!from || !book) return NULL;
|
||||||
@ -206,9 +200,7 @@ xaccCloneAccount (const Account *from, QofBook *book)
|
|||||||
|
|
||||||
/* The new book should contain a commodity that matches
|
/* The new book should contain a commodity that matches
|
||||||
* the one in the old book. Find it, use it. */
|
* the one in the old book. Find it, use it. */
|
||||||
ucom = gnc_commodity_get_unique_name (from->commodity);
|
ret->commodity = gnc_commodity_obtain_twin (from->commodity, book);
|
||||||
comtbl = gnc_commodity_table_get_table (book);
|
|
||||||
ret->commodity = gnc_commodity_table_lookup_unique (comtbl, ucom);
|
|
||||||
|
|
||||||
ret->commodity_scu = from->commodity_scu;
|
ret->commodity_scu = from->commodity_scu;
|
||||||
ret->non_standard_scu = from->non_standard_scu;
|
ret->non_standard_scu = from->non_standard_scu;
|
||||||
|
@ -932,6 +932,27 @@ gnc_commodity_table_set_table(QofBook *book, gnc_commodity_table *ct)
|
|||||||
gnc_commodity_table_destroy (old_ct);
|
gnc_commodity_table_destroy (old_ct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gnc_commodity *
|
||||||
|
gnc_commodity_obtain_twin (gnc_commodity *from, QofBook *book)
|
||||||
|
{
|
||||||
|
gnc_commodity *twin;
|
||||||
|
const char * ucom;
|
||||||
|
gnc_commodity_table * comtbl;
|
||||||
|
|
||||||
|
if (!from) return NULL;
|
||||||
|
comtbl = gnc_commodity_table_get_table (book);
|
||||||
|
if (!comtbl) return NULL;
|
||||||
|
|
||||||
|
ucom = gnc_commodity_get_unique_name (from);
|
||||||
|
twin = gnc_commodity_table_lookup_unique (comtbl, ucom);
|
||||||
|
if (!twin)
|
||||||
|
{
|
||||||
|
twin = gnc_commodity_clone (from);
|
||||||
|
twin = gnc_commodity_table_insert (comtbl, twin);
|
||||||
|
}
|
||||||
|
return twin;
|
||||||
|
}
|
||||||
|
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
* gnc_commodity_get_size
|
* gnc_commodity_get_size
|
||||||
* get the size of the commodity table
|
* get the size of the commodity table
|
||||||
|
@ -596,7 +596,7 @@ gnc_commodity * gnc_commodity_table_find_full(const gnc_commodity_table * t,
|
|||||||
* nothing), or another entries has the same namespace and mnemonic
|
* nothing), or another entries has the same namespace and mnemonic
|
||||||
* (updates the existing entry).
|
* (updates the existing entry).
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the book.
|
* @param table A pointer to the commodity table
|
||||||
*
|
*
|
||||||
* @param comm A pointer to the commodity to add.
|
* @param comm A pointer to the commodity to add.
|
||||||
*
|
*
|
||||||
@ -611,7 +611,7 @@ gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table * table,
|
|||||||
/** Remove a commodity from the commodity table. If the commodity to
|
/** Remove a commodity from the commodity table. If the commodity to
|
||||||
* remove doesn't exist, nothing happens.
|
* remove doesn't exist, nothing happens.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the book.
|
* @param table A pointer to the commodity table
|
||||||
*
|
*
|
||||||
* @param comm A pointer to the commodity to remove. */
|
* @param comm A pointer to the commodity to remove. */
|
||||||
void gnc_commodity_table_remove(gnc_commodity_table * table,
|
void gnc_commodity_table_remove(gnc_commodity_table * table,
|
||||||
@ -622,7 +622,7 @@ void gnc_commodity_table_remove(gnc_commodity_table * table,
|
|||||||
* etc. It also adds all of the ISO 4217 currencies to the commodity
|
* etc. It also adds all of the ISO 4217 currencies to the commodity
|
||||||
* table.
|
* table.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the book. */
|
* @param table A pointer to the commodity table */
|
||||||
gboolean gnc_commodity_table_add_default_data(gnc_commodity_table *table);
|
gboolean gnc_commodity_table_add_default_data(gnc_commodity_table *table);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
@ -639,8 +639,7 @@ guint gnc_commodity_table_get_number_of_namespaces(gnc_commodity_table* tbl);
|
|||||||
|
|
||||||
/** Test to see if the indicated namespace exits in the commodity table.
|
/** Test to see if the indicated namespace exits in the commodity table.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the current
|
* @param table A pointer to the commodity table
|
||||||
* book.
|
|
||||||
*
|
*
|
||||||
* @param namespace The new namespace to check.
|
* @param namespace The new namespace to check.
|
||||||
*
|
*
|
||||||
@ -661,8 +660,7 @@ GList * gnc_commodity_table_get_namespaces(const gnc_commodity_table * t);
|
|||||||
/** This function adds a new string to the list of commodity namespaces.
|
/** This function adds a new string to the list of commodity namespaces.
|
||||||
* If the new namespace already exists, nothing happens.
|
* If the new namespace already exists, nothing happens.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the current
|
* @param table A pointer to the commodity table
|
||||||
* book.
|
|
||||||
*
|
*
|
||||||
* @param namespace The new namespace to be added.*/
|
* @param namespace The new namespace to be added.*/
|
||||||
void gnc_commodity_table_add_namespace(gnc_commodity_table * table,
|
void gnc_commodity_table_add_namespace(gnc_commodity_table * table,
|
||||||
@ -671,8 +669,7 @@ void gnc_commodity_table_add_namespace(gnc_commodity_table * table,
|
|||||||
/** This function deletes a string from the list of commodity namespaces.
|
/** This function deletes a string from the list of commodity namespaces.
|
||||||
* If the namespace does not exist, nothing happens.
|
* If the namespace does not exist, nothing happens.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the current
|
* @param table A pointer to the commodity table
|
||||||
* book.
|
|
||||||
*
|
*
|
||||||
* @param namespace The namespace to be deleted.
|
* @param namespace The namespace to be deleted.
|
||||||
*
|
*
|
||||||
@ -687,8 +684,7 @@ void gnc_commodity_table_delete_namespace(gnc_commodity_table * t,
|
|||||||
|
|
||||||
/** Returns the number of commodities in the commodity table.
|
/** Returns the number of commodities in the commodity table.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the current
|
* @param table A pointer to the commodity table
|
||||||
* book.
|
|
||||||
*
|
*
|
||||||
* @return The number of commodities in the table. 0 if there are no
|
* @return The number of commodities in the table. 0 if there are no
|
||||||
* commodities, or the routine was passed a bad argument. */
|
* commodities, or the routine was passed a bad argument. */
|
||||||
@ -713,8 +709,7 @@ GList * gnc_commodity_table_get_commodities(const gnc_commodity_table * t,
|
|||||||
* field has been set. All matching commodities are queued onto a
|
* field has been set. All matching commodities are queued onto a
|
||||||
* list, and the head of that list is returned.
|
* list, and the head of that list is returned.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the current
|
* @param table A pointer to the commodity table
|
||||||
* book.
|
|
||||||
*
|
*
|
||||||
* @param expression Use the given expression as a filter on the
|
* @param expression Use the given expression as a filter on the
|
||||||
* commodities to be returned. If non-null, only commodities in
|
* commodities to be returned. If non-null, only commodities in
|
||||||
@ -733,8 +728,7 @@ GList * gnc_commodity_table_get_quotable_commodities(const gnc_commodity_table *
|
|||||||
* This table walk returns whenever the end of the table is reached,
|
* This table walk returns whenever the end of the table is reached,
|
||||||
* or the function returns FALSE.
|
* or the function returns FALSE.
|
||||||
*
|
*
|
||||||
* @param table A pointer to the commodity table for the current
|
* @param table A pointer to the commodity table
|
||||||
* book.
|
|
||||||
*
|
*
|
||||||
* @param f The function to call for each commodity.
|
* @param f The function to call for each commodity.
|
||||||
*
|
*
|
||||||
@ -772,6 +766,13 @@ void gnc_commodity_table_destroy(gnc_commodity_table * table);
|
|||||||
*/
|
*/
|
||||||
void gnc_commodity_table_set_table(QofBook *book, gnc_commodity_table *ct);
|
void gnc_commodity_table_set_table(QofBook *book, gnc_commodity_table *ct);
|
||||||
|
|
||||||
|
/** Given the commodity 'from', this routine will find and return the
|
||||||
|
* equivalent commodity (commodity with the same 'unique name') in
|
||||||
|
* the indicated book. This routine is primarily useful for setting
|
||||||
|
* up clones of things across multiple books.
|
||||||
|
*/
|
||||||
|
gnc_commodity * gnc_commodity_obtain_twin (gnc_commodity *from, QofBook *book);
|
||||||
|
|
||||||
/** You should probably not be using gnc_commodity_table_register()
|
/** You should probably not be using gnc_commodity_table_register()
|
||||||
* It is an internal routine for registering the gncObject for the
|
* It is an internal routine for registering the gncObject for the
|
||||||
* commodity table.
|
* commodity table.
|
||||||
|
Loading…
Reference in New Issue
Block a user