r18455 - gnucash/trunk/src/report - Fix the bug described in comment 19 of bug 537476, balance sheet wrong without trading accounts.

Mike Alexander mta at code.gnucash.org
Tue Dec 1 00:15:03 EST 2009


Author: mta
Date: 2009-12-01 00:15:02 -0500 (Tue, 01 Dec 2009)
New Revision: 18455
Trac: http://svn.gnucash.org/trac/changeset/18455

Modified:
   gnucash/trunk/src/report/report-system/html-acct-table.scm
   gnucash/trunk/src/report/standard-reports/balance-sheet.scm
Log:
Fix the bug described in comment 19 of bug 537476, balance sheet wrong without trading accounts.  
The problems is that xaccQueryAddAccountMatch and xaccQueryAddAccountGUIDMatch
match all accounts rather than no accounts when given a null account list.  This means
that gnc:accountlist-get-comm-balance-at-date returns a balance for all accounts when
given no accounts.  This caused the balance sheet report to fail if there were no trading
accounts.  There is a similar problem with gnc:account-get-trans-type-splits-interval in 
gnc:html-acct-table-add-accounts! in html-acct-table.scm that is also fixed.


Modified: gnucash/trunk/src/report/report-system/html-acct-table.scm
===================================================================
--- gnucash/trunk/src/report/report-system/html-acct-table.scm	2009-11-30 23:21:50 UTC (rev 18454)
+++ gnucash/trunk/src/report/report-system/html-acct-table.scm	2009-12-01 05:15:02 UTC (rev 18455)
@@ -679,26 +679,31 @@
                                         shares))))
            splits))
 
-        (merge-splits (gnc:account-get-trans-type-splits-interval
-                       accts #f start-date end-date)
-                      #f)
-        (cond
-         ((equal? balance-mode 'post-closing) #t)
-
-         ((equal? balance-mode 'pre-closing)
-          (merge-splits (gnc:account-get-trans-type-splits-interval
-                         accts closing-pattern start-date end-date)
-                        #t))
-
-         ((equal? balance-mode 'pre-adjusting)
-          (merge-splits (gnc:account-get-trans-type-splits-interval
-                         accts closing-pattern start-date end-date)
-                        #t)
-          (merge-splits (gnc:account-get-trans-type-splits-interval
-                         accts adjusting-pattern start-date end-date)
-                        #t))
-         (else (begin (display "you fail it")
-                      (newline))))
+        ;; If you pass a null account list to gnc:account-get-trans-type-splits-interval
+        ;; it returns splits from all accounts rather than from no accounts.  This is
+        ;; probably a bug but we'll work around it for now.
+        (if (not (null? accts))
+            (begin
+              (merge-splits (gnc:account-get-trans-type-splits-interval
+                             accts #f start-date end-date)
+                            #f)
+              (cond
+               ((equal? balance-mode 'post-closing) #t)
+      
+               ((equal? balance-mode 'pre-closing)
+                (merge-splits (gnc:account-get-trans-type-splits-interval
+                               accts closing-pattern start-date end-date)
+                              #t))
+      
+               ((equal? balance-mode 'pre-adjusting)
+                (merge-splits (gnc:account-get-trans-type-splits-interval
+                               accts closing-pattern start-date end-date)
+                              #t)
+                (merge-splits (gnc:account-get-trans-type-splits-interval
+                               accts adjusting-pattern start-date end-date)
+                              #t))
+               (else (begin (display "you fail it")
+                            (newline))))))
         hash-table
         )
 

Modified: gnucash/trunk/src/report/standard-reports/balance-sheet.scm
===================================================================
--- gnucash/trunk/src/report/standard-reports/balance-sheet.scm	2009-11-30 23:21:50 UTC (rev 18454)
+++ gnucash/trunk/src/report/standard-reports/balance-sheet.scm	2009-12-01 05:15:02 UTC (rev 18455)
@@ -507,8 +507,13 @@
 			  neg-retained-earnings
 			  #f)
 	  (set! neg-trading-balance
-	        (gnc:accountlist-get-comm-balance-at-date
-	         trading-accounts date-tp))
+	        ;; If you pass a null account list to gnc:accountlist-get-comm-balance-at-date
+	        ;; it calculates a balance for all accounts, instead of no accounts.  This is 
+	        ;; probably a bug, but for now we'll work around it.
+	        (if (null? trading-accounts)
+	            (gnc:make-commodity-collector)
+	            (gnc:accountlist-get-comm-balance-at-date
+	             trading-accounts date-tp)))
 	  (set! trading-balance (gnc:make-commodity-collector))
 	  (trading-balance 'minusmerge
 	                   neg-trading-balance



More information about the gnucash-changes mailing list