<?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
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 Invoice screen.</title>
    <para>This screen allows the user to create a new Sales or Purchase
        Invoice. Sales Invoices are created when a customer buys something
        from you. Purchase Invoices are created when you buy something from a
        supplier.</para>
    <section>
        <title>How do I create a new Sales invoice?</title>
        <orderedlist>
        <listitem><para>Press the 'Create New' button</para></listitem>
        <listitem><para>The New Sales Invoice / New Purchase Invoice screen is
            displayed></para></listitem>
        <listitem><para>Using the top part of the screen, leave Invoice type with its
            default of 'Sales Invoice'</para></listitem>
        <listitem><para>Leave 'Organization Party Id' with its default of 'Company'
        </para></listitem>
        <listitem><para>Enter or use the lookup to find the 'To Party Id' (eg
            DemoCustomer)</para></listitem>
        <listitem><para>Press the 'Create' button in the top part of the screen</para></listitem>
        <listitem><para>The invoice header has been created and the default header
            screen will be displayed</para></listitem>
        <listitem><para>Details on the invoice will need to be entered via the other sub
            menus (eg Items, Time Entries etc)  </para></listitem>
        </orderedlist>
    </section>
    <section>
        <title>How do I create a new Purchase invoice?</title>
        <orderedlist>
        <listitem><para>Press the 'Create New' button</para></listitem>
        <listitem><para>The New Sales Invoice / New Purchase Invoice screen is
            displayed></para></listitem>
        <listitem><para>Using the bottom part of the screen, leave Invoice type with its
            default of 'Purchase Invoice'</para></listitem>
        <listitem><para>Leave 'Organization Party Id' with its default of 'Company'
        </para></listitem>
        <listitem><para>Enter or use the lookup to find the 'From Party Id' (eg
            DemoSupplier)</para></listitem>
        <listitem><para>Press the 'Create' button in the bottom part of the screen
        </para></listitem>
        <listitem><para>The invoice header has been created and the default header
            screen will be displayed</para></listitem>
        <listitem><para>Details on the invoice will need to be entered via the other sub
            menus (eg Items, Time Entries etc)  </para></listitem>
        </orderedlist>
    </section>
</section>
