<?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 Billing Account Terms help screen</title>
    <para>This sub menu allows terms to be associated with a billing account. Currently these can be
        the following:</para>
    <para>
        <itemizedlist>
            <listitem>
                <para>payment terms (discounted if paid within specified days)</para>
            </listitem>
            <listitem>
                <para>payment terms (due on a specified day per month)</para>
            </listitem>
            <listitem>
                <para>payment terms (net days)</para>
            </listitem>
            <listitem>
                <para>penalty terms (late fee)</para>
            </listitem>
            <listitem>
                <para>penalty terms (collection agency fee)</para>
            </listitem>
            <listitem>
                <para>miscellaneous (non returnable sales item)</para>
            </listitem>
        </itemizedlist>
    </para>
    <para>>NOTE: There is an overlap here with the terms that can be specified in an agreement.
        Would a billing account party also have an agreement for payment terms...? .</para>
    <section>
        <title>How do I add terms to a billing account?</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>Select the 'Terms' sub menu</para>
                </listitem>
                <listitem>
                    <para>Select a 'Term Type' from the drop down box (eg. Payment net days)</para>
                </listitem>
                <listitem>
                    <para>Leave the 'UOM' field blank</para>
                </listitem>
                <listitem>
                    <para>Enter a number in the 'Term Value' field (eg. 30 which would mean '30
                        days' when related to 'Payment net days')</para>
                </listitem>
                <listitem>
                    <para>Press the 'Save' button</para>
                </listitem>
            </orderedlist>
        </para>
        <para>The term is displayed in the top part of the screen </para>
    </section>
    <section>
        <title>How do I update terms for a billing account?</title>
        <para>Select the 'Terms' sub menu</para>
        <para>
            <orderedlist>
                <listitem>
                    <para>Press the 'Edit' button next to the entry that needs to be amended</para>
                </listitem>
                <listitem>
                    <para>The details are displayed in the 'Edit Billing Account Terms' box</para>
                </listitem>
                <listitem>
                    <para>Update the 'Term Type', 'UOM' or 'Term Value' as required</para>
                </listitem>
                <listitem>
                    <para>Press the 'Save' button</para>
                </listitem>
            </orderedlist>
        </para>
        <para>The updated term is displayed in the top part of the screen </para>
    </section>
    <section>
        <title>How do I remove terms from a billing account?</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>Select the 'Terms' sub menu</para>
                </listitem>
                <listitem>
                    <para>Press the 'Delete' button next to the entry that needs to be removed
                    </para>
                </listitem>
            </orderedlist>
        </para>
    </section>
</section>
