<!--
      (Do not remove this comment block.)
  Version: 2.0.0
  Last modified: July 9th 2006
  Maintainers: 
               Chris Lyttle <chris@wilddev.net>
  Author:
  		Jon Lapham <lapham@extracta.com.br>
  Originally designed by Carol Champagne.
  Translators:
               (translators put your name and email here)
-->
 <appendix id="appendixa">
 <title>Migration Guide</title>
 <para>
This appendix is to help current users of other financial software packages in their migration to GnuCash.  We address the conceptual differences between the layout of GnuCash accounts versus other software packages.
  </para>

<sect1 id="appendixa_accts_vs_cats1">
<title>Using Accounts vs. Categories</title>
<para>
If you are familiar with other personal finance programs, you are already accustomed to tracking your income and expenses as categories. Since GnuCash is a double-entry system (refer to section 2.1), incomes and expenses are tracked in accounts. The basic concept is the same, but the account structure allows more consistency with accepted business practices. So, if you are a business user as well as a home user, GnuCash makes it easy to keep track of your business as well as your personal accounts.
</para>
<para>
Income and expense accounts give you the same information you would get with categories, but they also give you more flexibility in entering your transactions.    In GnuCash, you have the option to enter transactions directly into income and expense accounts through their account registers.   Other programs that use categories do not offer this option, because there is no <quote>account register</quote> for a category.
</para>
<para>
You also have the option in GnuCash to treat income and expense accounts exactly as you would treat categories, if you are more comfortable with that method.  In <trademark class="registered">Quicken</trademark> and similar programs,  transactions require an account and a category.   Substitute an income or expense account name in GnuCash where you would normally enter a category name in the other programs, and the result should be the same.   We will discuss transaction entry in Chapter 4 in greater detail.
</para>
</sect1>

 <sect1 id="appendixa_qif1">
 <title>Organization of QIF Files (Discussion)</title>
 <para>
  </para>
 </sect1>
 <sect1 id="appendixa_entercharge1">
 <title>Common Duplication Issues (Discussion)</title>
 <para>
 </para>
 </sect1>
 <sect1 id="appendixa_enterpay1">
 <title>Checking QIF Data (Discussion)</title>
 <para>
 </para>
 </sect1>

<sect1 id="appendixa_xmlconvert1">
<title>Converting XML GnuCash File</title>
 <para>The Gnucash XML data file can be tranformed to almost any other data
format (e.g., QIF, CSV...) quite easily if one is familiar with XSLT. 
The Gnucash data file is well-formed XML, and it can therefore be run
through an XSLT parser with an associated stylesheet.  This allows one
to transform the file to just about any format that can be designed,
given a properly written stylesheet.</para>

  <para>A few steps need to be followed.  The writing of a stylesheet is a task
for a different time, but if you can get one written, here's what you
need to do:</para>
  <orderedlist>
  <listitem>
  <para>Copy the Gnucash to a working file.  Modify the working file's
&lt;gnc-v2&gt; tag to read something like what's below.  Note that you can
pretty much put anything you want in the '="..."' part; I used the URL
because it's traditional (if such can be said about such a young
technology!).</para>
  <literallayout>
&lt;gnc-v2 xmlns:cd="http://www.gnucash.org/XML/cd"
        xmlns:book="http://www.gnucash.org/XML/book"
        xmlns:gnc="http://www.gnucash.org/XML/gnc"
        xmlns:cmdty="http://www.gnucash.org/XML/cmdty"
        xmlns:trn="http://www.gnucash.org/XML/trn"
        xmlns:split="http://www.gnucash.org/XML/split"
        xmlns:act="http://www.gnucash.org/XML/act"
        xmlns:price="http://www.gnucash.org/XML/price"
        xmlns:ts="http://www.gnucash.org/XML/ts"
        xmlns:slot="http://www.gnucash.org/XML/kvpslot"
        xmlns:cust="http://www.gnucash.org/XML/cust"
        xmlns:entry="http://www.gnucash.org/XML/entry"
        xmlns:lot="http://www.gnucash.org/XML/lot"
        xmlns:invoice="http://www.gnucash.org/XML/invoice"
        xmlns:owner="http://www.gnucash.org/XML/owner"
        xmlns:job="http://www.gnucash.org/XML/job"
        xmlns:billterm="http://www.gnucash.org/XML/billterm"
        xmlns:bt-days="http://www.gnucash.org/XML/bt-days"
        xmlns:sx="http://www.gnucash.org/XML/sx"
        xmlns:fs="http://www.gnucash.org/XML/fs"
        xmlns:addr="http://www.gnucash.org/XML/custaddr"&gt;
 </literallayout>
  </listitem>
  <listitem>
  <para>Create an XSLT stylesheet containing the transformation your desire,
or obtain one that's already written (AFAIK, there aren't any, but I'm
working on a CSV one).</para>
  </listitem>
  <listitem>
<para>Install an XSLT processor such as Saxon
(http://saxon.sourceforge.net/) or Xalan-J  (http://xml.apache.org/). 
Any conforming processor will do, really...</para>
  </listitem>
  <listitem>
<para>Run the work file and the stylesheet through the processor according
to the processor's instructions.</para>
  </listitem>
  <listitem>
<para>You will now have a file in the desired output format.  An
enterprising individual could go so far as to write a stylesheet to
transform the Gnucash data file to an OpenOffice spreadsheet (or
vice-versa, for that matter).  Such things as QIF ought to be a little
less work.</para>
  </listitem>
  </orderedlist>

<para>Benefits are that you don't need to write a Scheme module or a new C
routine to do this transformation.  Anyone who knows or can learn XML
and XSLT can perform this task.  Not much harder, really, than writing a
Web page....</para>

<para>Anyhow, I just wanted this tidbit to be captured somewhere permanently. 
I know the process works on 2.0.0 and CVS HEAD datafiles, and ought to
work on earlier 1.8.x versions, too.  Haven't mucked with 1.6.x in a
while, but it *should* work there, too...</para>

 </sect1>

 </appendix>
