From 6eee9cefca162bfdd33f08eb70c068a1010854f1 Mon Sep 17 00:00:00 2001 From: christopherlam Date: Wed, 16 Aug 2017 23:33:03 +0800 Subject: [PATCH 1/3] Account fullname filter for transaction.scm This small change will introduce an account full-name filter. Only accounts whose fullname containing substring will be selected e.g. ":Travel" will match Expenses:Travel:Holiday and Expenses:Business:Travel. This can be left blank, which will mimic previous behavior. This will ease accounts selection tremendously. --- src/report/standard-reports/transaction.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/report/standard-reports/transaction.scm b/src/report/standard-reports/transaction.scm index 85bb53711f..7ea7993378 100644 --- a/src/report/standard-reports/transaction.scm +++ b/src/report/standard-reports/transaction.scm @@ -33,6 +33,7 @@ (use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing. (use-modules (srfi srfi-1)) +(use-modules (srfi srfi-13)) (use-modules (gnucash gnc-module)) (use-modules (gnucash gettext)) @@ -660,6 +661,14 @@ '()) #f #t)) + (gnc:register-trep-option + (gnc:make-string-option + gnc:pagename-accounts (N_ "Account Substring") + "a5" (N_ "Match only above accounts whose fullname contains substring e.g. ':Travel:' will \ +match Expenses:Travel:Holiday and Expenses:Business:Travel. Can be left blank, which will \ +disable the substring filter.") + "")) + (gnc:register-trep-option (gnc:make-account-list-option gnc:pagename-accounts (N_ "Filter By...") @@ -1422,6 +1431,7 @@ Credit Card, and Income accounts."))))) (gnc:report-starting reportname) (let ((document (gnc:make-html-document)) (c_account_1 (opt-val gnc:pagename-accounts "Accounts")) + (c_account_substring (opt-val gnc:pagename-accounts "Account Substring")) (c_account_2 (opt-val gnc:pagename-accounts "Filter By...")) (filter-mode (opt-val gnc:pagename-accounts "Filter Type")) (begindate (gnc:timepair-start-day-time @@ -1444,6 +1454,11 @@ Credit Card, and Income accounts."))))) ;;(gnc:warn "accts in trep-renderer:" c_account_1) ;;(gnc:warn "Report Account names:" (get-other-account-names c_account_1)) + (set! c_account_1 + (filter (lambda (acc) + (string-contains (gnc-account-get-full-name acc) c_account_substring)) + c_account_1)) + (if (not (or (null? c_account_1) (and-map not c_account_1))) (begin (qof-query-set-book query (gnc-get-current-book)) From 11a1ff61c5e15ebc9fa46473ebbb51aac713084e Mon Sep 17 00:00:00 2001 From: christopherlam Date: Wed, 16 Aug 2017 23:46:25 +0800 Subject: [PATCH 2/3] added case sensitive filter please squash commits for me! --- src/report/standard-reports/transaction.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/report/standard-reports/transaction.scm b/src/report/standard-reports/transaction.scm index 7ea7993378..151ab47cf6 100644 --- a/src/report/standard-reports/transaction.scm +++ b/src/report/standard-reports/transaction.scm @@ -664,9 +664,9 @@ (gnc:register-trep-option (gnc:make-string-option gnc:pagename-accounts (N_ "Account Substring") - "a5" (N_ "Match only above accounts whose fullname contains substring e.g. ':Travel:' will \ + "a5" (N_ "Match only above accounts whose fullname contains substring e.g. ':Travel' will \ match Expenses:Travel:Holiday and Expenses:Business:Travel. Can be left blank, which will \ -disable the substring filter.") +disable the substring filter. This filter is case-sensitive.") "")) (gnc:register-trep-option From 19fe7d8a560467d2c6fe2b53277fa453f0677c16 Mon Sep 17 00:00:00 2001 From: christopherlam Date: Fri, 25 Aug 2017 17:13:54 +0800 Subject: [PATCH 3/3] Reduce to compatibility shim Reduce option to retain compatibility layer for earlier 2.8 --- src/report/standard-reports/transaction.scm | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/report/standard-reports/transaction.scm b/src/report/standard-reports/transaction.scm index 151ab47cf6..87c3945171 100644 --- a/src/report/standard-reports/transaction.scm +++ b/src/report/standard-reports/transaction.scm @@ -33,7 +33,6 @@ (use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing. (use-modules (srfi srfi-1)) -(use-modules (srfi srfi-13)) (use-modules (gnucash gnc-module)) (use-modules (gnucash gettext)) @@ -666,7 +665,7 @@ gnc:pagename-accounts (N_ "Account Substring") "a5" (N_ "Match only above accounts whose fullname contains substring e.g. ':Travel' will \ match Expenses:Travel:Holiday and Expenses:Business:Travel. Can be left blank, which will \ -disable the substring filter. This filter is case-sensitive.") +disable the substring filter. This filter is case-sensitive. Gnucash 2.8 or later.") "")) (gnc:register-trep-option @@ -1431,7 +1430,6 @@ Credit Card, and Income accounts."))))) (gnc:report-starting reportname) (let ((document (gnc:make-html-document)) (c_account_1 (opt-val gnc:pagename-accounts "Accounts")) - (c_account_substring (opt-val gnc:pagename-accounts "Account Substring")) (c_account_2 (opt-val gnc:pagename-accounts "Filter By...")) (filter-mode (opt-val gnc:pagename-accounts "Filter Type")) (begindate (gnc:timepair-start-day-time @@ -1454,11 +1452,6 @@ Credit Card, and Income accounts."))))) ;;(gnc:warn "accts in trep-renderer:" c_account_1) ;;(gnc:warn "Report Account names:" (get-other-account-names c_account_1)) - (set! c_account_1 - (filter (lambda (acc) - (string-contains (gnc-account-get-full-name acc) c_account_substring)) - c_account_1)) - (if (not (or (null? c_account_1) (and-map not c_account_1))) (begin (qof-query-set-book query (gnc-get-current-book))