gnucash stable: Multiple changes pushed
Christopher Lam
clam at code.gnucash.org
Mon Jun 5 20:39:59 EDT 2023
Updated via https://github.com/Gnucash/gnucash/commit/d7c797a4 (commit)
via https://github.com/Gnucash/gnucash/commit/bb8a6b56 (commit)
from https://github.com/Gnucash/gnucash/commit/60e6c23a (commit)
commit d7c797a46ea542006c48bac493362349b8598bde
Merge: 60e6c23ac9 bb8a6b5601
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Tue Jun 6 08:39:09 2023 +0800
Merge Vincent Dawans branch 'trep-parameters-step2' into stable #1659
commit bb8a6b5601c46e74f82057a9e7a643c61152712e
Author: Vincent Dawans <dawansv at gmail.com>
Date: Sun Jun 4 14:36:34 2023 -0700
Define parameters in 2 steps to remove preparam
diff --git a/gnucash/report/trep-engine.scm b/gnucash/report/trep-engine.scm
index ac7d98d7b1..d2da97cc78 100644
--- a/gnucash/report/trep-engine.scm
+++ b/gnucash/report/trep-engine.scm
@@ -2187,42 +2187,21 @@ be excluded from periodic reporting.")
(report-title (opt-val gnc:pagename-general gnc:optname-reportname))
(detail-is-single? (eq? (opt-val gnc:pagename-display optname-detail-level) 'single))
(split-action? (qof-book-use-split-action-for-num-field (gnc-get-current-book)))
- (preparam (list (cons 'split-action split-action?)))
(amount-setting (opt-val gnc:pagename-display (N_ "Amount")))
(reversed-signs (opt-val gnc:pagename-display (N_ "Sign Reverses")))
(primary-key (opt-val pagename-sorting optname-prime-sortkey))
(primary-order (opt-val pagename-sorting optname-prime-sortorder))
(primary-subtotal (opt-val pagename-sorting optname-prime-subtotal))
(primary-date-subtotal (opt-val pagename-sorting optname-prime-date-subtotal))
- (primary-get-info (lambda (info)
- (if (memq primary-key DATE-SORTING-TYPES)
- (keylist-get-info date-subtotal-list primary-date-subtotal info)
- (and (SUBTOTAL-ENABLED? primary-key preparam)
- primary-subtotal
- (keylist-get-info (sortkey-list preparam) primary-key info)))))
- (primary-key/renderer-fn (primary-get-info 'renderer-fn))
(secondary-key (opt-val pagename-sorting optname-sec-sortkey))
(secondary-order (opt-val pagename-sorting optname-sec-sortorder))
(secondary-subtotal (opt-val pagename-sorting optname-sec-subtotal))
(secondary-date-subtotal (opt-val pagename-sorting optname-sec-date-subtotal))
- (secondary-get-info (lambda (info)
- (if (memq secondary-key DATE-SORTING-TYPES)
- (keylist-get-info date-subtotal-list secondary-date-subtotal info)
- (and (SUBTOTAL-ENABLED? secondary-key preparam)
- secondary-subtotal
- (keylist-get-info (sortkey-list preparam) secondary-key info)))))
- (secondary-key/renderer-fn (secondary-get-info 'renderer-fn))
(closing-match (keylist-get-info
show-closing-list
(opt-val pagename-filter optname-closing-transactions)
'closing-match))
(splits '())
- (custom-sort? (or (and (memq primary-key DATE-SORTING-TYPES)
- (not (eq? primary-date-subtotal 'none)))
- (and (memq secondary-key DATE-SORTING-TYPES)
- (not (eq? secondary-date-subtotal 'none)))
- (or (CUSTOM-SORTING? primary-key preparam)
- (CUSTOM-SORTING? secondary-key preparam))))
(subtotal-table? (and (opt-val gnc:pagename-display optname-grid)
(if (memq primary-key DATE-SORTING-TYPES)
(keylist-get-info date-subtotal-list
@@ -2236,114 +2215,150 @@ be excluded from periodic reporting.")
;; define a preprocessed alist of report parameters.
;; each key returns either the parameter value or #f is the parameter is not used.
(define parameters
- (list
- ;; parameters based on file properties
- (cons 'split-action split-action?)
- ;; parameters based on account and filter options
- (cons 'accounts-matched (or (null? c_account_1) c_account_1))
- ;; parameters based on common currency options
- (cons 'common-currency
- (and (opt-val pagename-currency optname-common-currency)
- (opt-val pagename-currency optname-currency)))
- (cons 'common-currency/original
- (and (opt-val pagename-currency optname-common-currency)
- (opt-val pagename-currency optname-orig-currency)))
- (cons 'common-currency/price-source
- (and (opt-val pagename-currency optname-common-currency)
- (opt-val pagename-currency optname-price-source)))
- ;; parameters based on display options
- (cons 'date (opt-val gnc:pagename-display (N_ "Date")))
- (cons 'reconciled-date (opt-val gnc:pagename-display (N_ "Reconciled Date")))
- (cons 'entered (opt-val gnc:pagename-display (N_ "Date Entered")))
- (cons 'num (if split-action?
- (opt-val gnc:pagename-display (N_ "Num/Action"))
- (opt-val gnc:pagename-display (N_ "Num"))))
- (cons 'description (opt-val gnc:pagename-display (N_ "Description")))
- (cons 'account-name (opt-val gnc:pagename-display (N_ "Account Name")))
- (cons 'other-account-name
- (and detail-is-single?
- (opt-val gnc:pagename-display (N_ "Other Account Name"))))
- (cons 'shares (opt-val gnc:pagename-display (N_ "Shares")))
- (cons 'price (opt-val gnc:pagename-display (N_ "Price")))
- (cons 'doclink (opt-val gnc:pagename-display (N_ "Link")))
- (cons 'amount-single (eq? amount-setting 'single))
- (cons 'amount-double (eq? amount-setting 'double))
- (cons 'running-balance (opt-val gnc:pagename-display "Account Balance"))
- (cons 'account-full-name
- (opt-val gnc:pagename-display (N_ "Use Full Account Name")))
- (cons 'memo (opt-val gnc:pagename-display (N_ "Memo")))
- (cons 'notes (opt-val gnc:pagename-display (N_ "Notes")))
- (cons 'account-code (opt-val gnc:pagename-display (N_ "Account Code")))
- (cons 'other-account-code
- (and detail-is-single?
- (opt-val gnc:pagename-display (N_ "Other Account Code"))))
- (cons 'other-account-full-name
- (and detail-is-single?
- (opt-val gnc:pagename-display (N_ "Use Full Other Account Name"))))
- (cons 'trans-number (and split-action?
- (opt-val gnc:pagename-display (N_ "Trans Number"))))
- (cons 'links (opt-val gnc:pagename-display "Enable Links"))
- (cons 'reversed-signs (or (eq? reversed-signs 'none) reversed-signs))
- (cons 'multiline (eq? (opt-val gnc:pagename-display optname-detail-level)
- 'multi-line))
- (cons 'grand-total (opt-val gnc:pagename-display optname-grand-total))
- (cons 'running-grand-total
- (or (eq? (opt-val gnc:pagename-display optname-running-totals) 'grand)
- (eq? (opt-val gnc:pagename-display optname-running-totals) 'all)))
- (cons 'running-prime
- (and (primary-get-info 'renderer-fn)
- (or (eq? (opt-val gnc:pagename-display optname-running-totals) 'sub)
- (eq? (opt-val gnc:pagename-display optname-running-totals) 'all))))
- (cons 'running-sec
- (and (secondary-get-info 'renderer-fn)
- (or (eq? (opt-val gnc:pagename-display optname-running-totals) 'sub)
- (eq? (opt-val gnc:pagename-display optname-running-totals) 'all))))
- ;; parameters based on general options
- (cons 'begindate begindate)
- (cons 'enddate enddate)
- (cons 'export-table (opt-val gnc:pagename-general optname-table-export))
- ;; parameters based on sorting options
- (cons 'primary-key primary-key)
- (cons 'primary-key/renderer-fn primary-key/renderer-fn)
- (cons 'primary-key/split-sortvalue (primary-get-info 'split-sortvalue))
- (cons 'primary-date-subtotal (if (memq primary-key DATE-SORTING-TYPES)
- primary-date-subtotal))
- (cons 'secondary-key secondary-key)
- (cons 'secondary-key/renderer-fn secondary-key/renderer-fn)
- (cons 'secondary-key/split-sortvalue (secondary-get-info 'split-sortvalue))
- (cons 'secondary-date-subtotal (if (memq secondary-key DATE-SORTING-TYPES)
- secondary-date-subtotal))
- (cons 'indenting (opt-val pagename-sorting optname-indenting))
- (cons 'subtotals-only
- (and (opt-val pagename-sorting optname-show-subtotals-only)
- (or primary-key/renderer-fn secondary-key/renderer-fn)))
- (cons 'sort-account-code (opt-val pagename-sorting (N_ "Show Account Code")))
- (cons 'sort-account-full-name
- (opt-val pagename-sorting (N_ "Show Full Account Name")))
- (cons 'sort-account-description
- (opt-val pagename-sorting (N_ "Show Account Description")))
- (cons 'informal-headers (opt-val pagename-sorting optname-show-informal-headers))
- ;; Parameters based on a mix of options
- ;; This parameter is set to #t if an account balance can be displayed
- ;; as a running balance with a balance forward at the top.
- ;; It implies most default options are maintained :
- ;; - Detail level is set to one transaction per line,
- ;; - Date filter is set to date posted
- ;; - Filtering on transactions is kept as per default
- ;; - The primary sort is set to account name (or code)
- ;; - The primary subtotals are displayed (to separate accounts)
- ;; - The secondary sort is set to register order or date ascending.
- (cons 'bal-bf
- (and detail-is-single?
- (eq? (opt-val gnc:pagename-general optname-date-source) 'posted)
- (string-null? transaction-matcher)
- (eq? reconcile-filter 'all)
- (eq? void-filter 'non-void-only)
- (memq primary-key '(account-name account-code))
- (memq secondary-key '(register-order date))
- primary-subtotal
- (eq? secondary-order 'ascend)))
- ))
+ ;; define parameters-tail, the main set of parameters.
+ ;; additional variables and parameters that require this first set of parameters
+ ;; wll be prepended further down.
+ (let* ((parameters-tail
+ (list
+ ;; parameters based on file properties
+ (cons 'split-action split-action?)
+ ;; parameters based on account and filter options
+ (cons 'accounts-matched (or (null? c_account_1) c_account_1))
+ ;; parameters based on common currency options
+ (cons 'common-currency
+ (and (opt-val pagename-currency optname-common-currency)
+ (opt-val pagename-currency optname-currency)))
+ (cons 'common-currency/original
+ (and (opt-val pagename-currency optname-common-currency)
+ (opt-val pagename-currency optname-orig-currency)))
+ (cons 'common-currency/price-source
+ (and (opt-val pagename-currency optname-common-currency)
+ (opt-val pagename-currency optname-price-source)))
+ ;; parameters based on display options
+ (cons 'date (opt-val gnc:pagename-display (N_ "Date")))
+ (cons 'reconciled-date (opt-val gnc:pagename-display (N_ "Reconciled Date")))
+ (cons 'entered (opt-val gnc:pagename-display (N_ "Date Entered")))
+ (cons 'num (if split-action?
+ (opt-val gnc:pagename-display (N_ "Num/Action"))
+ (opt-val gnc:pagename-display (N_ "Num"))))
+ (cons 'description (opt-val gnc:pagename-display (N_ "Description")))
+ (cons 'account-name (opt-val gnc:pagename-display (N_ "Account Name")))
+ (cons 'other-account-name
+ (and detail-is-single?
+ (opt-val gnc:pagename-display (N_ "Other Account Name"))))
+ (cons 'shares (opt-val gnc:pagename-display (N_ "Shares")))
+ (cons 'price (opt-val gnc:pagename-display (N_ "Price")))
+ (cons 'doclink (opt-val gnc:pagename-display (N_ "Link")))
+ (cons 'amount-single (eq? amount-setting 'single))
+ (cons 'amount-double (eq? amount-setting 'double))
+ (cons 'running-balance (opt-val gnc:pagename-display "Account Balance"))
+ (cons 'account-full-name
+ (opt-val gnc:pagename-display (N_ "Use Full Account Name")))
+ (cons 'memo (opt-val gnc:pagename-display (N_ "Memo")))
+ (cons 'notes (opt-val gnc:pagename-display (N_ "Notes")))
+ (cons 'account-code (opt-val gnc:pagename-display (N_ "Account Code")))
+ (cons 'other-account-code
+ (and detail-is-single?
+ (opt-val gnc:pagename-display (N_ "Other Account Code"))))
+ (cons 'other-account-full-name
+ (and detail-is-single?
+ (opt-val gnc:pagename-display (N_ "Use Full Other Account Name"))))
+ (cons 'trans-number (and split-action?
+ (opt-val gnc:pagename-display (N_ "Trans Number"))))
+ (cons 'links (opt-val gnc:pagename-display "Enable Links"))
+ (cons 'reversed-signs (or (eq? reversed-signs 'none) reversed-signs))
+ (cons 'multiline (eq? (opt-val gnc:pagename-display optname-detail-level)
+ 'multi-line))
+ (cons 'grand-total (opt-val gnc:pagename-display optname-grand-total))
+ (cons 'running-grand-total
+ (or (eq? (opt-val gnc:pagename-display optname-running-totals) 'grand)
+ (eq? (opt-val gnc:pagename-display optname-running-totals) 'all)))
+ ;; parameters based on general options
+ (cons 'begindate begindate)
+ (cons 'enddate enddate)
+ (cons 'export-table (opt-val gnc:pagename-general optname-table-export))
+ ;; parameters based on sorting options
+ (cons 'primary-key primary-key)
+ (cons 'primary-date-subtotal (if (memq primary-key DATE-SORTING-TYPES)
+ primary-date-subtotal))
+ (cons 'secondary-key secondary-key)
+ (cons 'secondary-date-subtotal (if (memq secondary-key DATE-SORTING-TYPES)
+ secondary-date-subtotal))
+ (cons 'indenting (opt-val pagename-sorting optname-indenting))
+ (cons 'sort-account-code (opt-val pagename-sorting (N_ "Show Account Code")))
+ (cons 'sort-account-full-name
+ (opt-val pagename-sorting (N_ "Show Full Account Name")))
+ (cons 'sort-account-description
+ (opt-val pagename-sorting (N_ "Show Account Description")))
+ (cons 'informal-headers (opt-val pagename-sorting optname-show-informal-headers))
+ ;; Parameters based on a mix of options
+ ;; This parameter is set to #t if an account balance can be displayed
+ ;; as a running balance with a balance forward at the top.
+ ;; It implies most default options are maintained :
+ ;; - Detail level is set to one transaction per line,
+ ;; - Date filter is set to date posted
+ ;; - Filtering on transactions is kept as per default
+ ;; - The primary sort is set to account name (or code)
+ ;; - The primary subtotals are displayed (to separate accounts)
+ ;; - The secondary sort is set to register order or date ascending.
+ (cons 'bal-bf
+ (and detail-is-single?
+ (eq? (opt-val gnc:pagename-general optname-date-source) 'posted)
+ (string-null? transaction-matcher)
+ (eq? reconcile-filter 'all)
+ (eq? void-filter 'non-void-only)
+ (memq primary-key '(account-name account-code))
+ (memq secondary-key '(register-order date))
+ primary-subtotal
+ (eq? secondary-order 'ascend)))
+ ))
+ ;; additional variables that call sortkey-list and therefore
+ ;; whose definition requires the existing parameters-tail alist
+ (primary-get-info (lambda (info)
+ (if (memq primary-key DATE-SORTING-TYPES)
+ (keylist-get-info date-subtotal-list primary-date-subtotal info)
+ (and (SUBTOTAL-ENABLED? primary-key parameters-tail)
+ primary-subtotal
+ (keylist-get-info (sortkey-list parameters-tail) primary-key info)))))
+ (primary-key/renderer-fn (primary-get-info 'renderer-fn))
+ (secondary-get-info (lambda (info)
+ (if (memq secondary-key DATE-SORTING-TYPES)
+ (keylist-get-info date-subtotal-list secondary-date-subtotal info)
+ (and (SUBTOTAL-ENABLED? secondary-key parameters-tail)
+ secondary-subtotal
+ (keylist-get-info (sortkey-list parameters-tail) secondary-key info)))))
+ (secondary-key/renderer-fn (secondary-get-info 'renderer-fn)))
+
+ ;; prepend additional parameters that rely on sortkey-list and therefore
+ ;; whose definition requires the existing parameters-tail alist
+ (cons*
+ ;; additional parameters based on display options
+ (cons 'running-prime
+ (and primary-key/renderer-fn
+ (or (eq? (opt-val gnc:pagename-display optname-running-totals) 'sub)
+ (eq? (opt-val gnc:pagename-display optname-running-totals) 'all))))
+ (cons 'running-sec
+ (and secondary-key/renderer-fn
+ (or (eq? (opt-val gnc:pagename-display optname-running-totals) 'sub)
+ (eq? (opt-val gnc:pagename-display optname-running-totals) 'all))))
+ ;; additional parameters based on sorting options
+ (cons 'primary-key/renderer-fn primary-key/renderer-fn)
+ (cons 'primary-key/split-sortvalue (primary-get-info 'split-sortvalue))
+ (cons 'secondary-key/renderer-fn secondary-key/renderer-fn)
+ (cons 'secondary-key/split-sortvalue (secondary-get-info 'split-sortvalue))
+ (cons 'subtotals-only
+ (and (opt-val pagename-sorting optname-show-subtotals-only)
+ (or primary-key/renderer-fn secondary-key/renderer-fn)))
+ ;; parameters-tail comes at the end
+ parameters-tail)))
+
+ (define custom-sort?
+ (or (and (memq primary-key DATE-SORTING-TYPES)
+ (not (eq? primary-date-subtotal 'none)))
+ (and (memq secondary-key DATE-SORTING-TYPES)
+ (not (eq? secondary-date-subtotal 'none)))
+ (or (CUSTOM-SORTING? primary-key parameters)
+ (CUSTOM-SORTING? secondary-key parameters))))
(define (match? str)
(cond
Summary of changes:
gnucash/report/trep-engine.scm | 273 ++++++++++++++++++++++-------------------
1 file changed, 144 insertions(+), 129 deletions(-)
More information about the gnucash-changes
mailing list