diff --git a/src/report/report-system/report-system.scm b/src/report/report-system/report-system.scm index a49504b809..8d71b2666b 100644 --- a/src/report/report-system/report-system.scm +++ b/src/report/report-system/report-system.scm @@ -585,6 +585,7 @@ (export gnc:account-get-comm-balance-interval) (export gnc:group-get-comm-balance-interval) (export gnc:accountlist-get-comm-balance-interval) +(export gnc:accountlist-get-comm-balance-at-date) (export gnc:query-set-match-non-voids-only!) (export gnc:query-set-match-voids-only!) (export gnc:split-voided?) diff --git a/src/report/report-system/report-utilities.scm b/src/report/report-system/report-utilities.scm index bdf2019978..fc0f1d1221 100644 --- a/src/report/report-system/report-utilities.scm +++ b/src/report/report-system/report-utilities.scm @@ -645,6 +645,15 @@ accountlist) collector)) +(define (gnc:accountlist-get-comm-balance-at-date accountlist date) + (let ((collector (gnc:make-commodity-collector))) + (for-each (lambda (account) + (gnc:commodity-collector-merge + collector (gnc:account-get-comm-balance-at-date + account date #f))) + accountlist) + collector)) + ;; utility function - ensure that a query matches only non-voids. Destructive. (define (gnc:query-set-match-non-voids-only! query book) (let ((temp-query (gnc:malloc-query))) diff --git a/src/report/standard-reports/balance-sheet.scm b/src/report/standard-reports/balance-sheet.scm index c7255560e0..21b9a397e1 100644 --- a/src/report/standard-reports/balance-sheet.scm +++ b/src/report/standard-reports/balance-sheet.scm @@ -277,7 +277,6 @@ (gnc:option-value (gnc:lookup-option (gnc:report-options report-obj) pagename optname))) - (define forever-ago (cons 0 0)) (gnc:report-starting reportname) @@ -481,9 +480,8 @@ (gnc:report-percent-done 12) ;; sum any retained earnings (set! neg-retained-earnings - (gnc:accountlist-get-comm-balance-interval - income-expense-accounts - forever-ago date-tp)) + (gnc:accountlist-get-comm-balance-at-date + income-expense-accounts date-tp)) (set! retained-earnings (gnc:make-commodity-collector)) (retained-earnings 'minusmerge neg-retained-earnings diff --git a/src/report/standard-reports/equity-statement.scm b/src/report/standard-reports/equity-statement.scm index 17f2db4a54..6deec36df4 100644 --- a/src/report/standard-reports/equity-statement.scm +++ b/src/report/standard-reports/equity-statement.scm @@ -193,7 +193,6 @@ (gnc:option-value (gnc:lookup-option (gnc:report-options report-obj) pagename optname))) - (define forever-ago (cons 0 0)) (gnc:report-starting reportname) @@ -440,13 +439,11 @@ ;; start and end retained earnings (income - expenses) (set! neg-pre-start-retained-earnings - (gnc:accountlist-get-comm-balance-interval - income-expense-accounts - forever-ago start-date-tp)) ; OK + (gnc:accountlist-get-comm-balance-at-date + income-expense-accounts start-date-tp)) ; OK (set! neg-pre-end-retained-earnings - (gnc:accountlist-get-comm-balance-interval - income-expense-accounts - forever-ago end-date-tp)) ; OK + (gnc:accountlist-get-comm-balance-at-date + income-expense-accounts end-date-tp)) ; OK ;; neg-pre-end-retained-earnings is not used to calculate ;; profit but is used to calculate unrealized gains diff --git a/src/report/standard-reports/trial-balance.scm b/src/report/standard-reports/trial-balance.scm index 82f5da09d4..90e56a90ac 100644 --- a/src/report/standard-reports/trial-balance.scm +++ b/src/report/standard-reports/trial-balance.scm @@ -287,7 +287,6 @@ (gnc:option-value (gnc:lookup-option (gnc:report-options report-obj) pagename optname))) - (define forever-ago (cons 0 0)) (gnc:report-starting reportname)