Skip to content

Commit

Permalink
Bug 476114 - Goto register by date feature req
Browse files Browse the repository at this point in the history
Adds ability to jump to arbitrary date.

Finds first split whose posted date >= specified date, and jump to it.
  • Loading branch information
christopherlam committed Sep 3, 2020
1 parent befc405 commit c142416
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
48 changes: 48 additions & 0 deletions gnucash/gnome/gnc-plugin-page-register.c
Expand Up @@ -232,6 +232,8 @@ static void gnc_plugin_page_register_cmd_delete_transaction (GtkAction* action,
GncPluginPageRegister* plugin_page);
static void gnc_plugin_page_register_cmd_blank_transaction (GtkAction* action,
GncPluginPageRegister* plugin_page);
static void gnc_plugin_page_register_cmd_goto_date (GtkAction* action,
GncPluginPageRegister* page);
static void gnc_plugin_page_register_cmd_duplicate_transaction (
GtkAction* action, GncPluginPageRegister* plugin_page);
static void gnc_plugin_page_register_cmd_reinitialize_transaction (
Expand Down Expand Up @@ -479,6 +481,11 @@ static GtkActionEntry gnc_plugin_page_register_actions [] =
N_ ("Move to the blank transaction at the bottom of the register"),
G_CALLBACK (gnc_plugin_page_register_cmd_blank_transaction)
},
{
"GotoDateAction", "x-office-calendar", N_ ("_Go to Date"), "<primary>G",
N_ ("Move to the the split at specified date"),
G_CALLBACK (gnc_plugin_page_register_cmd_goto_date)
},
{
"EditExchangeRateAction", NULL, N_ ("Edit E_xchange Rate"), NULL,
N_ ("Edit the exchange rate for the current transaction"),
Expand Down Expand Up @@ -4688,6 +4695,47 @@ gnc_plugin_page_register_cmd_blank_transaction (GtkAction* action,
LEAVE (" ");
}

static void
gnc_plugin_page_register_cmd_goto_date (GtkAction* action,
GncPluginPageRegister* page)
{
GNCSplitReg* gsr;
Query* query;
time64 date = gnc_time (NULL);
Split *split = NULL;

ENTER ("(action %p, plugin_page %p)", action, page);
g_return_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (page));

if (!gnc_dup_time64_dialog (gnc_plugin_page_get_window (GNC_PLUGIN_PAGE (page)),
_("Go to Date"), _("Go to Date"), &date))
{
LEAVE ("goto_date cancelled");
return;
}

gsr = gnc_plugin_page_register_get_gsr (GNC_PLUGIN_PAGE (page));
query = gnc_plugin_page_register_get_query (GNC_PLUGIN_PAGE (page));

for (GList *lp = qof_query_run (query); lp; lp = lp->next)
{
if (xaccTransGetDate (xaccSplitGetParent (lp->data)) >= date)
{
split = lp->data;
break;
}
}

/* Test for visibility of split */
/* if (gnc_split_reg_clear_filter_for_split (gsr, split)) */
/* gnc_plugin_page_register_clear_current_filter (GNC_PLUGIN_PAGE(page)); */

if (split)
gnc_split_reg_jump_to_split (gsr, split);

LEAVE (" ");
}

static void
gnc_plugin_page_register_cmd_duplicate_transaction (GtkAction* action,
GncPluginPageRegister* plugin_page)
Expand Down
2 changes: 2 additions & 0 deletions gnucash/ui/gnc-plugin-page-register-ui.xml
Expand Up @@ -48,6 +48,7 @@
<menuitem name="ActionLots" action="ActionsLotsAction"/>
<separator name="ActionsSep4"/>
<menuitem name="BlankTransaction" action="BlankTransactionAction"/>
<menuitem name="GotoDate" action="GotoDateAction"/>
<menuitem name="SplitTransaction" action="SplitTransactionAction"/>
<menuitem name="EditExchangeRate" action="EditExchangeRateAction"/>
<menuitem name="ScheduleTransaction" action="ScheduleTransactionAction"/>
Expand Down Expand Up @@ -106,6 +107,7 @@
<menuitem name="JumpAssociateInvoice" action="JumpAssociatedInvoiceAction"/>
<separator name="PopupSep5"/>
<menuitem name="BlankTransaction" action="BlankTransactionAction"/>
<menuitem name="GotoDate" action="GotoDateAction"/>
<menuitem name="SplitTransaction" action="SplitTransactionAction"/>
<menuitem name="EditExchangeRate" action="EditExchangeRateAction"/>
<menuitem name="ScheduleTransaction" action="ScheduleTransactionAction"/>
Expand Down

0 comments on commit c142416

Please sign in to comment.