r23028 - gnucash/trunk/src/report - Reports: Deal with closing transactions.
Geert Janssens
gjanssens at code.gnucash.org
Sun Jun 2 06:33:59 EDT 2013
Author: gjanssens
Date: 2013-06-02 06:33:59 -0400 (Sun, 02 Jun 2013)
New Revision: 23028
Trac: http://svn.gnucash.org/trac/changeset/23028
Modified:
gnucash/trunk/src/report/report-system/report-collectors.scm
gnucash/trunk/src/report/standard-reports/test/test-generic-net-barchart.scm
Log:
Reports: Deal with closing transactions.
Author: Peter Broadbery <p.broadbery at gmail.com>
Modified: gnucash/trunk/src/report/report-system/report-collectors.scm
===================================================================
--- gnucash/trunk/src/report/report-system/report-collectors.scm 2013-06-02 10:33:27 UTC (rev 23027)
+++ gnucash/trunk/src/report/report-system/report-collectors.scm 2013-06-02 10:33:59 UTC (rev 23028)
@@ -28,6 +28,9 @@
(define (split->date split)
(xaccTransGetDate (xaccSplitGetParent split)))
+(define (split-closing? split)
+ (xaccTransGetIsClosingTxn (xaccSplitGetParent split)))
+
(define (splits-up-to accounts startdate enddate)
(gnc:account-get-trans-type-splits-interval accounts #f
startdate
@@ -113,7 +116,7 @@
account-alist datepairs
split-collector
result-collector)))
- (collector-add-all (collector-do collector
+ (collector-add-all (collector-do (collector-where (predicate-not split-closing?) collector)
(progress-collector (length splits) progress-range))
splits)))
@@ -131,8 +134,8 @@
min-date max-date))
(collector (build-category-by-account-collector dest-accounts account-alist datepairs split-collector
result-collector)))
- (collector-add-all (collector-do collector
- (progress-collector (length splits) progress-range))
+ (collector-add-all (collector-do (collector-where (predicate-not split-closing?) collector)
+ (progress-collector (length splits) progress-range))
splits)))
(define (progress-collector size range)
Modified: gnucash/trunk/src/report/standard-reports/test/test-generic-net-barchart.scm
===================================================================
--- gnucash/trunk/src/report/standard-reports/test/test-generic-net-barchart.scm 2013-06-02 10:33:27 UTC (rev 23027)
+++ gnucash/trunk/src/report/standard-reports/test/test-generic-net-barchart.scm 2013-06-02 10:33:59 UTC (rev 23028)
@@ -26,7 +26,7 @@
(null-test asset-report-uuid)
(null-test income-report-uuid)
(single-txn-test asset-report-uuid)
-
+ (closing-test income-report-uuid)
#t))
;; Just prove that the report exists.
@@ -34,7 +34,7 @@
(let* ((template (gnc:find-report-template uuid))
(options (gnc:make-report-options uuid))
(report (constructor uuid "bar" options
- #t #t #f #f))
+ #t #t #f #f))
(renderer (gnc:report-template-renderer template)))
(let ((doc (renderer report)))
@@ -264,3 +264,69 @@
(= 5 (tbl-ref->number tbl 2 1))
(= 3 (tbl-row-count tbl))
(= 4 (tbl-column-count tbl)))))))))
+
+
+(define (closing-test uuid)
+ (let* ((template (gnc:find-report-template uuid))
+ (options (gnc:make-report-options uuid))
+ (report (constructor uuid "bar" options
+ #t #t #f #f))
+ (renderer (gnc:report-template-renderer template)))
+ (let* ((env (create-test-env))
+ (my-asset-account (env-create-root-account env ACCT-TYPE-ASSET
+ (gnc-default-report-currency)))
+ (my-liability-account (env-create-root-account env ACCT-TYPE-LIABILITY
+ (gnc-default-report-currency)))
+ (my-expense-account (env-create-root-account env ACCT-TYPE-EXPENSE
+ (gnc-default-report-currency)))
+ (my-income-account (env-create-root-account env ACCT-TYPE-INCOME
+ (gnc-default-report-currency)))
+ (my-equity-account (env-create-root-account env ACCT-TYPE-EQUITY
+ (gnc-default-report-currency)))
+ (date-0 (gnc:get-start-this-month))
+ (date-1 (gnc:timepair-next-day date-0))
+ (date-2 (gnc:timepair-next-day date-1))
+ (date-3 (gnc:timepair-next-day date-2)))
+
+ (env-create-transaction env date-1 my-income-account my-asset-account (gnc:make-gnc-numeric -1 1))
+ (env-create-transaction env date-2 my-income-account my-asset-account (gnc:make-gnc-numeric -2 1))
+ (env-create-transaction env date-3 my-income-account my-asset-account (gnc:make-gnc-numeric -3 1))
+
+ (let ((closing-txn (env-create-transaction env date-2 my-asset-account my-equity-account
+ (gnc:make-gnc-numeric 300 1))))
+ (xaccTransSetIsClosingTxn closing-txn #t))
+
+ (begin
+ (set-option report gnc:pagename-display "Show table" #t)
+ (set-option report gnc:pagename-general "Start Date" (cons 'absolute date-0))
+ (set-option report gnc:pagename-general "End Date" (cons 'absolute date-3))
+ (set-option report gnc:pagename-general "Step Size" 'DayDelta)
+ (set-option report gnc:pagename-general "Price Source" 'pricedb-nearest)
+ (set-option report gnc:pagename-general "Report's currency" (gnc-default-report-currency))
+ (set-option report gnc:pagename-accounts "Accounts" (list my-income-account my-expense-account))
+
+ (let ((doc (renderer report)))
+ (gnc:html-document-set-style-sheet! doc
+ (gnc:report-stylesheet report))
+ (let* ((result (gnc:html-document-render doc #f))
+ (tbl (stream->list
+ (pattern-streamer "<tr>"
+ (list (list "<string> ([0-9][0-9])/([0-9][0-9])/([0-9][0-9])</td>"
+ 1 2 3)
+ (list "<number> ([^<]*)</td>" 1)
+ (list "<number> ([^<]*)</td>" 1)
+ (list "<number> ([^<]*)</td>" 1))
+ result))))
+ (format #t "~a\n" tbl)
+ (logging-and (every (lambda (row)
+ (and (= (string->number (car (fourth row)))
+ (+ (string->number (car (second row)))
+ (string->number (car (third row)))))))
+ tbl)
+ (= 0 (tbl-ref->number tbl 0 1))
+ (= 1 (tbl-ref->number tbl 1 1))
+ (= 2 (tbl-ref->number tbl 2 1))
+ (= 3 (tbl-ref->number tbl 3 1))
+ (= 4 (tbl-row-count tbl))
+ (= 4 (tbl-column-count tbl)))))))))
+
More information about the gnucash-changes
mailing list