<?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 New Payment help screen.</title>
    <para>This screen is used to create a new payment. Payments can be
        incoming (eg from a customer) or outgoing (eg to a supplier). Payment
        types are used to describe what the payments are used for in the
        system.</para>
    <para>Examples of incoming payment types are as follows:</para>
    <itemizedlist>
    <listitem><para>Customer Deposit</para></listitem>
    <listitem><para>Customer Payment</para></listitem>
    <listitem><para>Interest In</para></listitem>
    </itemizedlist>
    <para>Examples of outgoing payment types are as follows:</para>
    <itemizedlist>
    <listitem><para>Commission Payment</para></listitem>
    <listitem><para>Pay Check</para></listitem>
    <listitem><para>Income Tax Payment</para></listitem>
    <listitem><para>Vendor Payment</para></listitem>
    </itemizedlist>
    <section>
        <title>How do I create a new incoming payment?</title>
        <orderedlist>
        <listitem><para>Press the 'Create New Payment' button</para></listitem>
        <listitem><para>The New Incoming Payment / New Outgoing Payment screen is
            displayed</para></listitem>
        <listitem><para>Leave 'Organization Party Id' with its default of 'Company'
        </para></listitem>
        <listitem><para>
            Select the 'Payment Type Id' from the drop down box (NOTE: This
            is currently limited to the following: Customer Deposit, Customer
            Payment, Interest In and Gift Certificate Deposit)
        </para></listitem>
        <listitem><para>Enter the payment amount in the 'Amount' field</para></listitem>
        <listitem><para>Enter or use the lookup to find the 'From Party Id'</para></listitem>
        <listitem><para>Select the 'Payment Method Type' from the drop down box (eg how
            the payment was paid - cash, cheque, money order etc)</para></listitem>
        <listitem><para>Leave the 'Currency' field with its default of 'USD' (NOTE: This
            default comes from Company)</para></listitem>
        <listitem><para>Press the 'Create' button</para></listitem>
        <listitem><para>The payment header is created and the default header
            screen will be displayed subsection content</para></listitem>
        </orderedlist>
         <para>NOTE: Need to understand what happens if customer pays in a
            currency that is not the company default.... if the exchange rate is
            specified then I think it should convert the currency to the default
            currency for accounting purposes.... need to investigate and test.
        </para>
    </section>
    <section>
        <title>How do I create a new outgoing payment?</title>
        <orderedlist>
        <listitem><para>Press the 'Create New Payment' button</para></listitem>
        <listitem><para>The New Incoming Payment / New Outgoing Payment screen is
            displayed</para></listitem>
        <listitem><para>Leave 'Organization Party Id' with its default of 'Company'
        </para></listitem>
        <listitem><para>Select the 'Payment Type Id' from the drop down box (NOTE: This
            is currently limited to 11 entries including Commission Payment,
            Customer Refund, Vendor Payment, Income Tax Payment)</para></listitem>
        <listitem><para>Enter the payment amount in the 'Amount' field</para></listitem>
        <listitem><para>Enter or use the lookup to find the 'To Party Id'</para></listitem>
        <listitem><para>Select the 'Payment Method Type' from the drop down box (eg how
            the payment is to be paid - cash, cheque, money order etc)</para></listitem>
        <listitem><para>Leave the 'Currency' field with its default of 'USD' (NOTE: This
            default comes from Company)</para></listitem>
        <listitem><para>Press the 'Create' button</para></listitem>
        <listitem><para>The payment header is created and the default header screen will
            be displayed subsection content</para></listitem>
        </orderedlist>
    </section>
</section>
