[office/kmymoney/Handbook-5.2] doc: Completed first pass on QIF import/export.

Jack Ostroff null at kde.org
Thu Oct 19 00:42:20 BST 2023


Git commit 6d19ac70e7c201118e1f5e8173be579a18d80343 by Jack Ostroff.
Committed on 19/10/2023 at 01:41.
Pushed by ostroffjh into branch 'Handbook-5.2'.

Completed first pass on QIF import/export.

A  +45   -0    doc/details-impexp-removed.docbook
M  +203  -279  doc/details-impexp.docbook
A  +71   -0    doc/preferences-plugin.svg
A  +-    --    doc/qifimport-qifprofileamount.png
A  +-    --    doc/qifimport-qifprofilefilter.png

https://invent.kde.org/office/kmymoney/-/commit/6d19ac70e7c201118e1f5e8173be579a18d80343

diff --git a/doc/details-impexp-removed.docbook b/doc/details-impexp-removed.docbook
new file mode 100644
index 000000000..e288b257f
--- /dev/null
+++ b/doc/details-impexp-removed.docbook
@@ -0,0 +1,45 @@
+<!-- This is stuff that was commented out in details.impexp.docbook, from the QIF
+     import section.  I am moving it here to clean up that file, but it is still not
+     sure if this material is still needed anywhere.  I've modified the nesting to
+     make it look more legal.  -->
+
+<sect2><title>Accepting the imported transactions</title>
+
+<para>
+<screenshot>
+  <screeninfo>Imported transactions</screeninfo>
+  <mediaobject>
+    <imageobject>
+      <imagedata fileref="qifimportverify.png" format="PNG" />
+    </imageobject>
+    <textobject>
+      <phrase>Imported transactions</phrase>
+    </textobject>
+  </mediaobject>
+</screenshot>
+</para>
+
+<para>
+  Some of your transactions may be flashing red in the ledger.  This is because they
+  need to be assigned a category.  The importer was not able to automatically assign
+  a category based on your past transaction history.
+</para>
+
+<para>
+  Transaction data can be edited or even deleted if needed.  To edit a transaction
+  simply double-click on the entry or hit enter when the entry is highlighted.  Once
+  finished click on <guibutton>OK</guibutton> to accept the imported transactions or
+  <guibutton>Cancel</guibutton> to remove the imported transactions.
+</para>
+</sect2>
+
+
+<sect2><title>Importing Investments</title>
+<para>
+  Please note that if you are importing a file with investment transactions, those
+  investments must first exist in your &kmymoney; file.  The trading symbol is used
+  to match, so please ensure that the symbol in &kmymoney; is exactly the same as the
+  one in the file you're importing.
+</para>
+</sect2>
+
diff --git a/doc/details-impexp.docbook b/doc/details-impexp.docbook
index 3303f82cf..63989ff54 100644
--- a/doc/details-impexp.docbook
+++ b/doc/details-impexp.docbook
@@ -5,7 +5,7 @@
     <author> &Ace.Jones; &Ace.Jones.mail; </author>
     <author> &Jack.H.Ostroff; &Jack.H.Ostroff.mail; </author>
   </authorgroup>
-  <date>2023-10-05</date>
+  <date>2023-20-05</date>
   <releaseinfo>5.2</releaseinfo>
 </chapterinfo>
 
@@ -19,14 +19,15 @@
 
 <title>&gnucash; Importer</title>
 
-<sect2>
-<title>&gnucash; Files</title>
+<sect2><title>&gnucash; Files</title>
 
 <para>
-  The &kmymoney; &gnucash; importer handles direct reading of standard (&XML;) files
-  as produced by &gnucash; versions 1.8 and 2.0.  File from more recent versions
-  should also be imported without problem, but there is no recent testing to confirm
-  this.  Specifically, however, the following are not supported:
+  The &kmymoney; &gnucash; importer is known to handle direct reading of standard
+  (&XML;) files as produced by &gnucash; versions 1.8 and 2.0.  File from more recent
+  versions should also be imported without problem.  There is no recent, formal
+  testing to confirm this, but the developers' mailing list &devlist; has a report of
+  success importing a file from &gnucash; 5.3.  Specifically, however, the following
+  are not supported:
 </para>
 
 <itemizedlist>
@@ -63,11 +64,9 @@
 </para>
 </sect2>
 
-<sect2>
-<title>Similarities, Differences, and Terminology</title>
+<sect2><title>Similarities, Differences, and Terminology</title>
 
-<sect3>
-<title>Small Business Usage</title>
+<sect3><title>Small Business Usage</title>
 
 <para>
   It should be noted that &kmymoney; is a <emphasis>personal</emphasis> finance
@@ -78,11 +77,9 @@
 </para>
 </sect3>
 
-<sect3>
-<title>Accounts</title>
+<sect3><title>Accounts</title>
 
-<sect4>
-<title>Account types</title>
+<sect4><title>Account types</title>
 
 <para>
   For both products, the highest level of structure in the file is the
@@ -97,8 +94,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Categories</title>
+<sect4><title>Categories</title>
 
 <para>
   &kmymoney; uses the term Category to denote an account of an Income or Expense
