gnucash maint: Revert "[net-charts] deoptimize accounts-list"
John Ralls
jralls at code.gnucash.org
Thu Sep 20 20:46:24 EDT 2018
Updated via https://github.com/Gnucash/gnucash/commit/70bc472f (commit)
from https://github.com/Gnucash/gnucash/commit/39575f22 (commit)
commit 70bc472ffe93b80ad12db56e75332d09d3b0c1df
Author: John Ralls <jralls at ceridwen.us>
Date: Thu Sep 20 17:25:44 2018 -0700
Revert "[net-charts] deoptimize accounts-list"
This reverts commit 941acee04e3598c18eda8cb68c3b024da6f73ab1. It did
indeed deoptimize creating a list of split-balances for time reports.
diff --git a/gnucash/report/standard-reports/net-charts.scm b/gnucash/report/standard-reports/net-charts.scm
index 5a633e3..9e1e885 100644
--- a/gnucash/report/standard-reports/net-charts.scm
+++ b/gnucash/report/standard-reports/net-charts.scm
@@ -33,6 +33,8 @@
(use-modules (gnucash gnc-module))
(use-modules (gnucash gettext))
+(use-modules (gnucash report report-system report-collectors))
+(use-modules (gnucash report report-system collectors))
(use-modules (gnucash report standard-reports category-barchart)) ; for guids of called reports
(gnc:module-load "gnucash/report/report-system" 0)
@@ -304,16 +306,50 @@
(if
(not (null? accounts))
- (let* ((assets-list (process-datelist
- (if inc-exp?
- accounts
- (assoc-ref classified-accounts ACCT-TYPE-ASSET))
- dates-list #t))
- (liability-list (process-datelist
- (if inc-exp?
- accounts
- (assoc-ref classified-accounts ACCT-TYPE-LIABILITY))
- dates-list #f))
+ (let* ((the-account-destination-alist
+ (if inc-exp?
+ (append (map (lambda (account) (cons account 'asset))
+ (assoc-ref classified-accounts ACCT-TYPE-INCOME))
+ (map (lambda (account) (cons account 'liability))
+ (assoc-ref classified-accounts ACCT-TYPE-EXPENSE)))
+ (append (map (lambda (account) (cons account 'asset))
+ (assoc-ref classified-accounts ACCT-TYPE-ASSET))
+ (map (lambda (account) (cons account 'liability))
+ (assoc-ref classified-accounts ACCT-TYPE-LIABILITY)))))
+ (account-reformat (if inc-exp?
+ (lambda (account result)
+ (map (lambda (collector date-interval)
+ (gnc:monetary-neg (collector->monetary collector (second date-interval))))
+ result dates-list))
+ (lambda (account result)
+ (let ((commodity-collector (gnc:make-commodity-collector)))
+ (collector-end (fold (lambda (next date list-collector)
+ (commodity-collector 'merge next #f)
+ (collector-add list-collector
+ (collector->monetary
+ commodity-collector date)))
+ (collector-into-list)
+ result
+ dates-list))))))
+ (work (category-by-account-report-work inc-exp?
+ dates-list
+ the-account-destination-alist
+ (lambda (account date)
+ (make-gnc-collector-collector))
+ account-reformat))
+ (rpt (category-by-account-report-do-work work (cons 50 90)))
+ (assets (assoc-ref rpt 'asset))
+ (liabilities (assoc-ref rpt 'liability))
+ (assets-list (if assets
+ (car assets)
+ (map (lambda (d)
+ (gnc:make-gnc-monetary report-currency 0))
+ dates-list)))
+ (liability-list (if liabilities
+ (car liabilities)
+ (map (lambda (d)
+ (gnc:make-gnc-monetary report-currency 0))
+ dates-list)))
(net-list (map monetary+ assets-list liability-list))
;; Here the date strings for the x-axis labels are
;; created.
Summary of changes:
gnucash/report/standard-reports/net-charts.scm | 56 +++++++++++++++++++++-----
1 file changed, 46 insertions(+), 10 deletions(-)
More information about the gnucash-changes
mailing list