David Montenegro's Balance Sheet + Equity Statement patch (#144243).

* Makefile.am: be sure to rebuild make-gnucash-patch and
	  make-gnucash-potfiles when the Makefile changes (which means the
	  PERL paths might have changed).
	* src/scm/paths.scm: change the default config file to 1.9, so we
	  don't screw up users of 1.8.

	* src/report/report-system/html-acct-table.scm:
	  Added file implementing gnc:html-acct-table utility
	  object for easier creation of HTML reports.

        * src/report/standard-reports/balance-sheet.scm:
	  Updated to use the new gnc:html-acct-table object.
	  Added many new options, including report/account
	  form option.

        * src/report/standard-reports/equity-statement.scm:
	  Created Statement of Owner's Equity.
	  (Unsure if correct exchange-fn's are being used.)

        * src/report/report-system/commodity-utilities.scm:
	* src/report/report-system/html-table.scm:
	* src/report/report-system/html-utilities.scm:
	* src/report/report-system/report-system.scm:
	* src/report/report-system/report-utilities.scm:
	  miscellaneous small additions and/or fixes
	Fixes #144243.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@10078 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Derek Atkins
2004-06-24 22:11:26 +00:00
parent ef88252b7c
commit f6b1637e25
16 changed files with 2662 additions and 385 deletions

View File

@@ -1,3 +1,34 @@
2004-06-24 Derek Atkins <derek@ihtfp.com>
* Makefile.am: be sure to rebuild make-gnucash-patch and
make-gnucash-potfiles when the Makefile changes (which means the
PERL paths might have changed).
* src/scm/paths.scm: change the default config file to 1.9, so we
don't screw up users of 1.8.
2004-06-23 David Montenegro <sunrise2000@comcast.net>
* src/report/report-system/html-acct-table.scm:
Added file implementing gnc:html-acct-table utility
object for easier creation of HTML reports.
* src/report/standard-reports/balance-sheet.scm:
Updated to use the new gnc:html-acct-table object.
Added many new options, including report/account
form option.
* src/report/standard-reports/equity-statement.scm:
Created Statement of Owner's Equity.
(Unsure if correct exchange-fn's are being used.)
* src/report/report-system/commodity-utilities.scm:
* src/report/report-system/html-table.scm:
* src/report/report-system/html-utilities.scm:
* src/report/report-system/report-system.scm:
* src/report/report-system/report-utilities.scm:
miscellaneous small additions and/or fixes
Fixes #144243.
2004-06-18 Christian Stimming <stimming@tuhh.de> 2004-06-18 Christian Stimming <stimming@tuhh.de>
* src/scm/main-window.scm, src/scm/main.scm: Added example Menu * src/scm/main-window.scm, src/scm/main.scm: Added example Menu

View File

@@ -63,14 +63,14 @@ CLEANFILES = gnucash-config
## brackets here, instead of the usual @...@. This prevents autoconf ## brackets here, instead of the usual @...@. This prevents autoconf
## from substituting the values directly into the left-hand sides of ## from substituting the values directly into the left-hand sides of
## the sed substitutions. ## the sed substitutions.
make-gnucash-patch: make-gnucash-patch.in make-gnucash-patch: make-gnucash-patch.in Makefile
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
-e 's:@-PERL-@:${PERL}:g' -e 's:@-PERL-@:${PERL}:g'
chmod +x $@.tmp chmod +x $@.tmp
mv $@.tmp $@ mv $@.tmp $@
make-gnucash-potfiles: make-gnucash-potfiles.in make-gnucash-potfiles: make-gnucash-potfiles.in Makefile
rm -f $@.tmp rm -f $@.tmp
sed < $< > $@.tmp \ sed < $< > $@.tmp \
-e 's:@-PERL-@:${PERL}:g' -e 's:@-PERL-@:${PERL}:g'

View File

@@ -6,6 +6,13 @@
# mailing list gnucash-patches@gnucash.org. For more info # mailing list gnucash-patches@gnucash.org. For more info
# consult the README. # consult the README.
# #
# WARNING: By default, this script will checkout an entire
# up to date copy of the source tree in ../tmp/gnucash/.
#
# In order to prevent patches which reverse recent changes
# made in CVS, make sure to "cvs update" in both
# directories before running make-gnucash-patch.
#
# This script requires the programs 'makepatch', 'gzip', # This script requires the programs 'makepatch', 'gzip',
# a 'diff' work-a-like, and 'uuencode'. # a 'diff' work-a-like, and 'uuencode'.
# #

View File

@@ -46,6 +46,7 @@ noinst_DATA = .scm-links
gncscmdir = ${GNC_SHAREDIR}/scm gncscmdir = ${GNC_SHAREDIR}/scm
gncscm_DATA = \ gncscm_DATA = \
commodity-utilities.scm \ commodity-utilities.scm \
html-acct-table.scm \
html-barchart.scm \ html-barchart.scm \
html-document.scm \ html-document.scm \
html-piechart.scm \ html-piechart.scm \

View File

@@ -21,6 +21,15 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (gnc:commodity-collector-contains-commodity? collector commodity)
(let ((ret #f))
(gnc:commodity-collector-map
collector
(lambda (comm amt)
(set! ret (or ret (gnc:commodity-equiv? comm commodity)))))
ret
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Functions to get splits with interesting data from accounts. ;; Functions to get splits with interesting data from accounts.

View File

@@ -202,7 +202,7 @@ We have three different kinds of style control information available:
- the HTML tag to render (specified by 'tag). Note that this - the HTML tag to render (specified by 'tag). Note that this
may be different from the tag used to look up the style (the may be different from the tag used to look up the style (the
one passed to html-markup). one passed to html-markup). (See NB below.)
- Any attributes to be used inside the start tag (listed - Any attributes to be used inside the start tag (listed
individually as 'attribute (list name value)) individually as 'attribute (list name value))
- The font face to use in the body ('font-face) - The font face to use in the body ('font-face)
@@ -259,6 +259,7 @@ We have three different kinds of style control information available:
;; object is rendered. ;; object is rendered.
(gnc:html-text-set-style! txt (gnc:html-text-set-style! txt
"bigred" 'tag "" 'font-color "ff0000" 'font-size 7) "bigred" 'tag "" 'font-color "ff0000" 'font-size 7)
;; ^^ NB: "bigred" is the tag. 'tag "" is the info in the style table.
(gnc:html-document-add-object! doc txt) (gnc:html-document-add-object! doc txt)
(gnc:html-document-render doc)) (gnc:html-document-render doc))

File diff suppressed because it is too large Load Diff

View File

@@ -3,6 +3,8 @@
;; for simple style elements. ;; for simple style elements.
;; Copyright 2000 Bill Gribble <grib@gnumatic.com> ;; Copyright 2000 Bill Gribble <grib@gnumatic.com>
;; ;;
;; * 2004.06.18: David Montenegro, added gnc:html-table-get-cell
;;
;; This program is free software; you can redistribute it and/or ;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as ;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of ;; published by the Free Software Foundation; either version 2 of
@@ -21,6 +23,16 @@
;; Boston, MA 02111-1307, USA gnu@gnu.org ;; Boston, MA 02111-1307, USA gnu@gnu.org
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; NB: In this code, "markup" and "/markup" *do not* refer to
;; style information. Rather, they let you override the tag
;; associated with an html-table row or cell. Style
;; information is stored in addition to this "markup" (in
;; an entirely different record field).
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define <html-table> (define <html-table>
(make-record-type "<html-table>" (make-record-type "<html-table>"
'(col-headers '(col-headers
@@ -125,6 +137,11 @@
(let* ((retval '()) (let* ((retval '())
(push (lambda (l) (set! retval (cons l retval)))) (push (lambda (l) (set! retval (cons l retval))))
(style (gnc:html-table-cell-style cell))) (style (gnc:html-table-cell-style cell)))
; ;; why dont colspans export??!
; (gnc:html-table-cell-set-style! cell "td"
; 'attribute (list "colspan"
; (or (gnc:html-table-cell-colspan cell) 1)))
(gnc:html-document-push-style doc style) (gnc:html-document-push-style doc style)
(push (gnc:html-document-markup-start (push (gnc:html-document-markup-start
doc (gnc:html-table-cell-tag cell) doc (gnc:html-table-cell-tag cell)
@@ -384,6 +401,19 @@
new-num-rows)) new-num-rows))
;; list-set! is 0-based...
;; (let ((a '(0 1 2))) (list-set! a 1 "x") a)
;; => (0 "x" 2)
(define (gnc:html-table-get-cell table row col)
(list-ref-safe (gnc:html-table-get-row table row) col))
(define (gnc:html-table-get-row table row)
(let* ((dd (gnc:html-table-data table))
(len (length dd))
)
(list-ref-safe dd (- (- len 1) row))
))
(define (gnc:html-table-set-cell! table row col . objects) (define (gnc:html-table-set-cell! table row col . objects)
(let ((rowdata #f) (let ((rowdata #f)
(row-loc #f) (row-loc #f)
@@ -518,6 +548,26 @@
remaining-elements) remaining-elements)
#f)))) #f))))
;;
;; It would be nice to have table row/col/cell accessor functions in here.
;; It would also be nice to have table juxtaposition functions, too.
;; i.e., (gnc:html-table-nth-row table n)
;; (gnc:html-table-append-table-horizontal table add-table)
;; (An old merge-table used to exist inside balance-sheet.scm/GnuCash 1.8.9.)
;; Feel free to contribute! :-)
;;
;; This function was moved here from balance-sheet.scm.
(define (gnc:html-table-merge t1 t2)
(begin
(gnc:html-table-set-data! t1
(append
(gnc:html-table-data t2)
(gnc:html-table-data t1)))
(gnc:html-table-set-num-rows-internal!
t1 (+ (gnc:html-table-num-rows t1)
(gnc:html-table-num-rows t2)))))
(define (gnc:html-table-render table doc) (define (gnc:html-table-render table doc)
(let* ((retval '()) (let* ((retval '())
(push (lambda (l) (set! retval (cons l retval))))) (push (lambda (l) (set! retval (cons l retval)))))

View File

@@ -1,7 +1,9 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; html-utilities.scm: Useful functions when using the HTML generator. ;; html-utilities.scm: Useful functions when using the HTML generator.
;; Copyright 2001 Christian Stimming <stimming@tu-harburg.de>
;; ;;
;; Modified slightly by David Montenegro 2004.06.18.
;;
;; Copyright 2001 Christian Stimming <stimming@tu-harburg.de>
;; This program is free software; you can redistribute it and/or ;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as ;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of ;; published by the Free Software Foundation; either version 2 of
@@ -21,22 +23,23 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; returns a list with n #f (empty cell) values ;; returns a list with n #f (empty cell) values
(define (gnc:html-make-empty-cell) #f)
(define (gnc:html-make-empty-cells n) (define (gnc:html-make-empty-cells n)
(if (> n 0) (if (> n 0)
(cons #f (gnc:html-make-empty-cells (- n 1))) (cons #f (gnc:html-make-empty-cells (- n 1)))
'())) (list)))
(define (register-guid type guid) (define (gnc:register-guid type guid)
(gnc:html-build-url gnc:url-type-register (string-append type guid) #f)) (gnc:html-build-url gnc:url-type-register (string-append type guid) #f))
(define (gnc:account-anchor-text acct) (define (gnc:account-anchor-text acct)
(register-guid "acct-guid=" (gnc:account-get-guid acct))) (gnc:register-guid "acct-guid=" (gnc:account-get-guid acct)))
(define (gnc:split-anchor-text split) (define (gnc:split-anchor-text split)
(register-guid "split-guid=" (gnc:split-get-guid split))) (gnc:register-guid "split-guid=" (gnc:split-get-guid split)))
(define (gnc:transaction-anchor-text trans) (define (gnc:transaction-anchor-text trans)
(register-guid "trans-guid=" (gnc:transaction-get-guid trans))) (gnc:register-guid (gnc:transaction-get-guid trans)))
(define (gnc:report-anchor-text report-id) (define (gnc:report-anchor-text report-id)
(gnc:html-build-url gnc:url-type-report (gnc:html-build-url gnc:url-type-report
@@ -117,22 +120,32 @@
(assign-colors (+ i 1))))) (assign-colors (+ i 1)))))
(assign-colors 0)) (assign-colors 0))
;; Appends a horizontal ruler to a html-table with the specified width ;; Appends a horizontal ruler to a html-table with the specified
;; colspan. ;; colspan at, optionally, the specified column.
(define (gnc:html-table-append-ruler! table colspan) (define (gnc:html-table-append-ruler/at! table colskip colspan)
(define empty-cell '())
(gnc:html-table-append-row! (gnc:html-table-append-row!
table table
(list (append (make-list colskip empty-cell)
(gnc:make-html-table-cell/size (list
1 colspan (gnc:make-html-text (gnc:html-markup-hr)))))) (gnc:make-html-table-cell/size
1 colspan (gnc:make-html-text (gnc:html-markup-hr)))))))
(define (gnc:html-table-append-ruler/markup! table markup colspan)
(gnc:html-table-append-row/markup! (define (gnc:html-table-append-ruler/at/markup! table markup colskip colspan)
(define empty-cell "")
(gnc:html-table-append-row/markup!
table table
markup markup
(list (append (make-list colskip empty-cell)
(gnc:make-html-table-cell/size (list
1 colspan (gnc:make-html-text (gnc:html-markup-hr)))))) (gnc:make-html-table-cell/size
1 colspan (gnc:make-html-text (gnc:html-markup-hr)))))))
(define (gnc:html-table-append-ruler! table colspan)
(gnc:html-table-append-ruler/at! table 0 colspan))
(define (gnc:html-table-append-ruler/markup! table markup colspan)
(gnc:html-table-append-ruler/at/markup! table markup 0 colspan))
;; Creates a table cell with some text in it. The cell will be created ;; Creates a table cell with some text in it. The cell will be created
;; with the colspan 'colspan' (the rowspan==1), the content 'content' ;; with the colspan 'colspan' (the rowspan==1), the content 'content'
@@ -140,10 +153,12 @@
;; string, or a <html-text> object. Returns a <html-table-cell> ;; string, or a <html-text> object. Returns a <html-table-cell>
;; object. ;; object.
(define (gnc:html-acct-table-cell colspan content boldface?) (define (gnc:html-acct-table-cell colspan content boldface?)
;; instead of html-markup-b, just use the corresponding html-table-styles.
(define default-style "text-cell")
(define boldface-style "total-label-cell")
(gnc:make-html-table-cell/size/markup (gnc:make-html-table-cell/size/markup
1 colspan 1 colspan
;; instead of html-markup-b, just use the right html-table-styles. (if boldface? boldface-style default-style)
(if boldface? "total-label-cell" "text-cell")
content)) content))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -194,8 +209,10 @@
;; in the appropriate name column. my-commodity (a ;; in the appropriate name column. my-commodity (a
;; <gnc:commodity*>) is the "natural" balance of the current ;; <gnc:commodity*>) is the "natural" balance of the current
;; account. balance (a commodity-collector) is the balance to be ;; account. balance (a commodity-collector) is the balance to be
;; printed. If reverse-balance? == #t then the balance's signs get ;; printed. If reverse-balance? == #t then the balances' signs get
;; reversed. ;; reversed.
;; DM: If you trace this function through gnc:html-build-acct-table,
;; my-commodity always ends up being report-commodity.
(define (gnc:html-acct-table-comm-row-helper! (define (gnc:html-acct-table-comm-row-helper!
table tree-depth report-commodity exchange-fn table tree-depth report-commodity exchange-fn
current-depth my-name my-commodity balance current-depth my-name my-commodity balance
@@ -232,12 +249,14 @@
"number-cell" "number-cell"
(gnc:make-html-text (gnc:html-markup-b domestic-balance))))) (gnc:make-html-text (gnc:html-markup-b domestic-balance)))))
(list (list
(gnc:make-html-table-cell/markup (and foreign-balance
"number-cell" (gnc:make-html-table-cell/markup
foreign-balance) "number-cell"
(gnc:make-html-table-cell/markup foreign-balance))
"number-cell" (and domestic-balance
domestic-balance))) (gnc:make-html-table-cell/markup
"number-cell"
domestic-balance))))
(gnc:html-make-empty-cells (* 2 (- current-depth (gnc:html-make-empty-cells (* 2 (- current-depth
(if group-header-line? 0 1))))))) (if group-header-line? 0 1)))))))
@@ -288,7 +307,7 @@
(gnc:make-gnc-monetary curr val)))) (gnc:make-gnc-monetary curr val))))
(commodity-row-helper! (commodity-row-helper!
;; print no account name ;; print no account name
(car (gnc:html-make-empty-cells 1)) (gnc:html-make-empty-cell)
;; print the account balance in the respective ;; print the account balance in the respective
;; commodity ;; commodity
bal bal
@@ -375,6 +394,37 @@
show-total? get-total-fn show-total? get-total-fn
total-name group-types? show-parent-balance? show-parent-total? total-name group-types? show-parent-balance? show-parent-total?
show-other-curr? report-commodity exchange-fn show-zero-entries?) show-other-curr? report-commodity exchange-fn show-zero-entries?)
;; Select, here, which version of gnc:html-build-acct-table you want
;; to use by default.
(define fn-version 'first)
(if (equal? fn-version 'second)
(gnc:second-html-build-acct-table
start-date end-date
tree-depth show-subaccts? accounts
start-percent delta-percent
show-col-headers?
show-total? get-total-fn
total-name group-types? show-parent-balance? show-parent-total?
show-other-curr? report-commodity exchange-fn show-zero-entries?)
(gnc:first-html-build-acct-table
start-date end-date
tree-depth show-subaccts? accounts
start-percent delta-percent
show-col-headers?
show-total? get-total-fn
total-name group-types? show-parent-balance? show-parent-total?
show-other-curr? report-commodity exchange-fn show-zero-entries?)
)
)
(define (gnc:first-html-build-acct-table
start-date end-date
tree-depth show-subaccts? accounts
start-percent delta-percent
show-col-headers?
show-total? get-total-fn
total-name group-types? show-parent-balance? show-parent-total?
show-other-curr? report-commodity exchange-fn show-zero-entries?)
(let ((table (gnc:make-html-table)) (let ((table (gnc:make-html-table))
(work-to-do 0) (work-to-do 0)
(work-done 0) (work-done 0)
@@ -410,7 +460,7 @@
this-collector x ))) this-collector x )))
(gnc:group-map-all-accounts (gnc:group-map-all-accounts
(lambda (a) (lambda (a)
;; Important: Calculate the balance if and only of the ;; Important: Calculate the balance if and only if the
;; account a is shown, i.e. (use-acct? a) == #t. ;; account a is shown, i.e. (use-acct? a) == #t.
(and (use-acct? a) (and (use-acct? a)
(my-get-balance-nosub a))) (my-get-balance-nosub a)))
@@ -659,7 +709,7 @@
(gnc:html-table-set-style! (gnc:html-table-set-style!
table "th" table "th"
'attribute '("align" "right") 'attribute '("align" "center")
'attribute '("valign" "top")) 'attribute '("valign" "top"))
;; set some column headers ;; set some column headers

View File

@@ -48,7 +48,7 @@
(export gnc:case-exchange-time-fn) (export gnc:case-exchange-time-fn)
(export gnc:sum-collector-commodity) (export gnc:sum-collector-commodity)
(export gnc:sum-collector-stocks) (export gnc:sum-collector-stocks)
(export gnc:commodity-collector-contains-commodity?)
;; options-utilities.scm ;; options-utilities.scm
@@ -84,7 +84,8 @@
(export gnc:html-acct-table-cell) (export gnc:html-acct-table-cell)
(export gnc:html-acct-table-row-helper! ) (export gnc:html-acct-table-row-helper! )
(export gnc:html-acct-table-comm-row-helper!) (export gnc:html-acct-table-comm-row-helper!)
(export gnc:html-build-acct-table ) (export gnc:html-build-acct-table)
(export gnc:first-html-build-acct-table)
(export gnc:html-make-exchangerates) (export gnc:html-make-exchangerates)
(export gnc:html-make-no-account-warning) (export gnc:html-make-no-account-warning)
(export gnc:html-make-empty-data-warning) (export gnc:html-make-empty-data-warning)
@@ -401,6 +402,43 @@
(export gnc:html-style-sheet-find) (export gnc:html-style-sheet-find)
(export gnc:html-style-sheet-remove) (export gnc:html-style-sheet-remove)
;; html-acct-table.scm
(export gnc:colspans-are-working-right)
(export <html-acct-table>)
(export gnc:html-acct-table?)
(export gnc:_make-html-acct-table_)
(export gnc:make-html-acct-table)
(export gnc:make-html-acct-table/env)
(export gnc:make-html-acct-table/env/accts)
(export gnc:_html-acct-table-matrix_)
(export gnc:_html-acct-table-set-matrix!_)
(export gnc:_html-acct-table-env_)
(export gnc:_html-acct-table-set-env!_)
(export gnc:html-acct-table-add-accounts!)
(export gnc:html-acct-table-num-rows)
(export gnc:html-acct-table-num-cols)
(export gnc:html-acct-table-get-row)
(export gnc:html-acct-table-get-cell)
(export gnc:html-acct-table-set-cell!)
(export gnc:html-acct-table-get-row-env)
(export gnc:html-acct-table-set-row-env!)
(export gnc:html-acct-table-append-row)
(export gnc:html-acct-table-prepend-row!)
(export gnc:html-acct-table-append-col)
(export gnc:html-acct-table-prepend-col!)
(export gnc:html-acct-table-remove-last-row!)
(export gnc:html-acct-table-render)
(export gnc:account-code-less-p)
(export gnc:account-name-less-p)
(export gnc:account-path-less-p)
(export gnc:identity)
(export gnc:html-table-add-labeled-amount-line!)
(export gnc:html-table-add-account-balances)
(export gnc:second-html-build-acct-table)
(export gnc:commodity-table)
(export gnc:uniform-commodity?)
;; html-table.scm ;; html-table.scm
(export <html-table>) (export <html-table>)
@@ -465,9 +503,11 @@
(export gnc:html-table-append-row!) (export gnc:html-table-append-row!)
(export gnc:html-table-remove-last-row!) (export gnc:html-table-remove-last-row!)
(export gnc:html-table-prepend-row!) (export gnc:html-table-prepend-row!)
(export gnc:html-table-get-cell)
(export gnc:html-table-set-cell!) (export gnc:html-table-set-cell!)
(export gnc:html-table-append-column!) (export gnc:html-table-append-column!)
(export gnc:html-table-prepend-column!) (export gnc:html-table-prepend-column!)
(export gnc:html-table-merge)
(export gnc:html-table-render) (export gnc:html-table-render)
;; html-text.scm ;; html-text.scm
@@ -530,6 +570,7 @@
(export gnc:make-value-collector) (export gnc:make-value-collector)
(export gnc:make-numeric-collector) (export gnc:make-numeric-collector)
(export gnc:make-commodity-collector) (export gnc:make-commodity-collector)
(export gnc:commodity-collector-commodity-count)
(export gnc:account-get-balance-at-date) (export gnc:account-get-balance-at-date)
(export gnc:account-get-comm-balance-at-date) (export gnc:account-get-comm-balance-at-date)
(export gnc:accounts-get-balance-helper) (export gnc:accounts-get-balance-helper)
@@ -549,6 +590,7 @@
(export gnc:report-percent-done) (export gnc:report-percent-done)
(export gnc:report-finished) (export gnc:report-finished)
(export gnc:accounts-count-splits) (export gnc:accounts-count-splits)
(export gnc:commodity-collector-allzero?)
(load-from-path "commodity-utilities.scm") (load-from-path "commodity-utilities.scm")
(load-from-path "html-barchart.scm") (load-from-path "html-barchart.scm")
@@ -560,6 +602,7 @@
(load-from-path "html-style-sheet.scm") (load-from-path "html-style-sheet.scm")
(load-from-path "html-table.scm") (load-from-path "html-table.scm")
(load-from-path "html-text.scm") (load-from-path "html-text.scm")
(load-from-path "html-acct-table.scm")
(load-from-path "html-utilities.scm") (load-from-path "html-utilities.scm")
(load-from-path "options-utilities.scm") (load-from-path "options-utilities.scm")
(load-from-path "report-utilities.scm") (load-from-path "report-utilities.scm")

View File

@@ -474,6 +474,17 @@
(define (gnc:commodity-collector-list collector) (define (gnc:commodity-collector-list collector)
(collector 'list #f #f)) (collector 'list #f #f))
;; Returns the number of commodities in a commodity-collector.
;; (If this were implemented as a record, I would be able to
;; just (length ...) the alist, but....)
(define (gnc:commodity-collector-commodity-count collector)
(let ((commodities 0))
(gnc:commodity-collector-map
collector
(lambda (comm amt) (set! commodities (+ commodities 1))))
commodities
))
;; Returns zero if all entries in this collector are zero. ;; Returns zero if all entries in this collector are zero.
(define (gnc:commodity-collector-allzero? collector) (define (gnc:commodity-collector-allzero? collector)
(let ((result #t)) (let ((result #t))

View File

@@ -30,6 +30,7 @@ gncscmmod_DATA = \
cash-flow.scm \ cash-flow.scm \
category-barchart.scm \ category-barchart.scm \
daily-reports.scm \ daily-reports.scm \
equity-statement.scm \
net-barchart.scm \ net-barchart.scm \
pnl.scm \ pnl.scm \
portfolio.scm \ portfolio.scm \

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,650 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; equity-statement.scm: statement of owner's equity (net worth)
;;
;; By David Montenegro 2004.06.23 <sunrise2000@comcast.net>
;;
;; * Based on balance-sheet.scm by Robert Merkel <rgmerk@mira.net>
;;
;; * BUGS:
;;
;; The multicurrency support has NOT been tested and IS ALPHA. I
;; really don't if I used the correct exchange functions. Search
;; code for regexp "*exchange-fn".
;;
;; I have also made the educated assumption <grin> that a decrease
;; in the value of a liability or equity also represents an
;; unrealized loss. I *think* that is right, but am not sure.
;;
;; This code makes the assumption that you want your equity
;; statement to no more than daily resolution.
;;
;; The Accounts option panel needs a way to select (and select by
;; default) capital and draw accounts.
;;
;; The variables in this code could use more consistent naming.
;;
;; See also any "FIXME"s in the code.
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of
;; the License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, contact:
;;
;; Free Software Foundation Voice: +1-617-542-5942
;; 59 Temple Place - Suite 330 Fax: +1-617-542-2652
;; Boston, MA 02111-1307, USA gnu@gnu.org
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-module (gnucash report equity-statement))
(use-modules (gnucash main)) ;; FIXME: delete after we finish modularizing.
(use-modules (ice-9 slib))
(use-modules (gnucash gnc-module))
(require 'printf)
(gnc:module-load "gnucash/report/report-system" 0)
(define reportname (N_ "Equity Statement"))
;; define all option's names and help text so that they are properly
;; defined in *one* place.
(define optname-report-title (N_ "Report Title"))
(define opthelp-report-title (N_ "Title for this report"))
(define optname-party-name (N_ "Company name"))
(define opthelp-party-name (N_ "Name of company/individual"))
(define optname-start-date (N_ "Equity Statement Start Date"))
(define opthelp-start-date
(N_ "Start of the period this equity statement will cover"))
(define optname-end-date (N_ "Equity Statement End Date"))
(define opthelp-end-date
(N_ "End of the period this equity statement will cover"))
(define optname-accounts (N_ "Accounts to include"))
(define opthelp-accounts
(N_ "Report only on these accounts"))
(define optname-use-rules (N_ "Show accounting-style rules"))
(define opthelp-use-rules
(N_ "Use rules beneath columns of added numbers like accountants do"))
(define pagename-commodities (N_ "Commodities"))
(define optname-report-commodity (N_ "Report's currency"))
(define optname-price-source (N_ "Price Source"))
(define optname-show-foreign (N_ "Show Foreign Currencies"))
(define opthelp-show-foreign
(N_ "Display any foreign currency amount in an account"))
(define optname-show-rates (N_ "Show Exchange Rates"))
(define opthelp-show-rates (N_ "Show the exchange rates used"))
;; This calculates the increase in the balance(s) of all accounts in
;; <accountlist> over the period from <start-date> to <end-date>.
;; Returns a commodity collector.
;;
;; Note: There is both a gnc:account-get-comm-balance-interval and
;; gnc:group-get-comm-balance-interval which could replace this
;; function....
;;
(define (accountlist-get-comm-balance-at-date accountlist start-date end-date)
;; (for-each (lambda (x) (display x))
;; (list "computing from: " (gnc:print-date start-date) " to "
;; (gnc:print-date end-date) "\n"))
(let ((collector (gnc:make-commodity-collector)))
(for-each (lambda (account)
(let* (
(start-balance
(gnc:account-get-comm-balance-at-date
account start-date #f))
(sb (cadr (start-balance
'getpair
(gnc:account-get-commodity account)
#f)))
(end-balance
(gnc:account-get-comm-balance-at-date
account end-date #f))
(eb (cadr (end-balance
'getpair
(gnc:account-get-commodity account)
#f)))
)
;; (for-each (lambda (x) (display x))
;; (list "Start balance: " sb " : "
;; (gnc:account-get-name account) " : end balance: "
;; eb "\n"))
(collector 'merge end-balance #f)
(collector 'minusmerge start-balance #f)
))
accountlist)
collector))
;; options generator
(define (equity-statement-options-generator)
(let* ((options (gnc:new-options))
(add-option
(lambda (new-option)
(gnc:register-option options new-option))))
(add-option
(gnc:make-string-option
(N_ "General") optname-report-title
"a" opthelp-report-title reportname))
(add-option
(gnc:make-string-option
(N_ "General") optname-party-name
"b" opthelp-party-name (N_ "")))
;; this should default to company name in (gnc:get-current-book)
;; does anyone know the function to get the company name??
;; (GnuCash is *so* well documented... sigh)
;; date at which to report balance
(gnc:options-add-date-interval!
options gnc:pagename-general
optname-start-date optname-end-date "c")
;; accounts to work on
(add-option
(gnc:make-account-list-option
gnc:pagename-accounts optname-accounts
"a"
opthelp-accounts
(lambda ()
(gnc:filter-accountlist-type
'(bank cash credit asset liability stock mutual-fund currency
payable receivable equity income expense)
(gnc:group-get-subaccounts (gnc:get-current-group))))
#f #t))
;; all about currencies
(gnc:options-add-currency!
options pagename-commodities
optname-report-commodity "a")
(gnc:options-add-price-source!
options pagename-commodities
optname-price-source "b" 'weighted-average)
(add-option
(gnc:make-simple-boolean-option
pagename-commodities optname-show-foreign
"c" opthelp-show-foreign #t))
(add-option
(gnc:make-simple-boolean-option
pagename-commodities optname-show-rates
"d" opthelp-show-rates #f))
;; some detailed formatting options
(add-option
(gnc:make-simple-boolean-option
gnc:pagename-display optname-use-rules
"f" opthelp-use-rules #f))
;; Set the accounts page as default option tab
(gnc:options-set-default-section options gnc:pagename-accounts)
options))
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; equity-statement-renderer
;; set up the document and add the table
;; then then return the document or, if
;; requested, export it to a file
;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (equity-statement-renderer report-obj choice filename)
(define (get-option pagename optname)
(gnc:option-value
(gnc:lookup-option
(gnc:report-options report-obj) pagename optname)))
(define forever-ago (cons 0 0))
(gnc:report-starting reportname)
;; get all option's values
(let* (
(report-title (get-option gnc:pagename-general optname-report-title))
(company-name (get-option gnc:pagename-general optname-party-name))
;; this code makes the assumption that you want your equity
;; statement to no more than daily resolution
(start-date-printable (gnc:date-option-absolute-time
(get-option gnc:pagename-general
optname-start-date)))
(start-date-tp (gnc:timepair-end-day-time
(gnc:timepair-previous-day start-date-printable)))
(end-date-tp (gnc:timepair-end-day-time
(gnc:date-option-absolute-time
(get-option gnc:pagename-general
optname-end-date))))
;;(end-date-printable (gnc:date-option-absolute-time
;; (get-option gnc:pagename-general
;; optname-end-date)))
;; why dont we use this? why use any -printable at all?
(accounts (get-option gnc:pagename-accounts
optname-accounts))
(report-commodity (get-option pagename-commodities
optname-report-commodity))
(price-source (get-option pagename-commodities
optname-price-source))
(show-fcur? (get-option pagename-commodities
optname-show-foreign))
(show-rates? (get-option pagename-commodities
optname-show-rates))
(use-rules? (get-option gnc:pagename-display
optname-use-rules))
;; decompose the account list
(split-up-accounts (gnc:decompose-accountlist accounts))
(asset-accounts
(assoc-ref split-up-accounts 'asset))
(liability-accounts
(assoc-ref split-up-accounts 'liability))
(income-expense-accounts
(append (assoc-ref split-up-accounts 'income)
(assoc-ref split-up-accounts 'expense)))
(equity-accounts
(assoc-ref split-up-accounts 'equity))
;; N.B.: equity-accounts will also contain drawing accounts
;; these must still be split-out and itemized separately
(capital-accounts #f)
(drawing-accounts #f)
(doc (gnc:make-html-document))
;; exchange rates calculation parameters
(start-exchange-fn
(gnc:case-exchange-fn
price-source report-commodity start-date-tp))
(end-exchange-fn
(gnc:case-exchange-fn
price-source report-commodity end-date-tp))
)
(gnc:html-document-set-title!
doc (sprintf #f
(string-append "%s %s "
(N_ "For Period")
" %s "
(N_ "to")
" %s")
report-title company-name
(gnc:print-date start-date-printable)
(gnc:print-date end-date-tp)))
(if (null? accounts)
;; error condition: no accounts specified is this *really*
;; necessary?? i'd be fine with an all-zero income statement
;; that would, technically, be correct....
(gnc:html-document-add-object!
doc
(gnc:html-make-no-account-warning
reportname (gnc:report-id report-obj)))
;; Get all the balances for each account group.
(let* ((book-balance #f) ;; assets - liabilities - equity, norm 0
(start-asset-balance #f)
(end-asset-balance #f)
(neg-start-liability-balance #f) ;; credit balances are < 0
(neg-end-liability-balance #f)
(neg-pre-start-retained-earnings #f)
(neg-pre-end-retained-earnings #f)
(neg-net-income #f)
(net-income #f)
(neg-start-equity-balance #f)
(neg-end-equity-balance #f)
(start-capital-balance #f)
(end-capital-balance #f)
(start-drawing-balance #f)
(end-drawing-balance #f)
(start-book-balance #f)
(end-book-balance #f)
(start-unrealized-gains #f)
(end-unrealized-gains #f)
(net-unrealized-gains #f)
(start-total-equity #f)
(end-total-equity #f)
(investments #f)
(draws #f)
(capital-increase #f)
;; Create the account table below where its
;; percentage time can be tracked.
(build-table (gnc:make-html-table)) ;; gnc:html-table
(get-start-balance-fn
(lambda (account)
(gnc:account-get-comm-balance-at-date
account start-date-tp #f)))
(get-end-balance-fn
(lambda (account)
(gnc:account-get-comm-balance-at-date
account end-date-tp #f)))
(terse-period? #t)
(period-for (if terse-period?
(string-append " " (N_ "for Period"))
(string-append
", "
(gnc:print-date start-date-printable) " "
(N_ "to") " "
(gnc:print-date end-date-tp)
)))
)
;; a helper to add a line to our report
(define (report-line
table pos-label neg-label amount col
exchange-fn rule? row-style)
(let* ((neg? (and amount
(gnc:numeric-negative-p
(gnc:gnc-monetary-amount
(gnc:sum-collector-commodity
amount report-commodity exchange-fn)))))
(label (if neg? (or neg-label pos-label) pos-label))
(pos-bal (if neg?
(let ((bal (gnc:make-commodity-collector)))
(bal 'minusmerge amount #f)
bal)
amount))
(bal (gnc:sum-collector-commodity
pos-bal report-commodity exchange-fn))
(balance
(or (and (gnc:uniform-commodity? bal report-commodity) bal)
(and show-fucr?
(gnc:commodity-table
bal report-commodity exchange-fn))
bal
))
(column (or col 0))
)
(gnc:html-table-add-labeled-amount-line!
table 3 row-style rule?
label 0 1 "text-cell"
bal (+ col 1) 1 "number-cell")
)
)
;; sum any unrealized gains
;;
;; Hm... unrealized gains.... This is when you purchase
;; something and its value increases/decreases (prior to
;; your selling it) and you have to reflect that on your
;; balance sheet.
;;
;; I *think* a decrease in the value of a liability or
;; equity constitutes an unrealized loss. I'm unsure about
;; that though....
;;
(define (unrealized-gains-at-date book-balance exchange-fn date-tp)
(let* ((unrealized-gain-collector (gnc:make-commodity-collector))
(weighted-fn
(gnc:case-exchange-fn 'weighted-average
report-commodity date-tp))
(value
(gnc:gnc-monetary-amount
(gnc:sum-collector-commodity book-balance
report-commodity
exchange-fn)))
(cost
(gnc:gnc-monetary-amount
(gnc:sum-collector-commodity book-balance
report-commodity
weighted-fn)))
(unrealized-gain (gnc:numeric-sub-fixed value cost)))
(unrealized-gain-collector 'add report-commodity unrealized-gain)
unrealized-gain-collector
)
)
;; If you ask me, any outstanding(TM) retained earnings and
;; unrealized gains should be added directly into equity,
;; both at the start and end dates of the reporting period.
(gnc:report-percent-done 4)
;; start and end asset balances
(set! start-asset-balance
(gnc:accounts-get-comm-total-assets
asset-accounts get-start-balance-fn)) ; OK
(set! end-asset-balance
(gnc:accounts-get-comm-total-assets
asset-accounts get-end-balance-fn)) ; OK
;; start and end liability balances
(set! neg-start-liability-balance
(gnc:accounts-get-comm-total-assets
liability-accounts get-start-balance-fn)) ; OK
(set! neg-end-liability-balance
(gnc:accounts-get-comm-total-assets
liability-accounts get-end-balance-fn)) ; OK
;; start and end retained earnings (income - expenses)
(set! neg-pre-start-retained-earnings
(accountlist-get-comm-balance-at-date
income-expense-accounts
forever-ago start-date-tp)) ; OK
(set! neg-pre-end-retained-earnings
(accountlist-get-comm-balance-at-date
income-expense-accounts
forever-ago end-date-tp)) ; OK
(set! neg-net-income
(accountlist-get-comm-balance-at-date
income-expense-accounts
start-date-tp end-date-tp)) ; OK
(set! net-income (gnc:make-commodity-collector))
(net-income 'minusmerge neg-net-income #f)
;; start and end (unadjusted) equity balances
(set! neg-start-equity-balance
(gnc:accounts-get-comm-total-assets
equity-accounts get-start-balance-fn)) ; OK
(set! neg-end-equity-balance
(gnc:accounts-get-comm-total-assets
equity-accounts get-end-balance-fn)) ; OK
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; beleive it or not, i think this part is right...
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; start and end unrealized gains
(set! start-book-balance (gnc:make-commodity-collector))
(start-book-balance 'merge start-asset-balance #f)
(start-book-balance 'merge neg-start-liability-balance #f)
(start-book-balance 'merge neg-start-equity-balance #f)
(start-book-balance 'merge neg-pre-start-retained-earnings #f) ; OK
(set! end-book-balance (gnc:make-commodity-collector))
(end-book-balance 'merge end-asset-balance #f)
(end-book-balance 'merge neg-end-liability-balance #f)
(end-book-balance 'merge neg-end-equity-balance #f)
(end-book-balance 'merge neg-pre-end-retained-earnings #f) ; OK
(set! start-unrealized-gains
(unrealized-gains-at-date start-book-balance
start-exchange-fn
start-date-tp)) ; OK
(set! end-unrealized-gains
(unrealized-gains-at-date end-book-balance
end-exchange-fn
end-date-tp)) ; OK
;; unrealized gains accrued during the reporting period...
(set! net-unrealized-gains (gnc:make-commodity-collector))
(net-unrealized-gains 'merge end-unrealized-gains #f)
(net-unrealized-gains 'minusmerge start-unrealized-gains #f) ; OK
;; starting and ending total equity...
(set! start-total-equity (gnc:make-commodity-collector))
(start-total-equity 'minusmerge neg-start-equity-balance #f)
(start-total-equity 'minusmerge neg-pre-start-retained-earnings #f)
(start-total-equity 'merge start-unrealized-gains #f) ; OK
(set! end-total-equity (gnc:make-commodity-collector))
(end-total-equity 'minusmerge neg-end-equity-balance #f)
(end-total-equity 'minusmerge neg-pre-end-retained-earnings #f)
(end-total-equity 'merge end-unrealized-gains #f) ; OK
;;
;; calculate investments & draws...
;;
;; since, as this time, GnuCash does not have any
;; contra-account types, i'm gonna have to fudge this a
;; bit... i'll do a transaction query and classify the
;; splits by debit/credit.
;;
;; FIXME: um... no. that sounds like too much work.
;; ok, for now, just assume draws are zero and investments signed
(set! draws (gnc:make-commodity-collector)) ;; 0
(set! investments (gnc:make-commodity-collector)) ;; 0
(investments 'minusmerge neg-end-equity-balance #f) ;; > 0
(investments 'merge neg-start-equity-balance #f) ;; net increase
;; increase in equity
(set! capital-increase (gnc:make-commodity-collector))
(capital-increase 'merge net-income #f)
(capital-increase 'merge investments #f)
(capital-increase 'minusmerge draws #f)
(capital-increase 'merge net-unrealized-gains #f)
(gnc:report-percent-done 30)
;; Workaround to force gtkhtml into displaying wide
;; enough columns.
(gnc:html-table-append-row!
build-table
(make-list 2 "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;")
)
(gnc:report-percent-done 80)
(report-line
build-table
(string-append (N_ "Capital") ", "
(gnc:print-date start-date-printable))
#f start-total-equity
1 start-exchange-fn #f "primary-subheading"
)
(report-line
build-table
(string-append (N_ "Net income") period-for)
(string-append (N_ "Net loss") period-for)
net-income
0 end-exchange-fn #f #f
)
(report-line
build-table
(string-append (N_ "Investments less withdrawals") period-for)
#f
investments
0 end-exchange-fn #f #f
)
(report-line
build-table
(string-append (N_ "Unrealized gains") period-for)
(string-append (N_ "Unrealized losses") period-for)
net-unrealized-gains
0 end-exchange-fn #f #f
)
(report-line
build-table
(N_ "Increase in capital")
(N_ "Decrease in capital")
capital-increase
1 end-exchange-fn use-rules? #f
)
(report-line
build-table
(string-append (N_ "Captial") ", "
(gnc:print-date end-date-tp))
#f
end-total-equity
1 end-exchange-fn #f "primary-subheading"
)
(gnc:html-document-add-object! doc build-table)
;; add currency information if requested
(gnc:report-percent-done 90)
(and show-rates?
(let* ((curr-tbl (gnc:make-html-table))
(headers (list
(gnc:print-date start-date-printable)
(gnc:print-date end-date-tp)
)
)
(then (gnc:html-make-exchangerates
report-commodity start-exchange-fn accounts))
(now (gnc:html-make-exchangerates
report-commodity end-exchange-fn accounts))
)
(gnc:html-table-set-col-headers! curr-tbl headers)
(gnc:html-table-set-style!
curr-tbl "table" 'attribute '("border" "1"))
(gnc:html-table-set-style!
then "table" 'attribute '("border" "0"))
(gnc:html-table-set-style!
now "table" 'attribute '("border" "0"))
(gnc:html-table-append-ruler! build-table 3)
(gnc:html-table-append-row! curr-tbl (list then now))
(gnc:html-document-add-object! doc curr-tbl)
)
)
(gnc:report-percent-done 100)
;; if sending the report to a file, do so now
;; however, this still doesn't seem to get around the
;; colspan bug... cf. gnc:colspans-are-working-right
(if filename
(let* ((port (open-output-file filename))
(gnc:display-report-list-item
(list doc) port " equity-statement.scm ")
(close-output-port port)
)
)
)
)
)
(gnc:report-finished)
doc
)
)
(gnc:define-report
'version 1
'name reportname
'menu-path (list gnc:menuname-income-expense)
'options-generator equity-statement-options-generator
'renderer (lambda (report-obj)
(equity-statement-renderer report-obj #f #f))
'export-types #f
'export-thunk (lambda (report-obj choice filename)
(equity-statement-renderer report-obj #f filename)))
;; END

View File

@@ -71,6 +71,7 @@
(use-modules (gnucash report advanced-portfolio)) (use-modules (gnucash report advanced-portfolio))
(use-modules (gnucash report average-balance)) (use-modules (gnucash report average-balance))
(use-modules (gnucash report balance-sheet)) (use-modules (gnucash report balance-sheet))
(use-modules (gnucash report equity-statement))
(use-modules (gnucash report cash-flow)) (use-modules (gnucash report cash-flow))
(use-modules (gnucash report category-barchart)) (use-modules (gnucash report category-barchart))
(use-modules (gnucash report daily-reports)) (use-modules (gnucash report daily-reports))

View File

@@ -40,10 +40,10 @@
(gnc:make-dir home-dir))) (gnc:make-dir home-dir)))
(define gnc:current-config-auto (define gnc:current-config-auto
(build-path (getenv "HOME") ".gnucash" "config-1.8.auto")) (build-path (getenv "HOME") ".gnucash" "config-1.9.auto"))
(define gnc:current-saved-reports (define gnc:current-saved-reports
(build-path (getenv "HOME") ".gnucash" "saved-reports-1.8")) (build-path (getenv "HOME") ".gnucash" "saved-reports-1.9"))
(define gnc:load-user-config-if-needed (define gnc:load-user-config-if-needed
(let ((user-config-loaded? #f)) (let ((user-config-loaded? #f))
@@ -74,11 +74,13 @@
;; Don't continue adding to this list. When 2.0 ;; Don't continue adding to this list. When 2.0
;; rolls around bump the 1.4 (unnumbered) files ;; rolls around bump the 1.4 (unnumbered) files
;; off the list. ;; off the list.
'("config-1.8.user" "config-1.6.user" "config.user" '("config-1.9.user" "config-1.8.user"
"config-1.8.auto" "config-1.6.auto" "config.auto")) "config-1.6.user" "config.user"
"config-1.9.auto" "config-1.8.auto"
"config-1.6.auto" "config.auto"))
(gnc:debug "loading saved reports") (gnc:debug "loading saved reports")
(or-map try-load-no-set (or-map try-load-no-set
'("saved-reports-1.8")) '("saved-reports-1.9" "saved-reports-1.8"))
))))) )))))
;; the system config should probably be loaded from some directory ;; the system config should probably be loaded from some directory