AUDIT: r16995 - gnucash/trunk/src/report/report-system - Bug#341608: Make txn report correctly match void or non-void txns.

Andreas Köhler andi5 at cvs.gnucash.org
Sat Mar 1 17:42:45 EST 2008


Author: andi5
Date: 2008-03-01 17:42:45 -0500 (Sat, 01 Mar 2008)
New Revision: 16995
Trac: http://svn.gnucash.org/trac/changeset/16995

Modified:
   gnucash/trunk/src/report/report-system/report-utilities.scm
Log:
Bug#341608: Make txn report correctly match void or non-void txns.

gnc:query-set-match-{,non-}voids-only! assigned the result of a query
merge to a locally bound variable instead of returning it somehow.  So
use qof-query-merge-in-place instead and add a few missing
qof-query-destroys as well.

BP


Modified: gnucash/trunk/src/report/report-system/report-utilities.scm
===================================================================
--- gnucash/trunk/src/report/report-system/report-utilities.scm	2008-03-01 20:07:32 UTC (rev 16994)
+++ gnucash/trunk/src/report/report-system/report-utilities.scm	2008-03-01 22:42:45 UTC (rev 16995)
@@ -597,30 +597,32 @@
 ;; utility function - ensure that a query matches only non-voids.  Destructive.
 (define (gnc:query-set-match-non-voids-only! query book)
   (let ((temp-query (qof-query-create-for-splits)))
-     (qof-query-set-book temp-query book)
-     
-     (xaccQueryAddClearedMatch
-	     temp-query
-	     CLEARED-VOIDED
-	     QOF-QUERY-AND)
+    (qof-query-set-book temp-query book)
 
-     (set! temp-query (qof-query-invert temp-query))
+    (xaccQueryAddClearedMatch
+     temp-query
+     CLEARED-VOIDED
+     QOF-QUERY-AND)
 
-     (set! query (qof-query-merge query temp-query QOF-QUERY-AND))))
+    (let ((inv-query (qof-query-invert temp-query)))
+      (qof-query-merge-in-place query inv-query QOF-QUERY-AND)
+      (qof-query-destroy inv-query)
+      (qof-query-destroy temp-query))))
 
 ;; utility function - ensure that a query matches only voids.  Destructive
 
 (define (gnc:query-set-match-voids-only! query book)
   (let ((temp-query (qof-query-create-for-splits)))
-     (qof-query-set-book temp-query book)
-     
-     (xaccQueryAddClearedMatch
-	     temp-query
-	     CLEARED-VOIDED
-	     QOF-QUERY-AND)
+    (qof-query-set-book temp-query book)
 
-     (set! query (qof-query-merge query temp-query QOF-QUERY-AND))))
+    (xaccQueryAddClearedMatch
+     temp-query
+     CLEARED-VOIDED
+     QOF-QUERY-AND)
 
+    (qof-query-merge-in-place query temp-query QOF-QUERY-AND)
+    (qof-query-destroy temp-query)))
+
 (define (gnc:split-voided? split)
   (let ((trans (xaccSplitGetParent split)))
     (xaccTransGetVoidStatus trans)))
@@ -726,14 +728,16 @@
     (xaccQueryAddDescriptionMatch
      str-query matchstr case-sens regexp QOF-QUERY-AND)
     (set! total-query
-	  ;; this is a tad inefficient, but its a simple way to accomplish
-	  ;; description match inversion...
-	  (if pos?
-	      (qof-query-merge sign-query str-query QOF-QUERY-AND)
-	      (qof-query-merge
-	       sign-query (qof-query-invert str-query) QOF-QUERY-AND)
-	      ))
-    
+          ;; this is a tad inefficient, but its a simple way to accomplish
+          ;; description match inversion...
+          (if pos?
+              (qof-query-merge-in-place sign-query str-query QOF-QUERY-AND)
+              (let ((inv-query (qof-query-invert str-query)))
+                (qof-query-merge-in-place
+                 sign-query inv-query QOF-QUERY-AND)
+                qof-query-destroy inv-query)))
+    (qof-query-destroy str-query)
+
     (set! splits (qof-query-run total-query))
     (map (lambda (split)
 	   (let* ((shares (xaccSplitGetAmount split))



More information about the gnucash-changes mailing list