From c7b8d7fa931907c492da060e269d58869a2534cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20K=C3=B6hler?= Date: Sat, 1 Mar 2008 22:42:45 +0000 Subject: [PATCH] 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 git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@16995 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/report/report-system/report-utilities.scm | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/report/report-system/report-utilities.scm b/src/report/report-system/report-utilities.scm index 8d88b3c841..92d1a31b17 100644 --- a/src/report/report-system/report-utilities.scm +++ b/src/report/report-system/report-utilities.scm @@ -597,29 +597,31 @@ ;; 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))) @@ -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))