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