gnucash stable: Multiple changes pushed
Christopher Lam
clam at code.gnucash.org
Sun Jun 4 08:54:55 EDT 2023
Updated via https://github.com/Gnucash/gnucash/commit/c9c8d489 (commit)
via https://github.com/Gnucash/gnucash/commit/842e38c7 (commit)
from https://github.com/Gnucash/gnucash/commit/4beb382c (commit)
commit c9c8d4891033cc464ca0d983f2f7a7ac0ab77072
Merge: 4beb382c16 842e38c7c5
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Sun Jun 4 20:27:37 2023 +0800
Merge Vincent Dawans' branch 'trep-parameters' into stable #1629
diff --cc gnucash/report/trep-engine.scm
index 5b17119c3f,e42c30ed25..ac7d98d7b1
--- a/gnucash/report/trep-engine.scm
+++ b/gnucash/report/trep-engine.scm
@@@ -512,8 -512,9 +512,9 @@@ in the Options panel.")
;; Default Transaction Report
;;
(define (gnc:trep-options-generator)
- (define BOOK-SPLIT-ACTION
- (qof-book-use-split-action-for-num-field (gnc-get-current-book)))
+ (define parameters
- (list
++ (list
+ (cons 'split-action (qof-book-use-split-action-for-num-field (gnc-get-current-book)))))
;; (Feb 2018) Note to future hackers - this gnc:trep-options-generator
;; defines a long set of options to be assigned as an object in
@@@ -2244,19 -2125,9 +2125,8 @@@ be excluded from periodic reporting."
;; #:custom-source-accounts - alternate list-of-accounts to retrieve splits from
(define options (gnc:report-options report-obj))
-
(define (opt-val section name)
(gnc-optiondb-lookup-value (gnc:optiondb options) section name))
- (define BOOK-SPLIT-ACTION
- (qof-book-use-split-action-for-num-field (gnc-get-current-book)))
- (define (is-filter-member split account-list)
- (define (same-split? s) (equal? s split))
- (define (from-account? s) (member (xaccSplitGetAccount s) account-list))
- (let lp ((splits (xaccTransGetSplitList (xaccSplitGetParent split))))
- (match splits
- (() #f)
- (((? same-split?) . rest) (lp rest))
- (((? from-account?) . _) #t)
- ((_ . rest) (lp rest)))))
(gnc:report-starting (opt-val gnc:pagename-general gnc:optname-reportname))
commit 842e38c7c57432f984d2134e471bb6192ca1c662
Author: Vincent Dawans <dawansv at gmail.com>
Date: Sat May 6 20:43:33 2023 -0700
Refactor used-columns alist into more generic parameters alist
Refactor BOOK-SPLIT-ACTION into parameters alist
Refactor primary-get-info and secondary-get-info into parameters alist
Refactor opt-val calls made from make-split-table into parameters alist
Combine let* statements in gnc:trep-renderer
Integrate bal-bf helper function in parameter list
Remove c_account_1 begindate endate arguments from make-split-table
diff --git a/gnucash/report/trep-engine.scm b/gnucash/report/trep-engine.scm
index 5b17119c3f..e42c30ed25 100644
--- a/gnucash/report/trep-engine.scm
+++ b/gnucash/report/trep-engine.scm
@@ -160,7 +160,7 @@ in the Options panel."))
(cons #\f (G_ "Frozen"))
(cons #\v (G_ "Voided"))))
-(define (sortkey-list split-action?)
+(define (sortkey-list parameters)
;; Defines the different sorting keys, as an association-list
;; together with the subtotal functions. Each entry:
;; 'sortkey - sort parameter sent via qof-query
@@ -238,7 +238,7 @@ in the Options panel."))
(cons 'text (G_ "Description"))
(cons 'renderer-fn (compose xaccTransGetDescription xaccSplitGetParent)))
- (if split-action?
+ (if (assq-ref parameters 'split-action)
(list 'number
(cons 'sortkey (list SPLIT-ACTION))
(cons 'split-sortvalue xaccSplitGetAction)
@@ -441,20 +441,20 @@ in the Options panel."))
(keylist-get-info keylist (car item) 'text)))
keylist))
-(define (SUBTOTAL-ENABLED? sortkey split-action?)
+(define (SUBTOTAL-ENABLED? sortkey parameters)
;; this returns whether sortkey *can* be subtotalled/grouped.
;; it checks whether a renderer-fn is defined.
- (keylist-get-info (sortkey-list split-action?) sortkey 'renderer-fn))
+ (keylist-get-info (sortkey-list parameters) sortkey 'renderer-fn))
-(define (CUSTOM-SORTING? sortkey split-action?)
+(define (CUSTOM-SORTING? sortkey parameters)
;; sortkey -> bool
;;
;; this returns which sortkeys which *must* use the custom sorter.
;; it filters whereby a split-sortvalue is defined (i.e. the splits
;; can be compared according to their 'sortvalue) but the QofQuery
;; sortkey is not defined (i.e. their 'sortkey is #f).
- (and (keylist-get-info (sortkey-list split-action?) sortkey 'split-sortvalue)
- (not (keylist-get-info (sortkey-list split-action?) sortkey 'sortkey))))
+ (and (keylist-get-info (sortkey-list parameters) sortkey 'split-sortvalue)
+ (not (keylist-get-info (sortkey-list parameters) sortkey 'sortkey))))
(define (lists->csv lst)
;; converts a list of lists into CSV
@@ -512,8 +512,9 @@ in the Options panel."))
;; Default Transaction Report
;;
(define (gnc:trep-options-generator)
- (define BOOK-SPLIT-ACTION
- (qof-book-use-split-action-for-num-field (gnc-get-current-book)))
+ (define parameters
+ (list
+ (cons 'split-action (qof-book-use-split-action-for-num-field (gnc-get-current-book)))))
;; (Feb 2018) Note to future hackers - this gnc:trep-options-generator
;; defines a long set of options to be assigned as an object in
@@ -678,7 +679,7 @@ be excluded from periodic reporting.")
;; Sorting options
(let ((ascending-choice-list (keylist->vectorlist ascending-list))
- (key-choice-list (keylist->vectorlist (sortkey-list BOOK-SPLIT-ACTION)))
+ (key-choice-list (keylist->vectorlist (sortkey-list parameters)))
(date-subtotal-choice-list (keylist->vectorlist date-subtotal-list))
(prime-sortkey 'account-name)
(prime-sortkey-subtotal-true #t)
@@ -690,11 +691,11 @@ be excluded from periodic reporting.")
(define (apply-selectable-by-name-sorting-options)
(let* ((prime-sortkey-enabled (not (eq? prime-sortkey 'none)))
(prime-sortkey-subtotal-enabled
- (SUBTOTAL-ENABLED? prime-sortkey BOOK-SPLIT-ACTION))
+ (SUBTOTAL-ENABLED? prime-sortkey parameters))
(prime-date-sortingtype-enabled (memq prime-sortkey DATE-SORTING-TYPES))
(sec-sortkey-enabled (not (eq? sec-sortkey 'none)))
(sec-sortkey-subtotal-enabled
- (SUBTOTAL-ENABLED? sec-sortkey BOOK-SPLIT-ACTION))
+ (SUBTOTAL-ENABLED? sec-sortkey parameters))
(sec-date-sortingtype-enabled (memq sec-sortkey DATE-SORTING-TYPES)))
(gnc-optiondb-set-option-selectable-by-name
@@ -910,7 +911,7 @@ be excluded from periodic reporting.")
(list (N_ "Date") "a" (G_ "Display the date?") #t)
(list (N_ "Reconciled Date") "a2" (G_ "Display the reconciled date?") #f)
(list (N_ "Date Entered") "a3" (G_ "Display the entered date?") #f)
- (if BOOK-SPLIT-ACTION
+ (if (assq-ref parameters 'split-action)
(list (N_ "Num/Action") "b" (G_ "Display the check number?") #t)
(list (N_ "Num") "b" (G_ "Display the check number?") #t))
(list (N_ "Description") "c" (G_ "Display the description?") #t)
@@ -929,7 +930,7 @@ be excluded from periodic reporting.")
(list (N_ "Account Balance") "n" (G_ "Display the balance of the underlying account on each line?") #f)
(list optname-grand-total "o" (G_ "Display a grand total section at the bottom?") #t)))
- (when BOOK-SPLIT-ACTION
+ (when (assq-ref parameters 'split-action)
(gnc-register-simple-boolean-option options
gnc:pagename-display (N_ "Trans Number")
"b2" (G_ "Display the trans number?") #f))
@@ -1034,139 +1035,30 @@ be excluded from periodic reporting.")
;; ;;;;;;;;;;;;;;;;;;;;
;; Here comes the big function that builds the whole table.
-(define (make-split-table splits options custom-calculated-cells
- begindate enddate c_account_1)
+(define (make-split-table splits options parameters custom-calculated-cells)
- (define (opt-val section name)
- (gnc-optiondb-lookup-value (gnc:optiondb options) section name))
-
- (define BOOK-SPLIT-ACTION
- (qof-book-use-split-action-for-num-field (gnc-get-current-book)))
-
- (define (build-columns-used)
- (define detail-is-single?
- (eq? (opt-val gnc:pagename-display optname-detail-level) 'single))
- (define amount-setting (opt-val gnc:pagename-display (N_ "Amount")))
- (list (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 BOOK-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 'link (opt-val gnc:pagename-display (N_ "Link")))
- (cons 'amount-single (eq? amount-setting 'single))
- (cons 'amount-double (eq? amount-setting 'double))
- (cons 'common-currency (opt-val pagename-currency optname-common-currency))
- (cons 'amount-original-currency
- (and (opt-val pagename-currency optname-common-currency)
- (opt-val pagename-currency optname-orig-currency)))
- (cons 'indenting (opt-val pagename-sorting optname-indenting))
- (cons 'subtotals-only
- (and (opt-val pagename-sorting optname-show-subtotals-only)
- (or (primary-get-info 'renderer-fn)
- (secondary-get-info 'renderer-fn))))
- (cons 'running-balance (opt-val gnc:pagename-display "Account Balance"))
- (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))))
- (cons 'account-full-name
- (opt-val gnc:pagename-display (N_ "Use Full Account Name")))
- (cons 'memo (opt-val gnc:pagename-display (N_ "Memo")))
- (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 '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 'notes (opt-val gnc:pagename-display (N_ "Notes")))))
-
- (define (primary-get-info info)
- (let ((sortkey (opt-val pagename-sorting optname-prime-sortkey)))
- (if (memq sortkey DATE-SORTING-TYPES)
- (keylist-get-info
- date-subtotal-list
- (opt-val pagename-sorting optname-prime-date-subtotal) info)
- (and (SUBTOTAL-ENABLED? sortkey BOOK-SPLIT-ACTION)
- (opt-val pagename-sorting optname-prime-subtotal)
- (keylist-get-info (sortkey-list BOOK-SPLIT-ACTION) sortkey info)))))
-
- (define (secondary-get-info info)
- (let ((sortkey (opt-val pagename-sorting optname-sec-sortkey)))
- (if (memq sortkey DATE-SORTING-TYPES)
- (keylist-get-info
- date-subtotal-list
- (opt-val pagename-sorting optname-sec-date-subtotal) info)
- (and (SUBTOTAL-ENABLED? sortkey BOOK-SPLIT-ACTION)
- (opt-val pagename-sorting optname-sec-subtotal)
- (keylist-get-info (sortkey-list BOOK-SPLIT-ACTION) sortkey info)))))
+ (define (report-uses? param)
+ (assq-ref parameters param))
(let* ((work-to-do (length splits))
(table (gnc:make-html-table))
- (used-columns (build-columns-used))
- (opt-use-links? (opt-val gnc:pagename-display "Enable Links"))
(account-types-to-reverse
(keylist-get-info sign-reverse-list
- (opt-val gnc:pagename-display (N_ "Sign Reverses"))
- 'acct-types))
- (is-multiline? (eq? (opt-val gnc:pagename-display optname-detail-level)
- 'multi-line))
- (export? (opt-val gnc:pagename-general optname-table-export)))
+ (report-uses? 'reversed-signs)
+ 'acct-types)))
(define (acc-reverse? acc)
(if account-types-to-reverse
(memv (xaccAccountGetType acc) account-types-to-reverse)
(gnc-reverse-balance acc)))
- (define (column-uses? param)
- (assq-ref used-columns param))
-
- ;; Helper function to decide 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.
- (define show-bal-bf?
- (and (eq? (opt-val gnc:pagename-display optname-detail-level) 'single)
- (eq? (opt-val gnc:pagename-general optname-date-source) 'posted)
- (string-null? (opt-val pagename-filter optname-transaction-matcher))
- (eq? (opt-val pagename-filter optname-reconcile-status) 'all)
- (eq? (opt-val pagename-filter optname-void-transactions) 'non-void-only)
- (memq (opt-val pagename-sorting optname-prime-sortkey) '(account-name account-code))
- (memq (opt-val pagename-sorting optname-sec-sortkey) '(register-order date))
- (opt-val pagename-sorting optname-prime-subtotal)
- (eq? (opt-val pagename-sorting optname-sec-sortorder) 'ascend)))
-
(define exchange-fn
- (if (column-uses? 'common-currency)
+ (if (report-uses? 'common-currency)
(gnc:case-exchange-time-fn
- (opt-val pagename-currency optname-price-source)
- (opt-val pagename-currency optname-currency)
- (gnc:accounts-get-commodities c_account_1 #f) enddate #f #f)
+ (report-uses? 'common-currency/price-source)
+ (report-uses? 'common-currency)
+ (gnc:accounts-get-commodities (report-uses? 'accounts-matched) #f)
+ (report-uses? 'enddate) #f #f)
gnc:exchange-by-pricedb-nearest))
;; Returns #t if a calculated-cell definition has the subtotal flag
@@ -1185,7 +1077,7 @@ be excluded from periodic reporting.")
(let* ((add-if (lambda (pred? . items) (if pred? items '())))
(left-cols-list
(append
- (add-if (column-uses? 'date)
+ (add-if (report-uses? 'date)
(list (cons 'heading (G_ "Date"))
(cons 'renderer-fn
(lambda (split transaction-row?)
@@ -1196,7 +1088,7 @@ be excluded from periodic reporting.")
(xaccTransGetDate
(xaccSplitGetParent split)))))))))
- (add-if (column-uses? 'entered)
+ (add-if (report-uses? 'entered)
(list (cons 'heading (G_ "Date Entered"))
(cons 'renderer-fn (lambda (split transaction-row?)
(and transaction-row?
@@ -1205,7 +1097,7 @@ be excluded from periodic reporting.")
(xaccTransRetDateEntered
(xaccSplitGetParent split)))))))))
- (add-if (column-uses? 'reconciled-date)
+ (add-if (report-uses? 'reconciled-date)
(list (cons 'heading (G_ "Reconciled Date"))
(cons 'renderer-fn
(lambda (split transaction-row?)
@@ -1217,20 +1109,15 @@ be excluded from periodic reporting.")
"date-cell"
(qof-print-date reconcile-date))))))))
- (add-if (column-uses? 'num)
- (list (cons 'heading (if (and BOOK-SPLIT-ACTION
- (opt-val gnc:pagename-display
- (N_ "Trans Number")))
+ (add-if (report-uses? 'num)
+ (list (cons 'heading (if (report-uses? 'trans-number)
(G_ "Num/T-Num")
(G_ "Num")))
(cons 'renderer-fn
(lambda (split transaction-row?)
(let* ((trans (xaccSplitGetParent split))
(num (gnc-get-num-action trans split))
- (t-num (if (and BOOK-SPLIT-ACTION
- (opt-val
- gnc:pagename-display
- (N_ "Trans Number")))
+ (t-num (if (report-uses? 'trans-number)
(gnc-get-num-action trans #f)
""))
(num-string (if (string-null? t-num)
@@ -1240,7 +1127,7 @@ be excluded from periodic reporting.")
(gnc:make-html-table-cell/markup
"text-cell" num-string)))))))
- (add-if (column-uses? 'description)
+ (add-if (report-uses? 'description)
(list (cons 'heading (G_ "Description"))
(cons 'renderer-fn
(lambda (split transaction-row?)
@@ -1250,30 +1137,30 @@ be excluded from periodic reporting.")
"text-cell"
(xaccTransGetDescription trans)))))))
- (add-if (column-uses? 'memo)
- (list (cons 'heading (if (column-uses? 'notes)
+ (add-if (report-uses? 'memo)
+ (list (cons 'heading (if (report-uses? 'notes)
(string-append (G_ "Memo") "/" (G_ "Notes"))
(G_ "Memo")))
(cons 'renderer-fn
(lambda (split transaction-row?)
(define trans (xaccSplitGetParent split))
(define memo (xaccSplitGetMemo split))
- (if (and (string-null? memo) (column-uses? 'notes))
+ (if (and (string-null? memo) (report-uses? 'notes))
(xaccTransGetNotes trans)
memo)))))
- (add-if (or (column-uses? 'account-name) (column-uses? 'account-code))
+ (add-if (or (report-uses? 'account-name) (report-uses? 'account-code))
(list (cons 'heading (G_ "Account"))
(cons 'renderer-fn
(lambda (split transaction-row?)
(account-namestring
(xaccSplitGetAccount split)
- (column-uses? 'account-code)
- (column-uses? 'account-name)
- (column-uses? 'account-full-name))))))
+ (report-uses? 'account-code)
+ (report-uses? 'account-name)
+ (report-uses? 'account-full-name))))))
- (add-if (or (column-uses? 'other-account-name)
- (column-uses? 'other-account-code))
+ (add-if (or (report-uses? 'other-account-name)
+ (report-uses? 'other-account-code))
(list (cons 'heading (G_ "Transfer from/to"))
(cons 'renderer-fn
(lambda (split transaction-row?)
@@ -1282,11 +1169,11 @@ be excluded from periodic reporting.")
(account-namestring
(xaccSplitGetAccount
(xaccSplitGetOtherSplit split))
- (column-uses? 'other-account-code)
- (column-uses? 'other-account-name)
- (column-uses? 'other-account-full-name)))))))
+ (report-uses? 'other-account-code)
+ (report-uses? 'other-account-name)
+ (report-uses? 'other-account-full-name)))))))
- (add-if (column-uses? 'shares)
+ (add-if (report-uses? 'shares)
(list (cons 'heading (G_ "Shares"))
(cons 'renderer-fn
(lambda (split transaction-row?)
@@ -1294,7 +1181,7 @@ be excluded from periodic reporting.")
"number-cell"
(xaccSplitGetAmount split))))))
- (add-if (column-uses? 'link)
+ (add-if (report-uses? 'doclink)
(list (cons 'heading "")
(cons 'renderer-fn
(lambda (split transaction-row?)
@@ -1303,14 +1190,14 @@ be excluded from periodic reporting.")
(and (not (string-null? url))
(gnc:make-html-table-cell/markup
"text-cell"
- (if opt-use-links?
+ (if (report-uses? 'links)
(gnc:html-transaction-doclink-anchor
(xaccSplitGetParent split)
;; Translators: 'L' is short for Linked Document
(C_ "Column header for 'Document Link'" "L"))
(C_ "Column header for 'Document Link'" "L")))))))))
- (add-if (column-uses? 'price)
+ (add-if (report-uses? 'price)
(list (cons 'heading (G_ "Price"))
(cons 'renderer-fn
(lambda (split transaction-row?)
@@ -1320,11 +1207,11 @@ be excluded from periodic reporting.")
(xaccTransGetCurrency (xaccSplitGetParent split))
(xaccSplitGetSharePrice split))))))))))
- (if (or (column-uses? 'subtotals-only)
+ (if (or (report-uses? 'subtotals-only)
(and (null? left-cols-list)
- (or (opt-val gnc:pagename-display optname-grand-total)
- (primary-get-info 'renderer-fn)
- (secondary-get-info 'renderer-fn))))
+ (or (report-uses? 'grand-total)
+ (report-uses? 'primary-key/renderer-fn)
+ (report-uses? 'secondary-key/renderer-fn))))
`(((heading . "") (renderer-fn . ,(const #f))))
left-cols-list)))
@@ -1340,19 +1227,17 @@ be excluded from periodic reporting.")
(xaccSplitVoidFormerAmount s)
(xaccSplitGetAmount s))))
(split-currency (compose xaccAccountGetCommodity xaccSplitGetAccount))
- (row-currency (lambda (s) (if (column-uses? 'common-currency)
- (opt-val pagename-currency optname-currency)
+ (row-currency (lambda (s) (or (report-uses? 'common-currency)
(split-currency s))))
(friendly-debit (lambda (a) (gnc-account-get-debit-string (xaccAccountGetType a))))
(friendly-credit (lambda (a) (gnc-account-get-credit-string (xaccAccountGetType a))))
(header-commodity (lambda (str)
(string-append
str
- (if (column-uses? 'common-currency)
+ (if (report-uses? 'common-currency)
(format #f " (~a)"
(gnc-commodity-get-mnemonic
- (opt-val pagename-currency
- optname-currency)))
+ (report-uses? 'common-currency)))
""))))
;; For conversion to row-currency.
(converted-amount (lambda (s tr?)
@@ -1443,7 +1328,7 @@ be excluded from periodic reporting.")
;; when currency conversion is used
;; 'merge-dual-column? #t: merge with next cell.
- (if (column-uses? 'amount-single)
+ (if (report-uses? 'amount-single)
(list (list (cons 'heading (header-commodity (G_ "Amount")))
(cons 'calc-fn converted-amount)
(cons 'reverse-column? #t)
@@ -1453,7 +1338,7 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (column-uses? 'amount-double)
+ (if (report-uses? 'amount-double)
(list (list (cons 'heading (header-commodity (G_ "Debit")))
(cons 'calc-fn converted-debit-amount)
(cons 'reverse-column? #f)
@@ -1470,8 +1355,8 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (column-uses? 'running-balance)
- (if show-bal-bf?
+ (if (report-uses? 'running-balance)
+ (if (report-uses? 'bal-bf)
(list (list (cons 'heading (header-commodity (G_ "Running Balance")))
(cons 'calc-fn converted-account-balance)
(cons 'reverse-column? #t)
@@ -1488,7 +1373,7 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f))))
'())
- (if (column-uses? 'running-sec)
+ (if (report-uses? 'running-sec)
(list (list (cons 'heading (header-commodity
;; Translators: this is the running total for the secondary subtotal.
;; For translation to be consistent, make sure it follows the same
@@ -1503,9 +1388,9 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (column-uses? 'running-prime)
+ (if (report-uses? 'running-prime)
(list (list (cons 'heading (header-commodity
- (if (secondary-get-info 'renderer-fn)
+ (if (report-uses? 'secondary-key/renderer-fn)
;; Translators: this is the running total for the primary subtotal.
;; For translation to be consistent, make sure it follows the same
;; pattern as for these other strings: âRunning Totalsâ and
@@ -1523,10 +1408,10 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (column-uses? 'running-grand-total)
+ (if (report-uses? 'running-grand-total)
(list (list (cons 'heading (header-commodity
- (if (or (primary-get-info 'renderer-fn)
- (secondary-get-info 'renderer-fn))
+ (if (or (report-uses? 'primary-key/renderer-fn)
+ (report-uses? 'secondary-key/renderer-fn))
;; Translators: this is the running total for the grand total.
;; For translation to be consistent, make sure it follows the same
;; pattern as for these other strings: âRunning Totalsâ and
@@ -1545,8 +1430,8 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (and (column-uses? 'amount-original-currency)
- (column-uses? 'amount-single))
+ (if (and (report-uses? 'common-currency/original)
+ (report-uses? 'amount-single))
(list (list (cons 'heading (G_ "Amount"))
(cons 'calc-fn original-amount)
(cons 'reverse-column? #t)
@@ -1556,8 +1441,8 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (and (column-uses? 'amount-original-currency)
- (column-uses? 'amount-double))
+ (if (and (report-uses? 'common-currency/original)
+ (report-uses? 'amount-double))
(list (list (cons 'heading (G_ "Debit"))
(cons 'calc-fn original-debit-amount)
(cons 'reverse-column? #f)
@@ -1574,9 +1459,9 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (and (column-uses? 'amount-original-currency)
- (column-uses? 'running-balance))
- (if show-bal-bf?
+ (if (and (report-uses? 'common-currency/original)
+ (report-uses? 'running-balance))
+ (if (report-uses? 'bal-bf)
(list (list (cons 'heading (G_ "Running Balance"))
(cons 'calc-fn original-account-balance)
(cons 'reverse-column? #t)
@@ -1593,8 +1478,8 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f))))
'())
- (if (and (column-uses? 'amount-original-currency)
- (column-uses? 'running-sec))
+ (if (and (report-uses? 'common-currency/original)
+ (report-uses? 'running-sec))
(list (list (cons 'heading (G_ "Running Secondary Subtotal"))
(cons 'calc-fn original-running-sec)
(cons 'reverse-column? #f)
@@ -1604,10 +1489,10 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (and (column-uses? 'amount-original-currency)
- (column-uses? 'running-prime))
+ (if (and (report-uses? 'common-currency/original)
+ (report-uses? 'running-prime))
(list (list (cons 'heading
- (if (secondary-get-info 'renderer-fn)
+ (if (report-uses? 'secondary-key/renderer-fn)
(G_ "Running Primary Subtotal")
(G_ "Running Subtotal")))
(cons 'calc-fn original-running-prime)
@@ -1618,11 +1503,11 @@ be excluded from periodic reporting.")
(cons 'merge-dual-column? #f)))
'())
- (if (and (column-uses? 'amount-original-currency)
- (column-uses? 'running-grand-total))
+ (if (and (report-uses? 'common-currency/original)
+ (report-uses? 'running-grand-total))
(list (list (cons 'heading
- (if (or (primary-get-info 'renderer-fn)
- (secondary-get-info 'renderer-fn))
+ (if (or (report-uses? 'primary-key/renderer-fn)
+ (report-uses? 'secondary-key/renderer-fn))
(G_ "Running Grand Total")
(G_ "Running Total")))
(cons 'calc-fn original-running-total)
@@ -1649,7 +1534,7 @@ be excluded from periodic reporting.")
default-calculated-cells)))
;; Only keep cells with subtotals when "Show subtotals only" is selected
;; otherwise leave all calculated-cells as is.
- (if (column-uses? 'subtotals-only) (filter cell-with-subtotals? cc) cc)))
+ (if (report-uses? 'subtotals-only) (filter cell-with-subtotals? cc) cc)))
(define headings-left-columns
(map (cut assq-ref <> 'heading) left-columns))
@@ -1661,23 +1546,22 @@ be excluded from periodic reporting.")
(define width-right-columns (length calculated-cells))
(define primary-indent
- (if (and (column-uses? 'indenting)
- (primary-get-info 'renderer-fn))
+ (if (and (report-uses? 'indenting)
+ (report-uses? 'primary-key/renderer-fn))
1 0))
(define secondary-indent
- (if (and (column-uses? 'indenting)
- (secondary-get-info 'renderer-fn))
+ (if (and (report-uses? 'indenting)
+ (report-uses? 'secondary-key/renderer-fn))
1 0))
(define indent-level
(+ primary-indent secondary-indent))
(define (add-subheading data subheading-style split level)
- (let* ((sortkey (opt-val pagename-sorting
- (case level
- ((primary) optname-prime-sortkey)
- ((secondary) optname-sec-sortkey))))
+ (let* ((sortkey (case level
+ ((primary) (report-uses? 'primary-key))
+ ((secondary) (report-uses? 'secondary-key))))
(data (if (and (any (lambda (c) (eq? 'bal-bf (assq-ref c 'friendly-heading-fn)))
calculated-cells)
(memq sortkey ACCOUNT-SORTING-TYPES))
@@ -1686,19 +1570,19 @@ be excluded from periodic reporting.")
(string-append data ": " (G_ "Balance b/f"))
data))
(renderer-fn (keylist-get-info
- (sortkey-list BOOK-SPLIT-ACTION)
+ (sortkey-list parameters)
sortkey 'renderer-fn))
(left-indent (case level
((primary total) 0)
((secondary) primary-indent)))
(right-indent (- indent-level left-indent)))
- (unless (column-uses? 'subtotals-only)
+ (unless (report-uses? 'subtotals-only)
(gnc:html-table-append-row/markup!
table subheading-style
(append
(gnc:html-make-empty-cells left-indent)
- (if export?
+ (if (report-uses? 'export-table)
(cons
(gnc:make-html-table-cell/markup "total-label-cell" data)
(gnc:html-make-empty-cells
@@ -1715,9 +1599,8 @@ be excluded from periodic reporting.")
(bal (exchange-fn
(gnc:make-gnc-monetary
(xaccAccountGetCommodity acc)
- (xaccAccountGetBalanceAsOfDate acc begindate))
- (if (column-uses? 'common-currency)
- (opt-val pagename-currency optname-currency)
+ (xaccAccountGetBalanceAsOfDate acc (report-uses? 'begindate)))
+ (or (report-uses? 'common-currency)
(xaccAccountGetCommodity acc))
(time64CanonicalDayTime
(xaccTransGetDate (xaccSplitGetParent split))))))
@@ -1727,7 +1610,7 @@ be excluded from periodic reporting.")
(if (acc-reverse? acc) (gnc:monetary-neg bal) bal)))))
('original-bal-bf
(let* ((acc (xaccSplitGetAccount split))
- (bal (xaccAccountGetBalanceAsOfDate acc begindate)))
+ (bal (xaccAccountGetBalanceAsOfDate acc (report-uses? 'begindate))))
(and (memq sortkey ACCOUNT-SORTING-TYPES)
(gnc:make-html-table-cell/markup
"number-cell"
@@ -1735,8 +1618,8 @@ be excluded from periodic reporting.")
(xaccAccountGetCommodity acc)
(if (acc-reverse? acc) (- bal) bal))))))
(fn
- (and (opt-val pagename-sorting optname-show-informal-headers)
- (column-uses? 'amount-double)
+ (and (report-uses? 'informal-headers)
+ (report-uses? 'amount-double)
(memq sortkey SORTKEY-INFORMAL-HEADERS)
(gnc:make-html-text
(gnc:html-markup-b
@@ -1770,7 +1653,7 @@ be excluded from periodic reporting.")
list-of-monetary))
(define (first-column string)
- (if export?
+ (if (report-uses? 'export-table)
(cons
(gnc:make-html-table-cell/markup "total-label-cell" string)
(gnc:html-make-empty-cells (+ right-indent width-left-columns -1)))
@@ -1879,18 +1762,18 @@ be excluded from periodic reporting.")
;; generate account name, optionally with anchor to account register
(define (render-account sortkey split anchor?)
- (let* ((account ((keylist-get-info (sortkey-list BOOK-SPLIT-ACTION)
+ (let* ((account ((keylist-get-info (sortkey-list parameters)
sortkey 'renderer-fn) split))
(name (account-namestring account
- (column-uses? 'sort-account-code)
+ (report-uses? 'sort-account-code)
#t
- (column-uses? 'sort-account-full-name)))
- (description (if (and (column-uses? 'sort-account-description)
+ (report-uses? 'sort-account-full-name)))
+ (description (if (and (report-uses? 'sort-account-description)
(not (string-null?
(xaccAccountGetDescription account))))
(string-append ": " (xaccAccountGetDescription account))
"")))
- (if (and anchor? opt-use-links?
+ (if (and anchor? (report-uses? 'links)
(pair? account)) ;html anchor for 2-split transactions only
(gnc:make-html-text
(gnc:html-markup-anchor (gnc:account-anchor-text account) name)
@@ -1899,17 +1782,15 @@ be excluded from periodic reporting.")
;; generic renderer. retrieve renderer-fn which should return a str
(define (render-generic sortkey split)
- ((keylist-get-info (sortkey-list BOOK-SPLIT-ACTION) sortkey 'renderer-fn) split))
+ ((keylist-get-info (sortkey-list parameters) sortkey 'renderer-fn) split))
(define (render-summary split level anchor?)
- (let ((sortkey (opt-val pagename-sorting
- (case level
- ((primary) optname-prime-sortkey)
- ((secondary) optname-sec-sortkey))))
- (date-subtotal-key (opt-val pagename-sorting
- (case level
- ((primary) optname-prime-date-subtotal)
- ((secondary) optname-sec-date-subtotal)))))
+ (let ((sortkey (case level
+ ((primary) (report-uses? 'primary-key))
+ ((secondary) (report-uses? 'secondary-key))))
+ (date-subtotal-key (case level
+ ((primary) (report-uses? 'primary-date-subtotal))
+ ((secondary) (report-uses? 'secondary-date-subtotal)))))
(cond
((memq sortkey DATE-SORTING-TYPES)
(render-date date-subtotal-key split))
@@ -1929,7 +1810,7 @@ be excluded from periodic reporting.")
(let* ((account (xaccSplitGetAccount split))
(reversible-account? (acc-reverse? account)))
- (unless (column-uses? 'subtotals-only)
+ (unless (report-uses? 'subtotals-only)
(gnc:html-table-append-row/markup!
table row-style
(append
@@ -1953,9 +1834,9 @@ be excluded from periodic reporting.")
;; only on number cells that are set to show a subtotal,
;; unless no columns are set to show a subtotal, in which case links
;; are shown on all number cells.
- (if (and opt-use-links? (or (cell-with-subtotals? cell)
- (not (any cell-with-subtotals?
- cell-calculators))))
+ (if (and (report-uses? 'links) (or (cell-with-subtotals? cell)
+ (not (any cell-with-subtotals?
+ cell-calculators))))
(gnc:html-split-anchor split cell-content)
cell-content)))))
cell-calculators))))
@@ -1981,8 +1862,8 @@ be excluded from periodic reporting.")
(map (lambda (x) (gnc:make-commodity-collector)) calculated-cells))
(define grid (make-grid))
- (define primary-subtotal-comparator (primary-get-info 'split-sortvalue))
- (define secondary-subtotal-comparator (secondary-get-info 'split-sortvalue))
+ (define primary-subtotal-comparator (report-uses? 'primary-key/split-sortvalue))
+ (define secondary-subtotal-comparator (report-uses? 'secondary-key/split-sortvalue))
(gnc:html-table-set-col-headers!
table (concatenate (list
@@ -1990,11 +1871,11 @@ be excluded from periodic reporting.")
headings-left-columns
headings-right-columns)))
- (when (primary-get-info 'renderer-fn)
+ (when (report-uses? 'primary-key/renderer-fn)
(add-subheading (render-summary (car splits) 'primary #t)
def:primary-subtotal-style (car splits) 'primary))
- (when (secondary-get-info 'renderer-fn)
+ (when (report-uses? 'secondary-key/renderer-fn)
(add-subheading (render-summary (car splits) 'secondary #t)
def:secondary-subtotal-style (car splits) 'secondary))
@@ -2006,7 +1887,7 @@ be excluded from periodic reporting.")
(if (null? splits)
- (when (opt-val gnc:pagename-display optname-grand-total)
+ (when (report-uses? 'grand-total)
(gnc:html-table-append-row/markup!
table def:grand-total-style
(list
@@ -2024,12 +1905,12 @@ be excluded from periodic reporting.")
(split-values (add-split-row
current
calculated-cells
- (if (or odd-row? is-multiline?)
+ (if (or odd-row? (report-uses? 'multiline))
def:normal-row-style
def:alternate-row-style)
#t)))
- (when is-multiline?
+ (when (report-uses? 'multiline)
(for-each
(lambda (othersplit)
(add-split-row othersplit calculated-cells
@@ -2244,19 +2125,9 @@ be excluded from periodic reporting.")
;; #:custom-source-accounts - alternate list-of-accounts to retrieve splits from
(define options (gnc:report-options report-obj))
+
(define (opt-val section name)
(gnc-optiondb-lookup-value (gnc:optiondb options) section name))
- (define BOOK-SPLIT-ACTION
- (qof-book-use-split-action-for-num-field (gnc-get-current-book)))
- (define (is-filter-member split account-list)
- (define (same-split? s) (equal? s split))
- (define (from-account? s) (member (xaccSplitGetAccount s) account-list))
- (let lp ((splits (xaccTransGetSplitList (xaccSplitGetParent split))))
- (match splits
- (() #f)
- (((? same-split?) . rest) (lp rest))
- (((? from-account?) . _) #t)
- ((_ . rest) (lp rest)))))
(gnc:report-starting (opt-val gnc:pagename-general gnc:optname-reportname))
@@ -2315,12 +2186,33 @@ be excluded from periodic reporting.")
(keylist-get-info reconcile-status-list reconcile-filter 'filter-types)
(keylist-get-info show-void-list void-filter 'how)))
(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)
@@ -2330,18 +2222,130 @@ be excluded from periodic reporting.")
(not (eq? primary-date-subtotal 'none)))
(and (memq secondary-key DATE-SORTING-TYPES)
(not (eq? secondary-date-subtotal 'none)))
- (or (CUSTOM-SORTING? primary-key BOOK-SPLIT-ACTION)
- (CUSTOM-SORTING? secondary-key BOOK-SPLIT-ACTION))))
+ (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
primary-date-subtotal 'renderer-fn)
- (opt-val pagename-sorting optname-prime-subtotal))
+ primary-subtotal)
(memq (opt-val gnc:pagename-display (N_ "Amount"))
'(single double))))
(infobox-display (opt-val gnc:pagename-general optname-infobox-display))
(query (qof-query-create-for-splits)))
+ ;; 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 (match? str)
(cond
(transaction-matcher-regexp
@@ -2358,14 +2362,14 @@ be excluded from periodic reporting.")
(let* ((comparator-function
(if (memq sortkey DATE-SORTING-TYPES)
(let ((date (keylist-get-info
- (sortkey-list BOOK-SPLIT-ACTION)
+ (sortkey-list parameters)
sortkey 'split-sortvalue))
(date-comparator
(keylist-get-info date-subtotal-list
date-subtotal-key 'date-sortvalue)))
(lambda (s)
(and date-comparator (date-comparator (date s)))))
- (or (keylist-get-info (sortkey-list BOOK-SPLIT-ACTION)
+ (or (keylist-get-info (sortkey-list parameters)
sortkey 'split-sortvalue)
(lambda (s) #f))))
(value-of-X (comparator-function split-X))
@@ -2394,6 +2398,16 @@ be excluded from periodic reporting.")
(match? (xaccTransGetNotes (xaccSplitGetParent split)))
(match? (xaccSplitGetMemo split))))
+ (define (is-filter-member split account-list)
+ (define (same-split? s) (equal? s split))
+ (define (from-account? s) (member (xaccSplitGetAccount s) account-list))
+ (let lp ((splits (xaccTransGetSplitList (xaccSplitGetParent split))))
+ (match splits
+ (() #f)
+ (((? same-split?) . rest) (lp rest))
+ (((? from-account?) . _) #t)
+ ((_ . rest) (lp rest)))))
+
(cond
((or (null? c_account_1)
(symbol? account-matcher-regexp)
@@ -2442,8 +2456,8 @@ be excluded from periodic reporting.")
(unless custom-sort?
(qof-query-set-sort-order
query
- (keylist-get-info (sortkey-list BOOK-SPLIT-ACTION) primary-key 'sortkey)
- (keylist-get-info (sortkey-list BOOK-SPLIT-ACTION) secondary-key 'sortkey)
+ (keylist-get-info (sortkey-list parameters) primary-key 'sortkey)
+ (keylist-get-info (sortkey-list parameters) secondary-key 'sortkey)
(list QUERY-DEFAULT-SORT))
(qof-query-set-sort-increasing
query (eq? primary-order 'ascend) (eq? secondary-order 'ascend)
@@ -2512,8 +2526,8 @@ be excluded from periodic reporting.")
(else
(let-values (((table grid csvlist)
- (make-split-table splits options custom-calculated-cells
- begindate enddate c_account_1)))
+ (make-split-table splits options parameters
+ custom-calculated-cells)))
(gnc:html-document-set-title! document report-title)
Summary of changes:
gnucash/report/trep-engine.scm | 533 +++++++++++++++++++++--------------------
1 file changed, 273 insertions(+), 260 deletions(-)
More information about the gnucash-changes
mailing list