@@ -109,8 +105,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Structure and Placeholders</title>
+<sect4><title>Structure and Placeholders</title>
 
 <para>
   &gnucash; supports the use of Placeholder accounts. In effect, these are just
@@ -122,8 +117,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Account Type map</title>
+<sect4><title>Account Type map</title>
 
 <informaltable frame='all'>
 <tgroup cols='2' align='left' colsep='1' rowsep='1'>
@@ -187,11 +181,9 @@
 </sect4>
 </sect3>
 
-<sect3>
-<title>Transactions and Splits</title>
+<sect3><title>Transactions and Splits</title>
 
-<sect4>
-<title>Balanced transactions</title>
+<sect4><title>Balanced transactions</title>
 
 <para>
   In both programs, data is entered in the form of transactions, each generally
@@ -204,8 +196,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Payees</title>
+<sect4><title>Payees</title>
 
 <para>
   &kmymoney; prefers that all transactions have a Payee (a generic term that
@@ -215,8 +206,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Transfers</title>
+<sect4><title>Transfers</title>
 
 <para>
   &kmymoney; uses the term Transfer to describe a transaction which does not
@@ -225,8 +215,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Reconcile</title>
+<sect4><title>Reconcile</title>
 
 <para>
   &kmymoney; provides an account reconciliation function similar to that of
@@ -235,16 +224,14 @@
 </sect4>
 </sect3>
 
-<sect3>
-<title>Commodities</title>
+<sect3><title>Commodities</title>
 
 <para>
   &gnucash; uses the term Commodity to cover both currencies and non-currency assets.
   These are treated separately in &kmymoney;.
 </para>
 
-<sect4>
-<title>Currencies</title>
+<sect4><title>Currencies</title>
 
 <para>
   &kmymoney; has built-in support for all foreign <link
@@ -265,8 +252,7 @@
 </note>
 </sect4>
 
-<sect4 id="gncsecurities">
-<title>Securities and Investments</title>
+<sect4 id="gncsecurities"><title>Securities and Investments</title>
 
 <para>
   Non-currency assets (typically stocks and bonds) are called Securities by
@@ -303,8 +289,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Prices and currency rates</title>
+<sect4><title>Prices and currency rates</title>
 
 <para>
   Security prices and currency exchange rates, as displayed in the &gnucash; Price
@@ -313,8 +298,7 @@
 </para>
 </sect4>
 
-<sect4 id="details.impexp.gncquotes">
-<title>Online Quotes</title>
+<sect4 id="details.impexp.gncquotes"><title>Online Quotes</title>
 
 <para>
   For obtaining online price and currency rate quotations, &gnucash; uses a Perl
@@ -348,8 +332,7 @@
 </sect4>
 </sect3>
 
-<sect3 id="gncschedules">
-<title>Scheduled Transactions</title>
+<sect3 id="gncschedules"><title>Scheduled Transactions</title>
 
 <para>
   &kmymoney; does not retain the separation made in &gnucash; between template
@@ -358,8 +341,7 @@
   likely to be of great significance.
 </para>
 
-<sect4>
-<title>Schedule types</title>
+<sect4><title>Schedule types</title>
 
 <para>
   &kmymoney; classifies all schedules as one of three types: Bills, Deposits, or
@@ -370,8 +352,7 @@
 </para>
 </sect4>
 
-<sect4>
-<title>Suspect Schedules</title>
+<sect4><title>Suspect Schedules</title>
 
 <para>
   Some features of &gnucash; scheduled transactions are not available in &kmymoney;,
@@ -406,8 +387,7 @@
 </sect4>
 </sect3>
 
-<sect3>
-<title>Reports</title>
+<sect3><title>Reports</title>
 
 <para>
   &kmymoney; provides a comprehensive selection of configurable reports, described in
@@ -417,8 +397,7 @@
 </sect3>
 </sect2>
 
-<sect2>
-<title>Selecting Importer Options</title>
+<sect2><title>Selecting Importer Options</title>
 
 <para id="details.impexp.gncoptions">
   <screenshot>
@@ -430,16 +409,14 @@
   </screenshot>
 </para>
 
-<sect3>
-<title>Investment Handling</title>
+<sect3><title>Investment Handling</title>
 
 <para>
   See <link linkend="gncsecurities">"Securities and Investments"</link> above.
 </para>
 </sect3>
 
-<sect3>
-<title>Online Quotes</title>
+<sect3><title>Online Quotes</title>
 
 <para>
   Turn this off if you wish to use the native method for future online price quotes.
@@ -448,16 +425,14 @@
 </para>
 </sect3>
 
-<sect3>
-<title>Scheduled Transactions</title>
+<sect3><title>Scheduled Transactions</title>
 
 <para>
   See <link linkend="gncschedules">"Scheduled Transactions"</link> above.
 </para>
 </sect3>
 
-<sect3>
-<title>Decoding Options</title>
+<sect3><title>Decoding Options</title>
 
 <para>
   If your native language is written in letters or symbols which are different from
@@ -474,8 +449,7 @@
 </para>
 </sect3>
 
-<sect3>
-<title>Transaction Notes option</title>
+<sect3><title>Transaction Notes option</title>
 
 <para>
   Under some usage conditions, non-split &gnucash; transactions may contain residual,
@@ -487,8 +461,7 @@
 </para>
 </sect3>
 
-<sect3>
-<title>Debug Options</title>
+<sect3><title>Debug Options</title>
 
 <para>
   These need only be used in the event of import problems.  If you have such
@@ -500,8 +473,7 @@
 </sect3>
 </sect2>
 
-<sect2>
-<title>Import Report</title>
+<sect2><title>Import Report</title>
 
 <para>
   At the end of processing, the importer produces a report showing the number of
@@ -536,21 +508,18 @@
 </sect2>
 </sect1>
 
-<sect1 id="details.impexp.qifimp">
-<sect1info>
+<sect1 id="details.impexp.qifimp"><sect1info>
   <author>&Thomas.Baumgart; &Thomas.Baumgart.mail;</author>
   <author> &Jack.H.Ostroff; &Jack.H.Ostroff.mail; </author>
 </sect1info>
 
 <title>QIF Importer</title>
 
-<sect2>
-<title>QIF format considered harmful</title>
-
+<sect2><title>QIF format considered harmful</title>
 <para>
-  Generally speaking, the QIF format should be avoided wherever possible.  It is a
-  poor choice for transporting financial data.  Among other things, QIF suffers from
-  these problems:
+  Generally speaking, the QIF format should be avoided wherever possible.  For many
+  reasons, it is a poor choice for transporting financial data.  Among other things,
+  QIF suffers from these problems:
 </para>
 
 <itemizedlist>
@@ -578,12 +547,10 @@
 </para>
 </sect2>
 
-<sect2>
-<title>How to import a QIF file</title>
-
+<sect2><title>How to import a QIF file</title>
 <para>
-  To import a QIF file, first ensure you have a valid &kmymoney; file open.  Then
-  select <menuchoice> <guimenu>File</guimenu> <guisubmenu>Import</guisubmenu>
+  To import a QIF file, first ensure you have a valid &kmymoney; file open, then
+  select the <menuchoice> <guimenu>File</guimenu> <guisubmenu>Import</guisubmenu>
   <guimenuitem>QIF...</guimenuitem> </menuchoice> menu item.
 </para>
 	
@@ -598,23 +565,28 @@
 </para>
 
 <para>
-  The resulting dialog prompts for the QIF filename allowing you to type in the full
+  The resulting dialog prompts for the QIF filename, allowing you to type in the full
   path to the file or to locate the file by clicking on the
   <guibutton>Browse</guibutton> button.
 </para>
 
 <para>
   Note that &kmymoney; differentiates between the import of a bank statement file and
-  a file with historic data exported from another application.  The default is to
-  import a bank statement file.  In case you are importing data from your previous
-  personal finance manager application, select the appropriate option.
+  a file with historic data exported from another application.  A bank statement file
+  does not necessarily include all the data related to a single bank statement; it
+  may contain only one or a few transactions.  The default is to import a bank
+  statement file.  In case you are importing data from your previous personal finance
+  manager application, select the appropriate option.
 </para>
 
 <para>
-  In general, the default QIF profile should work with your QIF data.  In some cases
-  it might become necessary to use a modified QIF profile.  See the <link
-  linkend="details.impexp.qifimp.profile">next section</link> for more details on
-  that subject.
+  Next, you need to select a QIF Profile for the import.  Because there is no
+  universally standard format for a QIF file, different vendors have taken liberties
+  with the format, and introduced their own nuances.  The QIF Profile allows
+  &kmymoney; to know about the peculiarities of your file.  In general, the default
+  QIF profile should work with most QIF files.  In some cases it might be necessary to
+  use a modified QIF profile.  See the <link linkend="details.impexp.qif.profile">
+  next section</link> for more details on that subject.
 </para>
 
 <para>
@@ -680,172 +652,9 @@
   separate section of this document.
   <!-- FIXME:  use correct link.  -->
 </para>
-
-</sect2>
-
-<!-- FIXME:  confirm whether to keep or just delete this section -->
-<!--
-<sect2>
-<title>Accepting the imported transactions</title>
-
-<para>
-  When &kmymoney; has finished importing the QIF transactions the account will
-  be shown with the imported transactions listed in Yellow.
-</para>
-
-<para>
-<screenshot>
-	<screeninfo>Imported transactions</screeninfo>
-	<mediaobject>
-	<imageobject>
-	<imagedata fileref="qifimportverify.png" format="PNG" />
-	</imageobject>
-	<textobject>
-	<phrase>Imported transactions</phrase>
-	</textobject>
-	</mediaobject>
-</screenshot>
-</para>
-
-<para>
-	Some of your transactions may be flashing red in the ledger.  
-	This is because they need to be assigned a category.  
-	The importer was not able to automatically assign a category based on your past transaction history.
-</para>
-
-<para>
-    Transaction data can be edited or even deleted if needed.  To edit a
-    transaction simply double-click on the entry or hit enter when the entry is
-    highlighted.  Once finished click on <guibutton>OK</guibutton> to accept the imported
-    transactions or <guibutton>Cancel</guibutton> to remove the imported transactions.
-</para>
-
-</sect2>
-
-<sect2><title>Importing Investments</title>
-
-<para>
-    Please note that if you are importing a file with investment transactions, those investments must first exist in your &kmymoney; file.
-    The trading symbol is used to match, so please ensure that the symbol in &kmymoney; is exactly the same as the one in the file you're importing.
-</para>
-</sect2>
--->
-
-<sect2 id="details.impexp.qifimp.profile">
-<title>Setting up a QIF profile</title>
-
-<para>
-  Because there is no universally standard format for a QIF file, different vendors
-  have taken liberties with the format, and introduced their own nuances.  The QIF
-  Profile allows &kmymoney; to know about the peculiarities of your file.  To edit an
-  existing QIF Profile, or to create a new one, bring up the QIF Importer dialog by
-  selecting <menuchoice> <shortcut> <keycombo>&Ctrl;&Shift;<keycap>,</keycap>
-  </keycombo> </shortcut> <guimenu>Settings</guimenu> <guimenuitem>Configure
-  &kmymoney;...</guimenuitem> </menuchoice> from the main menu, clicking on
-  <guilabel>Plugins</guilabel> at the bottom of the left panel, and clicking the
-  &configicon; button on the entry for <quote>QIF Importer</quote>.
-  <!-- FIXME: do we want to use the plugins icon from that left panel here? -->
-</para>
-
-<para>
-  <screenshot>
-    <mediaobject>
-      <imageobject>
-	<imagedata fileref="qifimport-qifprofileeditor.png" format="PNG" />
-      </imageobject>
-      <textobject>
-	<phrase>QIF Profile Editor</phrase>
-      </textobject>
-    </mediaobject>
-  </screenshot>
-</para>
-
-<para>
-  On the left, the Profile selector displays a list of all existing QIF Importer
-  Profiles, select one to edit its configuration.  To create an new profile, press
-  the <guibutton>New</guibutton> button.  You can rename an existing profile by
-  selecting it in the Profile selector and clicking the <guibutton>Rename</guibutton>
-  button, and delete on with the <guibutton>Delete</guibutton> button.  Clicking the
-  <guibutton>Reset</guibutton> button resets all the fields to their default values.
-</para>
-
-<!-- FIXME: what do these all actually do?  do we want/need separate images for each?
-     -->
-<para>
-  The right area of the dialog has four tabs.
-</para>
-
-<para>
-  The <quote>General</quote> tab contains a description and fields 
-</para>
-
-<para>
-  The <quote>Filter</quote> tab allows you to specify a filter program or script to
-  be applied when this profile is chosen for import.  See the following section for
-  more details.
-</para>
-
-<para>
-  The <quote>Date</quote> tab
-</para>
-
-<para>
-  The <quote>Amounts</quote> tab
-</para>
-
-<note>
-<para>
-  Previous versions of &kmymoney; used to have a tab for date and amount
-  specifications.  &kmymoney; now determines those settings by scanning the file.  If
-  it cannot figure out the proper settings, it will interrogate the user during
-  import.
-</para>
-</note>
-
-<!--
-<para>
-	The most commonly changed thing between QIF implementations is the date format.  
-	So if this is the first time you're importing a QIF file, spend a few moments to figure out what format the dates are in, and set the QIF Profile accordingly.  
-	See the discussion below on apostrophe format for more details.
-</para>
-
-<para>
-	<screenshot>
-	<mediaobject>
-	<imageobject>
-	<imagedata fileref="qifimport-qifprofiledate.png" format="PNG" />
-	</imageobject>
-	<textobject>
-	<phrase>QIF Profile Date</phrase>
-	</textobject>
-	</mediaobject>
-	</screenshot>
-</para>
-
-</sect2>
-
-<sect2><title>Apostrophe format</title>
-
-<para>
-	Many common QIF writers use a 2-digit representation for the year. 
-	This is ambiguous, because the importer cannot know which century the date belongs in.
-	To make things even more complicated, QIF files will often used an apostrophe as a year separator to indicate that the date belongs in the OTHER century from the default.
-</para>
-<para>
-	For example, if the default century is 1900-1999, the date 12/31/95 would mean 1995.  The date 12/31'05 would mean 2005.
-</para>
-<para>
-	Because the QIF format is not standardized, it's impossible to know which century is desired.
-	This is why you have to explicitly state it in the QIF profile.
-	You do this by specifying which century is intended when an apostrophe is found.
-	In the example above, you would set the Apostrophe Format to "2000-2099", so dates with an apostrophe will be interpreted as being > year 2000.
-	In this case, dates without an apostrophe will be treated as being in the 1900's.
-</para>
--->
 </sect2>
 
 <sect2><title>Transaction matching</title>
-
 <para>
   As noted previously, one of the major drawbacks of the QIF format is the lack of a
   unique identifier for each transaction.  Thus, if you import a QIF file and some of
@@ -858,12 +667,11 @@
 <para>
   This can be a problem if you have transactions that look very similar but are
   actually different.  In this case, you can unmatch those transactions later in the
-  ledger view.
+  Ledger View.
 </para>
 </sect2>
 
-<sect2>
-<title>Writing an import filter</title>
+<sect2 id="details.impexp.qif.filter"><title>Writing an import filter</title>
 
 <para>
   Sometimes you may have data in a custom format, like comma-separated-values (CSV)
@@ -878,12 +686,13 @@
 </para>
 
 <para>
-  To use a filter, edit your favorite QIF Profile or create a new one, and select the
-  Filter tab.  Enter the full path to your filter program in the <guilabel>Input
-  filter location</guilabel> field, or click the browse icon next to the field and
-  navigate to the filter in the <guilabel>File Open...</guilabel> dialog.  Then,
-  whenever you do a QIF import using this profile, the file you select for importing
-  will be run through your filter first
+  To use a filter, edit your favorite QIF Profile or create a new one (see the next
+  section for details on QIF Profiles,) and select the Filter tab.  Enter the full
+  path to your filter program in the <guilabel>Input filter location</guilabel>
+  field, or click the browse icon next to the field and navigate to the filter in the
+  <guilabel>File Open...</guilabel> dialog.  Then, whenever you do a QIF import using
+  this profile, the file you select for importing will be run through your filter
+  first
 </para>
 
 <para>
@@ -923,8 +732,7 @@
 </para>
 </sect2>
 
-<sect2>
-<title>Special &kmymoney; QIF extensions</title>
+<sect2><title>Special &kmymoney; QIF extensions</title>
 
 <para>
   As already mentioned, one of the major drawbacks of the QIF format is the lack of a
@@ -936,6 +744,132 @@
 </sect2>
 </sect1>
 
+<sect1 id="details.impexp.qif.profile"><title>QIF Profiles</title>
+
+<para>
+  To edit an existing QIF Profile, or to create a new one, bring up the QIF Importer
+  dialog by selecting <menuchoice> <shortcut>
+  <keycombo>&Ctrl;&Shift;<keycap>,</keycap> </keycombo> </shortcut>
+  <guimenu>Settings</guimenu> <guimenuitem>Configure &kmymoney;...</guimenuitem>
+  </menuchoice> from the main menu, clicking on <inlinemediaobject> <imageobject>
+  <imagedata fileref='preferences-plugin.svg' format='SVG'/> </imageobject>
+  </inlinemediaobject> <guilabel>Plugins</guilabel> at the bottom of the left panel,
+  and clicking the &configicon; configure button on the entry for <quote>QIF
+  Importer</quote>.
+</para>
+
+<para>
+  Note that because the QIF Importer and the QIF Exporter are implemented as separate
+  plugins, there are separate entries for each on the Plugins configuration dialog.
+  Configuring either one brings up the same Profile Editor dialog.
+</para>
+
+<para>
+  <screenshot>
+    <mediaobject>
+      <imageobject>
+	<imagedata fileref="qifimport-qifprofileeditor.png" format="PNG" />
+      </imageobject>
+      <textobject>
+	<phrase>QIF Profile Editor</phrase>
+      </textobject>
+    </mediaobject>
+  </screenshot>
+
+  On the left, the Profile selector displays a list of all existing QIF Profiles;
+  select one to edit its configuration.  To create an new profile, press the
+  <guibutton>New</guibutton> button.  You can rename an existing profile by selecting
+  it in the Profile selector and clicking the <guibutton>Rename</guibutton> button,
+  and delete one with the <guibutton>Delete</guibutton> button.  Clicking the
+  <guibutton>Reset</guibutton> button resets all the fields of the currenlty
+  displayed profile to their default values.
+</para>
+
+<!-- FIXME: confirm what each of these actually does, and consider separate
+     screenshots for each tab. -->
+
+<para>
+  The right area of the dialog has four tabs.
+</para>
+
+<para>
+  The <quote>General</quote> tab contains a field for a description of the filter,
+  several fields to specify what &kmymoney; should expect certain fields to look like
+  in the qif file output by the filter, and a checkbox which tells &kmymoney; whether
+  or not to attempt to match similar transactions to avoid duplicates.
+</para>
+
+<para>
+  <screenshot>
+    <mediaobject>
+      <imageobject>
+	<imagedata fileref="qifimport-qifprofilefilter.png" format="PNG" />
+      </imageobject>
+      <textobject>
+	<phrase>QIF Profile Editor</phrase>
+      </textobject>
+    </mediaobject>
+  </screenshot>
+
+  The <quote>Filter</quote> tab allows you to specify the location of both an import
+  filter, as described in the <link linkend="details.impexp.qif.filter">previous
+  section</link> as well as an output filter, which works similarly, but is applied
+  when writing out a data file.  The <guilabel>Input filter file type</guilabel> is
+  not applicable to an output filter, as the file dialog for the file to be written
+  does not require filtering.
+</para>
+
+<para>
+  <screenshot>
+    <mediaobject>
+      <imageobject>
+	<imagedata fileref="qifimport-qifprofiledate.png" format="PNG" />
+      </imageobject>
+      <textobject>
+	<phrase>QIF Export</phrase>
+      </textobject>
+    </mediaobject>
+  </screenshot>
+
+  The <quote>Date</quote> tab is primarily applicable to QIF Export, as &kmymoney; is
+  usually able to determine the date format by examining the actual data.  The primary
+  purpose is to specify the order of the date parts, and the delimiter which separates
+  them.
+</para>
+
+<para>
+  Because the QIF format is not standardized, it's impossible to know which century
+  is meant when using two digit years.  In QIF files with two digit years, there is
+  an assumed default century, and an apostrophe is used as the year separator to
+  specify that entry is in the OTHER century.  However, since which century is
+  assumed to be the default is not standardized, the <guilabel>Apostrophe
+  Handling</guilabel> field is use for this purpose, indicating the intended century
+  when an apostrophe is used as the year separator.  As an example, you would set the
+  Apostrophe Format to "2000-2099", so dates with an apostrophe will be
+  interpreted as being > year 2000.  In this case, dates without an apostrophe
+  will be treated as being in the 1900's.
+</para>
+
+<para>
+  <screenshot>
+    <mediaobject>
+      <imageobject>
+	<imagedata fileref="qifimport-qifprofileamount.png" format="PNG" />
+      </imageobject>
+      <textobject>
+	<phrase>QIF Export</phrase>
+      </textobject>
+    </mediaobject>
+  </screenshot>
+  
+  The <quote>Amounts</quote> tab is used on QIF Export to specify the Decimal Symbol
+  and Thousands Separator to be used.  However, you need to speicfy those for each
+  line in the QIF file which can contain an amount.  To alter those settings, click
+  one of the lines in the upper part of the display, then use the dropdowns below to
+  set the characters to be used.
+</para>
+</sect1>
+
 <sect1 id="details.impexp.qifexp"><title>QIF Exporter</title>
 <para>
   To export one of your accounts to a QIF file, choose
@@ -962,11 +896,9 @@
       </textobject>
     </mediaobject>
   </screenshot>
-</para>
 
-<para>
   The QIF Exporter uses QIF Profiles in a similar way as the QIF Importer, but it
-  uses the information in the Profile for format the QIF file being written, rather
+  uses the information in the Profile to format the QIF file being written, rather
   than to interpret the file being read.  Parallel to the importer, you can use a
   custom written filter program.  There is a separate field on the Filter Tab of the
   QIF Profile editor for an output filter, so you can use the same QIF Profile for
@@ -982,8 +914,7 @@
 </sect1info>
 <title>OFX Importer Plugin</title>
 
-<sect2>
-<title>Getting the plugin</title>
+<sect2><title>Getting the plugin</title>
 
 <para>
   &kmymoney; will import OFX files painlessly.  However, this functionality is
@@ -1018,8 +949,7 @@
 </para>
 </sect2>
 
-<sect2>
-<title>What is OFX</title>
+<sect2><title>What is OFX</title>
 
 <para>
   OFX stands for <quote>Open Financial Exchange</quote>.  According to the
@@ -1051,8 +981,7 @@
 </para>
 </sect2>
 
-<sect2>
-<title>Importing an OFX file</title>
+<sect2><title>Importing an OFX file</title>
 
 <para>
   The most basic way to import an OFX file is to choose the importer from the
@@ -1084,8 +1013,7 @@
 </para>
 </sect2>
 
-<sect2>
-<title>Importing Investments</title>
+<sect2><title>Importing Investments</title>
 
 <para>
   Please note that if you are importing a file with investment transactions,
@@ -1095,8 +1023,7 @@
 </para>
 </sect2>
 
-<sect2 id="details.impexp.webconnect">
-<title>Web Connect</title>
+<sect2 id="details.impexp.webconnect"><title>Web Connect</title>
 
 <para>
   The easiest way to import an OFX file is to set up Web Connect.  Visit your
@@ -1114,8 +1041,7 @@
 </para>
 </sect2>
 
-<sect2 id="details.impexp.ofxdirectconnect">
-<title>Direct Connect</title>
+<sect2 id="details.impexp.ofxdirectconnect"><title>Direct Connect</title>
 
 <para>
   OFX Direct Connect is now supported in &kmymoney;.  This gives you the ability
@@ -1185,8 +1111,7 @@
 </note>
 </sect2>
 
-<sect2>
-<title>Exporting an OFX file</title>
+<sect2><title>Exporting an OFX file</title>
 
 <para>
   It is not possible to export your data as an OFX file currently.  If you are
@@ -1207,8 +1132,7 @@
 <!-- entity defined in index.docbook -->
 &details-impexp-woob;
 
-<sect1 id="details.impexp.plugins">
-<title>Writing Importer Plugins</title>
+<sect1 id="details.impexp.plugins"><title>Writing Importer Plugins</title>
 
 <para>
   &kmymoney; contains explicit support for importer plugins.  If you have a
diff --git a/doc/preferences-plugin.svg b/doc/preferences-plugin.svg
new file mode 100644
index 000000000..702d712f0
--- /dev/null
+++ b/doc/preferences-plugin.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg width="32" version="1.1" xmlns="http://www.w3.org/2000/svg" height="32" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
+ <defs id="defs5455">
+  <linearGradient inkscape:collect="always" id="linearGradient4303">
+   <stop style="stop-color:#c6cdd1" id="stop4305"/>
+   <stop offset="1" style="stop-color:#e0e5e7" id="stop4307"/>
+  </linearGradient>
+  <linearGradient inkscape:collect="always" id="linearGradient4227">
+   <stop style="stop-color:#292c2f" id="stop4229"/>
+   <stop offset="1" style="stop-opacity:0" id="stop4231"/>
+  </linearGradient>
+  <linearGradient id="linearGradient3819">
+   <stop style="stop-color:#eff0f1" id="stop3821"/>
+   <stop offset="1" style="stop-color:#bdc3c7" id="stop3823"/>
+  </linearGradient>
+  <linearGradient inkscape:collect="always" id="linearGradient4303-3">
+   <stop style="stop-color:#197cf1" id="stop4305-6"/>
+   <stop offset="1" style="stop-color:#21c9fb" id="stop4307-4"/>
+  </linearGradient>
+  <linearGradient inkscape:collect="always" id="linearGradient5193" xlink:href="#linearGradient4303-3" y1="540.79797" y2="521.79797" x1="384.57144" gradientUnits="userSpaceOnUse" x2="409.57147" gradientTransform="matrix(1 0 0 1 -6.00005 4)"/>
+  <linearGradient inkscape:collect="always" id="linearGradient4903">
+   <stop style="stop-color:#eef1f2" id="stop4905"/>
+   <stop offset="1" style="stop-color:#f9fafb" id="stop4907"/>
+  </linearGradient>
+  <linearGradient inkscape:collect="always" id="linearGradient5324" xlink:href="#linearGradient4903" y1="537.24286" y2="507.798" x1="401.57144" gradientUnits="userSpaceOnUse" x2="384.57144" gradientTransform="matrix(1 0 0 1 -4.00005 5)"/>
+  <linearGradient inkscape:collect="always" xlink:href="#linearGradient4256-6" id="linearGradient6638" y1="534.79797" y2="510.798" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(1 0 0 1 -182.85714 -77.1501)"/>
+  <linearGradient id="linearGradient4256-6">
+   <stop style="stop-color:#8cbdf8" id="stop4258-2"/>
+   <stop offset="1" style="stop-color:#d5e8ff" id="stop4260-8"/>
+  </linearGradient>
+  <linearGradient inkscape:collect="always" xlink:href="#linearGradient4227" id="linearGradient6640" y1="513.38367" x1="396.57144" y2="531.38367" gradientUnits="userSpaceOnUse" x2="412.57144" gradientTransform="matrix(1 0 0 1 -182.85714 -76.73579)"/>
+  <linearGradient inkscape:collect="always" xlink:href="#linearGradient4232" id="linearGradient4849" y1="43" y2="5" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(1.0810811 0 0 1.0810811 199.76834 420.70195)"/>
+  <linearGradient id="linearGradient4232">
+   <stop style="stop-color:#3889e9" id="stop4234-0"/>
+   <stop offset="1" style="stop-color:#5ea5fb" id="stop4236"/>
+  </linearGradient>
+  <linearGradient inkscape:collect="always" id="linearGradient5464" xlink:href="#linearGradient4303" y1="539.79797" y2="503.798" x1="432.57144" gradientUnits="userSpaceOnUse" x2="412.57144" gradientTransform="matrix(1 0 0 1 -10.00005 4)"/>
+  <linearGradient inkscape:collect="always" id="linearGradient5324-8" xlink:href="#linearGradient4903" y1="536.79797" y2="509.3006" x1="384.57144" gradientUnits="userSpaceOnUse" x2="396.32709" gradientTransform="matrix(-1 0 0 1 805.14281 5)"/>
+  <linearGradient inkscape:collect="always" id="linearGradient4290-2">
+   <stop style="stop-color:#7cbaf8" id="stop4292"/>
+   <stop offset="1" style="stop-color:#f4fcff" id="stop4294"/>
+  </linearGradient>
+  <linearGradient inkscape:collect="always" id="linearGradient5785" xlink:href="#linearGradient4290-2" y1="34" y2="22.724428" x1="9" gradientUnits="userSpaceOnUse" x2="3.746097" gradientTransform="matrix(1 0 0 1 379.57138 505.798)"/>
+ </defs>
+ <metadata id="metadata5458"/>
+ <g inkscape:label="Capa 1" inkscape:groupmode="layer" id="layer1" transform="matrix(1 0 0 1 -384.57143 -515.798)">
+  <path inkscape:connector-curvature="0" style="fill:#2980b9;fill-rule:evenodd" id="path5195" d="m 397.57138,530.798 6,0 0,2 -6,6 z"/>
+  <path inkscape:connector-curvature="0" style="fill:#289769;fill-rule:evenodd" id="path5195-7-4-3-1" d="m 397.57138,537.798 6,-6 0,1 -6,6 z"/>
+  <path inkscape:connector-curvature="0" style="fill:url(#linearGradient5193);fill-rule:evenodd" id="path5167-5" d="m 384.57141,544.798 14,0 0,-9 2.5,-2.5 2.5,-2.5 -2.5,-2.5 -2.5,-2.5 0,-8 -14,0 z"/>
+  <path inkscape:connector-curvature="0" style="fill:#99a1a7;fill-rule:evenodd" id="path5195-7" d="m 408.57138,523.798 -6,0 0,4 6,6 z"/>
+  <path inkscape:connector-curvature="0" style="fill:#289769;fill-rule:evenodd" id="path5195-7-4-3" d="m 408.57138,532.798 -6,-6 0,1 6,6 z"/>
+  <path inkscape:connector-curvature="0" style="fill:url(#linearGradient5464);fill-rule:evenodd" id="path5167" d="m 416.57138,544.798 -14,0 0,-9 5,-5 -5,-5 0,-8 14,0 z"/>
+  <path inkscape:connector-curvature="0" style="fill:#2980b9;stroke-linejoin:round;stroke-width:0.5" id="rect5150-0" d="m 398.5714,543.798 -13.99997,0 0,1.99995 13.99997,0 z"/>
+  <path inkscape:connector-curvature="0" style="fill:#99a1a7;stroke-linejoin:round;stroke-width:0.5" id="rect5150" d="m 402.57139,543.798 14.00004,0 0,1.99995 -14.00004,0 z"/>
+  <path inkscape:connector-curvature="0" style="fill:#289769;stroke-linejoin:round;stroke-width:0.5" id="rect5150-30" d="m 402.57139,544.798 14.00004,0 0,0.99992 -14.00004,0 z"/>
+  <path inkscape:connector-curvature="0" style="fill:url(#linearGradient5324);opacity:0.2;fill-rule:evenodd" id="path5316" d="m 384.57143,519.798 0,1 4.5,0 2.5,2.71484 0,14.57032 -2.5,2.71484 -4.5,0 0,1 5,0 3,-3 0,-16 -3,-3 z"/>
+  <path inkscape:connector-curvature="0" style="fill:url(#linearGradient5324-8);fill-rule:evenodd" id="path5316-6" d="m 416.57138,519.798 0,22 -5,0 -3,-3 0,-16 3,-3 z"/>
+  <rect width="2" x="402.57138" y="539.79797" height="2" style="fill:#4c5154;stroke-linejoin:round;stroke-width:0.5" id="rect5589"/>
+  <rect width="2" x="402.57138" y="519.79797" height="2" style="fill:#4c5154;stroke-linejoin:round;stroke-width:0.5" id="rect5591"/>
+  <path inkscape:connector-curvature="0" style="fill:#289769;stroke-linejoin:round;stroke-width:0.5" id="rect5150-30-2" d="m 384.57145,544.798 13.99998,0 0,0.99992 -13.99998,0 z"/>
+  <rect width="4" x="411.57138" y="520.79797" height="1" style="fill:#4d4d4d;stroke-linejoin:round;stroke-width:0.5" id="rect5658"/>
+  <rect width="2" x="413.57138" y="522.79797" height="1" style="fill:#4d4d4d;stroke-linejoin:round;stroke-width:0.5" id="rect5660"/>
+  <rect width="1" x="411.57138" y="522.79797" height="1" style="fill:#4d4d4d;stroke-linejoin:round;stroke-width:0.5" id="rect5662"/>
+  <rect width="3" x="412.57138" y="524.79797" height="1" style="fill:#4d4d4d;stroke-linejoin:round;stroke-width:0.5" id="rect5664"/>
+  <path inkscape:connector-curvature="0" style="fill:url(#linearGradient5785);stroke-linejoin:round;stroke-width:0.5" id="rect5666" d="m 385.57138,534.798 0,5 1,0 0,-5 -1,0 z m 2,0 0,1 1,0 0,-1 -1,0 z m 0,2 0,1 1,0 0,-1 -1,0 z m 0,2 0,1 1,0 0,-1 -1,0 z"/>
+  <rect width="2" x="396.57138" y="519.79797" height="2" style="fill:#2980b9;stroke-linejoin:round;stroke-width:0.5" id="rect5591-8"/>
+  <rect width="2" x="396.57138" y="539.79797" height="2" style="fill:#2980b9;stroke-linejoin:round;stroke-width:0.5" id="rect5589-6"/>
+ </g>
+</svg>
diff --git a/doc/qifimport-qifprofileamount.png b/doc/qifimport-qifprofileamount.png
new file mode 100644
index 000000000..52385c434
Binary files /dev/null and b/doc/qifimport-qifprofileamount.png differ
diff --git a/doc/qifimport-qifprofilefilter.png b/doc/qifimport-qifprofilefilter.png
new file mode 100644
index 000000000..c62883ec9
Binary files /dev/null and b/doc/qifimport-qifprofilefilter.png differ


More information about the kde-doc-english mailing list