AUDIT: r17748 - gnucash/trunk/src/report/report-system - Bug #348860: Fix missing sub-report options when saving a multicolumn report

Christian Stimming cstim at cvs.gnucash.org
Sat Dec 6 16:33:21 EST 2008


Author: cstim
Date: 2008-12-06 16:33:21 -0500 (Sat, 06 Dec 2008)
New Revision: 17748
Trac: http://svn.gnucash.org/trac/changeset/17748

Modified:
   gnucash/trunk/src/report/report-system/report.scm
Log:
Bug #348860: Fix missing sub-report options when saving a multicolumn report

When writing the report options to saved-reports the embedded reports (if any
exist) are stored too. This is important for saving multicolumn reports.

Patch by C. Ernst.
BP

Modified: gnucash/trunk/src/report/report-system/report.scm
===================================================================
--- gnucash/trunk/src/report/report-system/report.scm	2008-12-06 21:33:14 UTC (rev 17747)
+++ gnucash/trunk/src/report/report-system/report.scm	2008-12-06 21:33:21 UTC (rev 17748)
@@ -469,6 +469,24 @@
     #f "  (gnc:restore-report-by-guid ~S ~S ~S options))\n"
     (gnc:report-id report) (gnc:report-type report) (gnc:report-template-name (hash-ref *gnc:_report-templates_* (gnc:report-type report))))))
 
+;; Loop over embedded reports and concat result of each gnc:report-generate-restore-forms
+(define (gnc:report-generate-options-embedded report)
+  (let*
+      ((embedded-reports (gnc:report-embedded-list report))
+       (result-string ""))
+    (if embedded-reports
+        (for-each
+         (lambda (subreport-id)
+           (let*
+               ((subreport (gnc-report-find subreport-id))
+                (subreport-options-text (gnc:report-generate-restore-forms subreport)))
+             (set! result-string (string-append
+                                  result-string
+                                  ";;;; Options for embedded report\n"
+                                  subreport-options-text))))
+         embedded-reports))
+    result-string))
+
 (define (gnc:report-generate-saved-forms report)
   ;; clean up the options if necessary.  this is only needed 
   ;; in special cases.  
@@ -488,6 +506,8 @@
     #f "(let ()\n (define (options-gen)\n  (let ((options (gnc:report-template-new-options/report-guid ~S ~S)))\n"
     (gnc:report-type report) (gnc:report-template-name (hash-ref *gnc:_report-templates_* (gnc:report-type report))))
    (gnc:generate-restore-forms (gnc:report-options report) "options")
+   ;; get options of embedded reports
+   (gnc:report-generate-options-embedded report)
    "  options))\n"
    (simple-format 
     #f " (gnc:define-report \n  'version 1\n  'name ~S\n  'report-guid ~S\n  'parent-type ~S\n  'options-generator options-gen\n  'menu-path (list gnc:menuname-custom)\n  'renderer (gnc:report-template-renderer/report-guid ~S ~S)))\n\n"



More information about the gnucash-changes mailing list