Custom Reports Using Eguile

From GnuCash
Revision as of 18:04, 22 June 2009 by ChrisDennis (talk | contribs) (How to create an eguile report)
Jump to: navigation, search

What is eguile?

eguile is a way of processing a template file to create a guile script.

More specifically, within GnuCash, guile is used to combine HTML and guile code to create a report, such as an invoice or balance sheet.

The GnuCash version of eguile is eguile-gnc.scm, written in early 2009 by Chris Dennis, and based on Neale Pickett's eguile.scm.

For example,

<source lang="html4strict">
<h3><?scm:d coyname ?></h3>
<h2><?scm:d reportname ?> as at <?scm:d (gnc-print-date opt-date-tp) ?></h2>
</source>

could become

<source lang="scheme">
(display "<h3>")(display "Acme Tools Ltd.")(display "</h3>
<h2>)(display "Balance Sheet")(display " as at ")
(display "05/04/2009")(display "<h2">)
</source>

which is then evaluated as guile code to create the text of the report.

...the rest of this page will be here very soon

see [1] for more information.

How to install an eguile report

To try out the report, you need to download eguile-gnc.scm and put it into the report folder (on my system -- Ubuntu -- that's /usr/share/gnucash/guile-modules/gnucash/report/eguile-gnc.scm).

Alternatively, you can put eguile-gnc.scm into your .gnucash directory, and add a line like this to .gnucash/config.user:

    (load-from-path "/path/to/my/home/directory/.gnucash/eguile-gnc.scm")

Install taxinvoice.scm in the usual way (see Custom Reports). Put taxinvoice.eguile.scm in the same place, but note that it's location is an option in taxinvoice.scm -- it can be changed either in the source code, or from the report's option menu. I'm not convinced that this is the best way to include the file name for the template -- suggestions for improvements are welcome.

The report should then show up in 'Sample & Custom' report sub-menu.


taxinvoice.scm includes code to display individual taxes on a per-entry basis, i.e. on each line of the invoice. This relies on a fix to the Swig encoding that is currently in the pipeline as bug #573645, but it includes a work-around so that it simply misses out the extra columns if that fix hasn't been applied.

Please give it a go and let me know how you get on.

How to create an eguile report

...

Internationalisation

Always use _ rather than N_ in the template file. N_ can be used for report option names, help text, and default values.

Available Reports

The following eguile-based reports are available. More will be contributed soon (hopefully).

Tax Invoice

Report file: taxinvoice.scm
Template file: taxinvoice-eguile.scm
CSS file: none
Sample output: PDF
Author: ChrisDennis
Version: 0.01
Last update: June 2009

Notes:

  • taxinvoice.scm includes code to display individual taxes on a per-entry basis, i.e. on each line of the invoice. This relies on a fix to the Swig encoding that is currently in the pipeline as bug #573645, but it includes a work-around so that it simply misses out the extra columns if that fix hasn't been applied. This bug has been fixed in 2.3/2.4.

Balance Sheet

Report file: balsheet-eg.scm
Template file: balsheet-eg.eguile.scm
CSS file: balsheet-eg.css
Sample output: PDF
Author: ChrisDennis
Version: 0.01
Last update: June 2009