mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[trial-balance] speedup: retrieve closing/adjusting splits once
only 2 qof-query at the start, instead of 2 qof-query per account
This commit is contained in:
parent
6e12bf81a9
commit
0ec82872b0
@ -691,32 +691,38 @@
|
|||||||
;; it stores a two-element list of commodity collectors:
|
;; it stores a two-element list of commodity collectors:
|
||||||
;; (list debit-collector credit-collector)
|
;; (list debit-collector credit-collector)
|
||||||
(let* ((row 0)
|
(let* ((row 0)
|
||||||
(rows (gnc:html-acct-table-num-rows acct-table)))
|
(rows (gnc:html-acct-table-num-rows acct-table))
|
||||||
|
(closing-splits
|
||||||
|
(gnc:account-get-trans-type-splits-interval
|
||||||
|
all-accounts (list (list 'str closing-str)
|
||||||
|
(list 'cased closing-cased)
|
||||||
|
(list 'regexp closing-regexp)
|
||||||
|
(list 'closing #t))
|
||||||
|
start-date end-date))
|
||||||
|
(adjusting-splits
|
||||||
|
(gnc:account-get-trans-type-splits-interval
|
||||||
|
all-accounts (list (list 'str adjusting-str)
|
||||||
|
(list 'cased adjusting-cased)
|
||||||
|
(list 'regexp adjusting-regexp))
|
||||||
|
start-date end-date)))
|
||||||
|
|
||||||
|
(define (sum-account-splits account splits)
|
||||||
|
(let ((total (gnc:make-commodity-collector))
|
||||||
|
(comm (xaccAccountGetCommodity account)))
|
||||||
|
(for-each
|
||||||
|
(lambda (s)
|
||||||
|
(when (equal? (xaccSplitGetAccount s) account)
|
||||||
|
(total 'add comm (xaccSplitGetAmount s))))
|
||||||
|
splits)
|
||||||
|
total))
|
||||||
|
|
||||||
(while (< row rows)
|
(while (< row rows)
|
||||||
(let* ((env (gnc:html-acct-table-get-row-env acct-table row))
|
(let* ((env (gnc:html-acct-table-get-row-env acct-table row))
|
||||||
(acct (get-val env 'account))
|
(acct (get-val env 'account))
|
||||||
(group (list acct))
|
(group (list acct))
|
||||||
(curr-bal (get-val env 'account-bal))
|
(curr-bal (get-val env 'account-bal))
|
||||||
(closing
|
(closing (sum-account-splits acct closing-splits))
|
||||||
(gnc:account-get-trans-type-balance-interval-with-closing
|
(adjusting (sum-account-splits acct adjusting-splits))
|
||||||
group
|
|
||||||
(list (list 'str closing-str)
|
|
||||||
(list 'cased closing-cased)
|
|
||||||
(list 'regexp closing-regexp)
|
|
||||||
(list 'closing #t)
|
|
||||||
)
|
|
||||||
start-date end-date
|
|
||||||
))
|
|
||||||
(adjusting
|
|
||||||
(gnc:account-get-trans-type-balance-interval-with-closing
|
|
||||||
group
|
|
||||||
(list (list 'str adjusting-str)
|
|
||||||
(list 'cased adjusting-cased)
|
|
||||||
(list 'regexp adjusting-regexp)
|
|
||||||
)
|
|
||||||
start-date end-date
|
|
||||||
))
|
|
||||||
(is? (member acct all-is-accounts))
|
(is? (member acct all-is-accounts))
|
||||||
(ga-or-is? (or (member acct all-ga-accounts) is?))
|
(ga-or-is? (or (member acct all-ga-accounts) is?))
|
||||||
(pos-adjusting
|
(pos-adjusting
|
||||||
|
Loading…
Reference in New Issue
Block a user