gnucash maint: Multiple changes pushed
John Ralls
jralls at code.gnucash.org
Sat Aug 7 17:40:32 EDT 2021
Updated via https://github.com/Gnucash/gnucash/commit/be6fb1ab (commit)
via https://github.com/Gnucash/gnucash/commit/3dceb086 (commit)
via https://github.com/Gnucash/gnucash/commit/2ee89f66 (commit)
via https://github.com/Gnucash/gnucash/commit/3f1e2499 (commit)
from https://github.com/Gnucash/gnucash/commit/bedc85af (commit)
commit be6fb1abe2b7fac27c4aefc4b32415bd1c73ab92
Merge: bedc85afa 3dceb0868
Author: John Ralls <jralls at ceridwen.us>
Date: Sat Aug 7 14:39:57 2021 -0700
Merge Chris Good's 'bug798205ImpOfx' into maint.
commit 3dceb0868e77f931bbf31e413a1c1bfe98f8b0ff
Author: goodvibes2 <goodchris96 at gmail.com>
Date: Tue Jul 27 13:05:58 2021 +1000
Delete functions no longer used after mods for bug 798205
diff --git a/gnucash/import-export/import-backend.c b/gnucash/import-export/import-backend.c
index 8e409e6fb..60b01459b 100644
--- a/gnucash/import-export/import-backend.c
+++ b/gnucash/import-export/import-backend.c
@@ -1048,106 +1048,6 @@ gnc_import_process_trans_item (GncImportMatchMap *matchmap,
return FALSE;
}
-/********************************************************************\
- * check_trans_online_id() Callback function used by
- * gnc_import_exists_online_id. Takes pointers to transaction and split,
- * returns 0 if their online_ids do NOT match, or if the split
- * belongs to the transaction
-\********************************************************************/
-static gint check_trans_online_id(Transaction *trans1, void *user_data)
-{
- Account *account;
- Split *split1;
- Split *split2 = user_data;
- const gchar *online_id1;
- const gchar *online_id2;
-
- account = xaccSplitGetAccount(split2);
- split1 = xaccTransFindSplitByAccount(trans1, account);
- if (split1 == split2)
- return 0;
-
- /* hack - we really want to iterate over the _splits_ of the account
- instead of the transactions */
- g_assert(split1 != NULL);
-
- if (gnc_import_split_has_online_id(split1))
- online_id1 = gnc_import_get_split_online_id(split1);
- else
- online_id1 = gnc_import_get_trans_online_id(trans1);
-
- online_id2 = gnc_import_get_split_online_id(split2);
-
- if ((online_id1 == NULL) ||
- (online_id2 == NULL) ||
- (strcmp(online_id1, online_id2) != 0))
- {
- return 0;
- }
- else
- {
- /*printf("test_trans_online_id(): Duplicate found\n");*/
- return 1;
- }
-}
-
-static gint collect_trans_online_id(Transaction *trans, void *user_data)
-{
- Split *split;
- GHashTable *id_hash = user_data;
- int i=0;
-
- const gchar* online_id = gnc_import_get_trans_online_id (trans);
- if (online_id)
- g_hash_table_add (id_hash, (void*) online_id);
-
- for (GList *splits = xaccTransGetSplitList (trans); splits; splits = splits->next)
- {
- if (gnc_import_split_has_online_id (splits->data))
- g_hash_table_add(id_hash, (void*) gnc_import_get_split_online_id (splits->data));
- }
- return 0;
-}
-
-/** Checks whether the given transaction's online_id already exists in
- its parent account. */
-gboolean gnc_import_exists_online_id (Transaction *trans, GHashTable* acct_id_hash)
-{
- gboolean online_id_exists = FALSE;
- Account *dest_acct;
- Split *source_split;
-
- /* Look for an online_id in the first split */
- source_split = xaccTransGetSplit(trans, 0);
- g_assert(source_split);
-
- // No online id, no point in continuing. We'd crash if we tried.
- if (!gnc_import_get_split_online_id (source_split))
- return FALSE;
- // Create a hash per account of a hash of all transactions IDs. Then the test below will be fast if
- // we have many transactions to import.
- dest_acct = xaccSplitGetAccount (source_split);
- if (!g_hash_table_contains (acct_id_hash, dest_acct))
- {
- GHashTable* new_hash = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (acct_id_hash, dest_acct, new_hash);
- xaccAccountForEachTransaction (dest_acct, collect_trans_online_id, new_hash);
- }
- online_id_exists = g_hash_table_contains (g_hash_table_lookup (acct_id_hash, dest_acct),
- gnc_import_get_split_online_id (source_split));
-
- /* If it does, abort the process for this transaction, since it is
- already in the system. */
- if (online_id_exists == TRUE)
- {
- DEBUG("%s", "Transaction with same online ID exists, destroying current transaction");
- xaccTransDestroy(trans);
- xaccTransCommitEdit(trans);
- }
- return online_id_exists;
-}
-
-
/* ******************************************************************
*/
diff --git a/gnucash/import-export/import-backend.h b/gnucash/import-export/import-backend.h
index b524d1835..69cd2bc99 100644
--- a/gnucash/import-export/import-backend.h
+++ b/gnucash/import-export/import-backend.h
@@ -57,15 +57,6 @@ typedef enum _action
/** @name Non-GUI Functions */
/*@{*/
-/** Checks whether the given transaction's online_id already exists in
- * its parent account. The given transaction has to be open for
- * editing. If a matching online_id exists, the transaction is
- * destroyed (!) and TRUE is returned, otherwise FALSE is returned.
- *
- * @param trans The transaction for which to check for an existing
- * online_id. */
-gboolean gnc_import_exists_online_id (Transaction *trans, GHashTable* acct_id_hash);
-
/** Evaluates the match between trans_info and split using the provided parameters.
*
* @param trans_info The TransInfo for the imported transaction
diff --git a/gnucash/import-export/import-main-matcher.c b/gnucash/import-export/import-main-matcher.c
index 07f5a1296..10c916135 100644
--- a/gnucash/import-export/import-main-matcher.c
+++ b/gnucash/import-export/import-main-matcher.c
@@ -76,7 +76,6 @@ struct _main_matcher_info
gboolean add_toggled; // flag to indicate that add has been toggled to stop selection
gint id;
GSList* temp_trans_list; // Temporary list of imported transactions
- GHashTable* acct_id_hash; // Hash table, per account, of list of transaction IDs.
GSList* edited_accounts; // List of accounts currently edited.
};
@@ -144,14 +143,6 @@ static gboolean query_tooltip_tree_view_cb (GtkWidget *widget, gint x, gint y,
gpointer user_data);
/* end local prototypes */
-static
-gboolean delete_hash (gpointer key, gpointer value, gpointer user_data)
-{
- // Value is a hash table that needs to be destroyed.
- g_hash_table_destroy (value);
- return TRUE;
-}
-
static void
update_all_balances (GNCImportMainMatcher *info)
{
@@ -218,8 +209,6 @@ gnc_gen_trans_list_delete (GNCImportMainMatcher *info)
// We've deferred balance computations on many accounts. Let's do it now that we're done.
update_all_balances (info);
- g_hash_table_foreach_remove (info->acct_id_hash, delete_hash, NULL);
- info->acct_id_hash = NULL;
g_free (info);
}
@@ -1133,8 +1122,6 @@ gnc_gen_trans_init_view (GNCImportMainMatcher *info,
G_CALLBACK(gnc_gen_trans_onButtonPressed_cb), info);
g_signal_connect (view, "popup-menu",
G_CALLBACK(gnc_gen_trans_onPopupMenu_cb), info);
-
- info->acct_id_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
}
static void
diff --git a/gnucash/import-export/import-utilities.c b/gnucash/import-export/import-utilities.c
index 8d672d4e0..4be49b323 100644
--- a/gnucash/import-export/import-utilities.c
+++ b/gnucash/import-export/import-utilities.c
@@ -57,29 +57,6 @@ void gnc_import_set_acc_online_id (Account *account, const gchar *id)
xaccAccountCommitEdit (account);
}
-const gchar * gnc_import_get_trans_online_id (Transaction * transaction)
-{
- gchar *id = NULL;
- qof_instance_get (QOF_INSTANCE (transaction), "online-id", &id, NULL);
- return id;
-}
-/* Not actually used */
-void gnc_import_set_trans_online_id (Transaction *transaction,
- const gchar *id)
-{
- g_return_if_fail (transaction != NULL);
- xaccTransBeginEdit (transaction);
- qof_instance_set (QOF_INSTANCE (transaction), "online-id", id, NULL);
- xaccTransCommitEdit (transaction);
-}
-
-gboolean gnc_import_trans_has_online_id(Transaction * transaction)
-{
- const gchar * online_id;
- online_id = gnc_import_get_trans_online_id(transaction);
- return (online_id != NULL && strlen(online_id) > 0);
-}
-
const gchar * gnc_import_get_split_online_id (Split * split)
{
gchar *id = NULL;
diff --git a/gnucash/import-export/import-utilities.h b/gnucash/import-export/import-utilities.h
index 1ef733d8b..a39d64157 100644
--- a/gnucash/import-export/import-utilities.h
+++ b/gnucash/import-export/import-utilities.h
@@ -49,17 +49,6 @@ const gchar * gnc_import_get_acc_online_id(Account * account);
void gnc_import_set_acc_online_id(Account * account,
const gchar * string_value);
/** @} */
-/** @name Setter-getters
- Setter and getter functions for the online_id field for
- Transactions.
- @{
-*/
-const gchar * gnc_import_get_trans_online_id(Transaction * transaction);
-void gnc_import_set_trans_online_id(Transaction * transaction,
- const gchar * string_value);
-/** @} */
-
-gboolean gnc_import_trans_has_online_id(Transaction * transaction);
/** @name Setter-getters
Setter and getter functions for the online_id field for
commit 2ee89f6693c031c280432751c4dc5c01b0499877
Author: goodvibes2 <goodchris96 at gmail.com>
Date: Tue Jul 27 12:15:25 2021 +1000
Do not drop a potential match just because it has an online_id.
Now that we don't exclude from import a transaction with an FITID that
matches an already existing transaction, if one accidentally re-imports
a transaction, this allows it to be automatically matched against the
previously imported transaction.
diff --git a/gnucash/import-export/import-main-matcher.c b/gnucash/import-export/import-main-matcher.c
index 584c41f03..07f5a1296 100644
--- a/gnucash/import-export/import-main-matcher.c
+++ b/gnucash/import-export/import-main-matcher.c
@@ -1783,8 +1783,6 @@ create_hash_of_potential_matches (GList *candidate_txns,
{
Account* split_account;
GSList* split_list;
- if (gnc_import_split_has_online_id (candidate->data))
- continue;
split_account = xaccSplitGetAccount (candidate->data);
/* g_hash_table_steal_extended would do the two calls in one shot but is
* not available until GLib 2.58.
commit 3f1e24991f7e78bed7a96be6929e5b6c0bda86e0
Author: goodvibes2 <goodchris96 at gmail.com>
Date: Tue Jul 27 11:57:45 2021 +1000
Bug 798205 Do not exclude from import a transaction that has an FITID
which matches an already existing split. This is because it
(1) may be a coincidence and therefore the transaction needs to be added
or
(2) could be on a transfer from the account being imported to another
bank account which has already been imported, and so needs to be
matched, not added.
diff --git a/gnucash/import-export/import-main-matcher.c b/gnucash/import-export/import-main-matcher.c
index 0c31c5a52..584c41f03 100644
--- a/gnucash/import-export/import-main-matcher.c
+++ b/gnucash/import-export/import-main-matcher.c
@@ -1715,16 +1715,11 @@ gnc_gen_trans_list_add_trans_with_ref_id (GNCImportMainMatcher *gui, Transaction
g_assert (gui);
g_assert (trans);
- if (gnc_import_exists_online_id (trans, gui->acct_id_hash))
- return;
- else
- {
- transaction_info = gnc_import_TransInfo_new (trans, NULL);
- gnc_import_TransInfo_set_ref_id (transaction_info, ref_id);
- // It's much faster to gather the imported transactions into a GSList than directly into the
- // treeview.
- gui->temp_trans_list = g_slist_prepend (gui->temp_trans_list, transaction_info);
- }
+ transaction_info = gnc_import_TransInfo_new (trans, NULL);
+ gnc_import_TransInfo_set_ref_id (transaction_info, ref_id);
+ // It's much faster to gather the imported transactions into a GSList than directly into the
+ // treeview.
+ gui->temp_trans_list = g_slist_prepend (gui->temp_trans_list, transaction_info);
return;
}
Summary of changes:
gnucash/import-export/import-backend.c | 100 ----------------------------
gnucash/import-export/import-backend.h | 9 ---
gnucash/import-export/import-main-matcher.c | 30 ++-------
gnucash/import-export/import-utilities.c | 23 -------
gnucash/import-export/import-utilities.h | 11 ---
5 files changed, 5 insertions(+), 168 deletions(-)
More information about the gnucash-changes
mailing list