mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Merge Jean Laroche's 'fix_797042_ofx_return' into maint.
This commit is contained in:
commit
b7f6cfe607
@ -939,7 +939,7 @@ txn_accountinfo_cb(AB_IMEXPORTER_ACCOUNTINFO *element, gpointer user_data)
|
|||||||
if (!data->generic_importer)
|
if (!data->generic_importer)
|
||||||
{
|
{
|
||||||
data->generic_importer = gnc_gen_trans_list_new(data->parent, NULL,
|
data->generic_importer = gnc_gen_trans_list_new(data->parent, NULL,
|
||||||
TRUE, 14);
|
TRUE, 14, TRUE);
|
||||||
if (data->execute_txns)
|
if (data->execute_txns)
|
||||||
{
|
{
|
||||||
gnc_gen_trans_list_add_tp_cb(data->generic_importer,
|
gnc_gen_trans_list_add_tp_cb(data->generic_importer,
|
||||||
|
@ -177,6 +177,21 @@ void gnc_gen_trans_list_delete (GNCImportMainMatcher *info)
|
|||||||
g_free (info);
|
g_free (info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean gnc_gen_trans_list_empty(GNCImportMainMatcher *info)
|
||||||
|
{
|
||||||
|
GtkTreeModel *model;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GNCImportTransInfo *trans_info;
|
||||||
|
g_assert (info);
|
||||||
|
model = gtk_tree_view_get_model (info->view);
|
||||||
|
return !gtk_tree_model_get_iter_first (model, &iter);
|
||||||
|
}
|
||||||
|
|
||||||
|
void gnc_gen_trans_list_show_all(GNCImportMainMatcher *info)
|
||||||
|
{
|
||||||
|
gtk_widget_show_all (GTK_WIDGET (info->main_widget));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
on_matcher_ok_clicked (GtkButton *button, GNCImportMainMatcher *info)
|
on_matcher_ok_clicked (GtkButton *button, GNCImportMainMatcher *info)
|
||||||
{
|
{
|
||||||
@ -190,7 +205,11 @@ on_matcher_ok_clicked (GtkButton *button, GNCImportMainMatcher *info)
|
|||||||
|
|
||||||
model = gtk_tree_view_get_model (info->view);
|
model = gtk_tree_view_get_model (info->view);
|
||||||
if (!gtk_tree_model_get_iter_first (model, &iter))
|
if (!gtk_tree_model_get_iter_first (model, &iter))
|
||||||
|
{
|
||||||
|
// No transaction, we can just close the dialog.
|
||||||
|
gnc_gen_trans_list_delete (info);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Don't run any queries and/or split sorts while processing the matcher
|
/* Don't run any queries and/or split sorts while processing the matcher
|
||||||
results. */
|
results. */
|
||||||
@ -893,7 +912,8 @@ show_account_column_toggled_cb (GtkToggleButton *togglebutton,
|
|||||||
GNCImportMainMatcher *gnc_gen_trans_list_new (GtkWidget *parent,
|
GNCImportMainMatcher *gnc_gen_trans_list_new (GtkWidget *parent,
|
||||||
const gchar* heading,
|
const gchar* heading,
|
||||||
gboolean all_from_same_account,
|
gboolean all_from_same_account,
|
||||||
gint match_date_hardlimit)
|
gint match_date_hardlimit,
|
||||||
|
gboolean show_all)
|
||||||
{
|
{
|
||||||
GNCImportMainMatcher *info;
|
GNCImportMainMatcher *info;
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
@ -948,6 +968,7 @@ GNCImportMainMatcher *gnc_gen_trans_list_new (GtkWidget *parent,
|
|||||||
gtk_label_set_text (GTK_LABEL (heading_label), heading);
|
gtk_label_set_text (GTK_LABEL (heading_label), heading);
|
||||||
|
|
||||||
gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(info->main_widget), GTK_WINDOW (parent));
|
gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(info->main_widget), GTK_WINDOW (parent));
|
||||||
|
if(show_all)
|
||||||
gtk_widget_show_all (GTK_WIDGET (info->main_widget));
|
gtk_widget_show_all (GTK_WIDGET (info->main_widget));
|
||||||
|
|
||||||
info->transaction_processed_cb = NULL;
|
info->transaction_processed_cb = NULL;
|
||||||
|
@ -62,12 +62,15 @@ typedef void (*GNCTransactionProcessedCB) (GNCImportTransInfo *trans_info,
|
|||||||
* with paper checks (e.g. OFX, QIF), values like 42 (days) seem more
|
* with paper checks (e.g. OFX, QIF), values like 42 (days) seem more
|
||||||
* appropriate.
|
* appropriate.
|
||||||
*
|
*
|
||||||
|
@param show_all if true, all widgets are shown
|
||||||
|
*
|
||||||
* @return A pointer to the GNCImportMainMatcher which has been setup.
|
* @return A pointer to the GNCImportMainMatcher which has been setup.
|
||||||
*/
|
*/
|
||||||
GNCImportMainMatcher *gnc_gen_trans_list_new (GtkWidget *parent,
|
GNCImportMainMatcher *gnc_gen_trans_list_new (GtkWidget *parent,
|
||||||
const gchar* heading,
|
const gchar* heading,
|
||||||
gboolean all_from_same_account,
|
gboolean all_from_same_account,
|
||||||
gint match_date_hardlimit);
|
gint match_date_hardlimit,
|
||||||
|
gboolean show_all);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -170,13 +173,28 @@ void gnc_gen_trans_list_add_trans_with_ref_id(GNCImportMainMatcher *gui, Transac
|
|||||||
/** Run this dialog and return only after the user pressed Ok, Cancel,
|
/** Run this dialog and return only after the user pressed Ok, Cancel,
|
||||||
or closed the window. This means that all actual importing will
|
or closed the window. This means that all actual importing will
|
||||||
have been finished upon returning.
|
have been finished upon returning.
|
||||||
|
* @param info A pointer to a the GNCImportMainMatcher structure.
|
||||||
|
* @return The boolean return value of the dialog run.
|
||||||
*/
|
*/
|
||||||
gboolean gnc_gen_trans_list_run (GNCImportMainMatcher *info);
|
gboolean gnc_gen_trans_list_run (GNCImportMainMatcher *info);
|
||||||
|
|
||||||
|
|
||||||
/** Returns the widget of this dialog.
|
/** Returns the widget of this dialog.
|
||||||
|
* @param info A pointer to a the GNCImportMainMatcher structure.
|
||||||
|
* @return A GtkWidget pointer to the dialog's widget.
|
||||||
*/
|
*/
|
||||||
GtkWidget *gnc_gen_trans_list_widget (GNCImportMainMatcher *info);
|
GtkWidget *gnc_gen_trans_list_widget (GNCImportMainMatcher *info);
|
||||||
|
|
||||||
|
/** Checks whether there are no transactions to match.
|
||||||
|
* @param info A pointer to a the GNCImportMainMatcher structure.
|
||||||
|
* @return A boolean indicating whether the transaction list is empty.
|
||||||
|
*/
|
||||||
|
gboolean gnc_gen_trans_list_empty(GNCImportMainMatcher *info);
|
||||||
|
|
||||||
|
/** Shows widgets.
|
||||||
|
* @param info A pointer to a the GNCImportMainMatcher structure.
|
||||||
|
*/
|
||||||
|
void gnc_gen_trans_list_show_all(GNCImportMainMatcher *info);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
@ -66,6 +66,7 @@ static QofLogModule log_module = GNC_MOD_IMPORT;
|
|||||||
GNCImportMainMatcher *gnc_ofx_importer_gui = NULL;
|
GNCImportMainMatcher *gnc_ofx_importer_gui = NULL;
|
||||||
static gboolean auto_create_commodity = FALSE;
|
static gboolean auto_create_commodity = FALSE;
|
||||||
static Account *ofx_parent_account = NULL;
|
static Account *ofx_parent_account = NULL;
|
||||||
|
static gint num_trans_processed = 0;
|
||||||
|
|
||||||
GList *ofx_created_commodites = NULL;
|
GList *ofx_created_commodites = NULL;
|
||||||
|
|
||||||
@ -889,7 +890,7 @@ int ofx_proc_transaction_cb(struct OfxTransactionData data, void *user_data)
|
|||||||
xaccTransDestroy(transaction);
|
xaccTransDestroy(transaction);
|
||||||
xaccTransCommitEdit(transaction);
|
xaccTransCommitEdit(transaction);
|
||||||
}
|
}
|
||||||
|
num_trans_processed += 1;
|
||||||
return 0;
|
return 0;
|
||||||
}//end ofx_proc_transaction()
|
}//end ofx_proc_transaction()
|
||||||
|
|
||||||
@ -1064,7 +1065,7 @@ void gnc_file_ofx_import (GtkWindow *parent)
|
|||||||
DEBUG("Filename found: %s", selected_filename);
|
DEBUG("Filename found: %s", selected_filename);
|
||||||
|
|
||||||
/* Create the Generic transaction importer GUI. */
|
/* Create the Generic transaction importer GUI. */
|
||||||
gnc_ofx_importer_gui = gnc_gen_trans_list_new (GTK_WIDGET(parent), NULL, FALSE, 42);
|
gnc_ofx_importer_gui = gnc_gen_trans_list_new (GTK_WIDGET(parent), NULL, FALSE, 42, FALSE);
|
||||||
|
|
||||||
/* Look up the needed preferences */
|
/* Look up the needed preferences */
|
||||||
auto_create_commodity =
|
auto_create_commodity =
|
||||||
@ -1085,8 +1086,21 @@ void gnc_file_ofx_import (GtkWindow *parent)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
DEBUG("Opening selected file");
|
DEBUG("Opening selected file");
|
||||||
|
num_trans_processed = 0;
|
||||||
libofx_proc_file(libofx_context, selected_filename, AUTODETECT);
|
libofx_proc_file(libofx_context, selected_filename, AUTODETECT);
|
||||||
|
// Now would be a good time to see whether the view has anything in it!
|
||||||
|
if(gnc_gen_trans_list_empty(gnc_ofx_importer_gui))
|
||||||
|
{
|
||||||
|
gnc_gen_trans_list_delete (gnc_ofx_importer_gui);
|
||||||
|
if(num_trans_processed)
|
||||||
|
gnc_info_dialog(parent,_("OFX file imported, %d transactions processed, no transactions to match"),num_trans_processed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gnc_gen_trans_list_show_all(gnc_ofx_importer_gui);
|
||||||
|
}
|
||||||
g_free(selected_filename);
|
g_free(selected_filename);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ofx_created_commodites)
|
if (ofx_created_commodites)
|
||||||
|
Loading…
Reference in New Issue
Block a user