<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version
2.0 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 Unless required by
applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for
the specific language governing permissions and limitations under the
License.
-->
<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="5.0" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">
    <title>The View Foreign Exchange Rates help screen</title>
    <para>Foreign exchange rates are used to convert from one currency to another. Usually a business will want to work in one main currency (eg GBP) but will allow transactions in other currencies (eg EUR, USD). These currencies will need to be converted to the main currency at some point in order to generate financial reports (eg Balance Sheet or Income Statement) and most importantly to adhere to tax authority regulations.</para>
    <para>OFBiz currently allows you to input to 3 different rates for the same currency using the 'Purpose' field. With this you can specify whether the conversion is to be used internally, externally or leave the field blank. Also the start and end date for a conversion can be specified beforehand.</para>
    <section>
    <title>How do I add a new foreign exchange rate?</title>
    <para>To add a new rate for US Dollars (USD) to Euro (EUR)</para>
    <itemizedlist>
    <listitem><para>Using the drop down box on the 'From Currency' field, select 'American Dollar - USD'</para></listitem>
    <listitem><para>Using the drop down box on the 'To Currency' field, select 'Euro - EUR'</para></listitem>
    <listitem><para>The 'Purpose' field can be left blank or you can select 'Internal Conversion' or 'External Conversion' from the drop down list</para></listitem>
    <listitem><para>Enter the exchange rate in the 'Rate' field (eg 0.72883) </para></listitem>
    <listitem><para>Enter the 'From Date' (NOTE: If left blank then will default to the current date and time)</para></listitem>
    <listitem><para>Leave the 'Thru Date' blank</para></listitem>
    <listitem><para>Click the 'Update Foreign Currency Rates' button</para></listitem>
    <listitem><para>The new foreign exchange rate will be displayed</para></listitem>
    </itemizedlist>
    </section> 
    <section>
    <title>How do I update an existing foreign exchange rate?</title>
    <para>NOTE: Existing foreign exchange rates cannot be updated - instead the existing rate is expired and a new rate is created. Currently up to 3 different exchange rates can be created by using the 'Purpose' field to distinguish them.</para>
    </section>
    <section>
    <title>How do I delete a foreign exchange rate?</title>
    <para>Foreign exchange rates cannot be deleted. Existing rates can be expired by entering a new exchange rate for the same currency and purpose.</para>
    </section>
</section>
