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