gnucash maint: Multiple changes pushed
Christopher Lam
clam at code.gnucash.org
Sat Apr 11 06:59:15 EDT 2020
Updated via https://github.com/Gnucash/gnucash/commit/4524196f (commit)
via https://github.com/Gnucash/gnucash/commit/95fcbdd6 (commit)
via https://github.com/Gnucash/gnucash/commit/77240dba (commit)
from https://github.com/Gnucash/gnucash/commit/3b0c91bb (commit)
commit 4524196ff1fad6f3a0ab528984bf3073370bf1d3
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Thu Apr 9 06:26:27 2020 +0800
[window-reconcile] when reconciling, warn splits recndate>statement_date
diff --git a/gnucash/gnome/window-reconcile.c b/gnucash/gnome/window-reconcile.c
index dfad6257c..dab91862c 100644
--- a/gnucash/gnome/window-reconcile.c
+++ b/gnucash/gnome/window-reconcile.c
@@ -1867,6 +1867,43 @@ recnWindowWithBalance (GtkWidget *parent, Account *account, gnc_numeric new_endi
g_signal_connect (recnData->window, "key_press_event",
G_CALLBACK(recn_key_press_cb), recnData);
+
+ /* if account has a reconciled split where reconciled_date is
+ later than statement_date, emit a warning into statusbar */
+ {
+ GtkStatusbar *bar = GTK_STATUSBAR (statusbar);
+ guint context = gtk_statusbar_get_context_id (bar, "future_dates");
+ GtkWidget *box = gtk_statusbar_get_message_area (bar);
+ GtkWidget *image = gtk_image_new_from_icon_name
+ ("dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR);
+
+ for (GList *n = xaccAccountGetSplitList (account); n; n = n->next)
+ {
+ Split* split = n->data;
+ time64 recn_date = xaccSplitGetDateReconciled (split);
+ if ((xaccSplitGetReconcile (split) != YREC) ||
+ (recn_date <= statement_date))
+ continue;
+
+ PWARN ("split posting_date=%s, recn_date=%s",
+ qof_print_date (xaccTransGetDate (xaccSplitGetParent (split))),
+ qof_print_date (recn_date));
+
+ gtk_statusbar_push (bar, context, _("WARNING! Account contains \
+splits whose reconcile date is after statement date. Reconciliation may be \
+difficult."));
+
+ gtk_widget_set_tooltip_text (GTK_WIDGET (bar), _("This account \
+has splits whose Reconciled Date is after this reconciliation statement date. \
+These splits may make reconciliation difficult. If this is the case, you may \
+use Find Transactions to find them, unreconcile, and re-reconcile."));
+
+ gtk_box_pack_start (GTK_BOX(box), image, FALSE, FALSE, 0);
+ gtk_box_reorder_child (GTK_BOX(box), image, 0);
+ break;
+ }
+ }
+
/* The main area */
{
GtkWidget *frame = gtk_frame_new(NULL);
commit 95fcbdd692f01715cac937d667ed33f6cd3b5d93
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Thu Apr 9 06:25:47 2020 +0800
[window-reconcile] when inputing statement_date, warn if after today
diff --git a/gnucash/gnome/window-reconcile.c b/gnucash/gnome/window-reconcile.c
index 22e2cbb53..dfad6257c 100644
--- a/gnucash/gnome/window-reconcile.c
+++ b/gnucash/gnome/window-reconcile.c
@@ -114,6 +114,8 @@ typedef struct _startRecnWindowData
GtkWidget *startRecnWindow; /* the startRecnWindow dialog */
GtkWidget *xfer_button; /* the dialog's interest transfer button */
GtkWidget *date_value; /* the dialog's ending date field */
+ GtkWidget *future_icon;
+ GtkWidget *future_text;
GNCAmountEdit *end_value; /* the dialog's ending balance amount edit */
gnc_numeric original_value; /* the dialog's original ending balance */
gboolean user_set_value; /* the user changed the ending value */
@@ -383,9 +385,57 @@ gnc_start_recn_date_changed (GtkWidget *widget, startRecnWindowData *data)
gnc_numeric new_balance;
time64 new_date;
+ gboolean show_warning = FALSE;
+ gint days_after_today;
+ static const time64 secs_per_day = 86400;
+ static const time64 secs_per_hour = 3600;
+
+ new_date = gnc_date_edit_get_date_end (gde);
+
+ /* Add secs_per_hour to the difference to compensate for the short
+ * day when transitioning from standard to daylight time.
+ */
+ days_after_today = (gnc_time64_get_day_end (new_date) -
+ gnc_time64_get_today_end () +
+ secs_per_hour) / secs_per_day;
+
+ if (days_after_today > 0)
+ {
+ /* Translators: This is a ngettext(3) message, %d is the
+ number of days in the future */
+ gchar *str = g_strdup_printf
+ (ngettext ("Statement Date is %d day after today.",
+ "Statement Date is %d days after today.",
+ days_after_today),
+ days_after_today);
+
+ /* Translators: This is a ngettext(3) message, %d is the
+ number of days in the future */
+ gchar *tip_start = g_strdup_printf
+ (ngettext ("The statement date you have chosen is %d day in the future.",
+ "The statement date you have chosen is %d days in the future.",
+ days_after_today),
+ days_after_today);
+
+ gchar *tip_end = g_strdup (_("This may cause issues for future reconciliation \
+actions on this account. Please double-check this is the date you intended."));
+ gchar *tip = g_strdup_printf ("%s %s", tip_start, tip_end);
+
+ show_warning = TRUE;
+
+ gtk_label_set_text (GTK_LABEL(data->future_text), str);
+ gtk_widget_set_tooltip_text (GTK_WIDGET(data->future_text), tip);
+ g_free (str);
+ g_free (tip_end);
+ g_free (tip_start);
+ g_free (tip);
+ }
+ gtk_widget_set_visible (GTK_WIDGET(data->future_icon), show_warning);
+ gtk_widget_set_visible (GTK_WIDGET(data->future_text), show_warning);
+
if (data->user_set_value)
return;
- new_date = gnc_date_edit_get_date_end (gde);
+
/* get the balance for the account as of the new date */
new_balance = gnc_ui_account_get_balance_as_of_date (data->account, new_date,
data->include_children);
@@ -771,6 +821,10 @@ startRecnWindow(GtkWidget *parent, Account *account,
data.end_value = GNC_AMOUNT_EDIT(end_value);
data.original_value = *new_ending;
data.user_set_value = FALSE;
+
+ data.future_icon = GTK_WIDGET(gtk_builder_get_object (builder, "future_icon"));
+ data.future_text = GTK_WIDGET(gtk_builder_get_object (builder, "future_text"));
+
box = GTK_WIDGET(gtk_builder_get_object (builder, "ending_value_box"));
gtk_box_pack_start(GTK_BOX(box), end_value, TRUE, TRUE, 0);
label = GTK_WIDGET(gtk_builder_get_object (builder, "end_label"));
@@ -821,6 +875,9 @@ startRecnWindow(GtkWidget *parent, Account *account,
gtk_widget_show_all(dialog);
+ gtk_widget_hide (data.future_text);
+ gtk_widget_hide (data.future_icon);
+
gtk_widget_grab_focus(gnc_amount_edit_gtk_entry
(GNC_AMOUNT_EDIT (end_value)));
}
diff --git a/gnucash/gtkbuilder/window-reconcile.glade b/gnucash/gtkbuilder/window-reconcile.glade
index ee35d457b..fce2fd1ce 100644
--- a/gnucash/gtkbuilder/window-reconcile.glade
+++ b/gnucash/gtkbuilder/window-reconcile.glade
@@ -219,6 +219,43 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkBox" id="future_warning">
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkImage" id="future_icon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-dialog-warning</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="future_text">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Statement Date is after today</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
commit 77240dba43446d11ea850a55e167cb4084e5ed04
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Wed Apr 8 20:09:54 2020 +0800
[find-transactions] add search for reconciled date
diff --git a/gnucash/gnome/dialog-find-transactions.c b/gnucash/gnome/dialog-find-transactions.c
index 4c25ae766..67198480a 100644
--- a/gnucash/gnome/dialog-find-transactions.c
+++ b/gnucash/gnome/dialog-find-transactions.c
@@ -126,6 +126,8 @@ gnc_ui_find_transactions_dialog_create(GtkWindow *parent, GNCLedgerDisplay * ori
params = gnc_search_param_prepend (params, N_("Date Posted"), NULL,
type, SPLIT_TRANS, TRANS_DATE_POSTED,
NULL);
+ params = gnc_search_param_prepend (params, N_("Reconciled Date"), NULL,
+ type, SPLIT_DATE_RECONCILED, NULL);
params = gnc_search_param_prepend (params, (num_action
? N_("Number/Action")
: N_("Action")), NULL,
Summary of changes:
gnucash/gnome/dialog-find-transactions.c | 2 +
gnucash/gnome/window-reconcile.c | 96 ++++++++++++++++++++++++++++++-
gnucash/gtkbuilder/window-reconcile.glade | 37 ++++++++++++
3 files changed, 134 insertions(+), 1 deletion(-)
More information about the gnucash-changes
mailing list