<?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 Edit Tax Authority Associations screen.</title>
 <para>An association is a way of specifying how tax authorities can be
  linked to each other.</para>
 <para>It can be used in the situation where the tax structure is
  hierarchical (eg city tax, plus county tax plus state tax).</para>
 <para>Using associations allows tax rates from multiple authorities to
  be applied to a particular order at once.</para>
 <section>
  <title>How do I add a new association for a Tax Authority?</title>
  <orderedlist>
   <listitem>
    <para>Enter or use the lookup to find the 'To Tax Auth Geo Id'
    </para>
   </listitem>
   <listitem>
    <para>Enter of use the lookup to find the 'To Tax Auth Party Id'
    </para>
   </listitem>
   <listitem>
    <para>Leave the 'From Date' blank (NOTE: It will default to the
     current date and time</para>
   </listitem>
   <listitem>
    <para>Leave the 'Thru Date' blank</para>
   </listitem>
   <listitem>
    <para>Select the 'Type' from the dropdown or leave blank</para>
   </listitem>
   <listitem>
    <para>Press the 'Add' button</para>
   </listitem>
   <listitem>
    <para>The new tax authority association is displayed at the bottom
     of the screen.</para>
   </listitem>
  </orderedlist>
 </section>
 <section>
  <title>How do I update an association for a Tax Authority?</title>
  <orderedlist>
   <listitem>
    <para>Only two fields are available for update, these are the 'Thru
     Date' and 'Type'</para>
   </listitem>
   <listitem>
    <para>Enter the changes required</para>
   </listitem>
   <listitem>
    <para>Press the 'Update' button next to the entry updated</para>
   </listitem>
  </orderedlist>
 </section>
 <section>
  <title>How do I remove an association for a Tax Authority?</title>
  <orderedlist>
   <listitem>
    <para>Press the 'Delete' button next to the entry that needs to be
     deleted</para>
   </listitem>
  </orderedlist>
 </section>
</section>
