<?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>Invoices.</title>
    <para>
        Sales invoices are generated when customers buy something from your
        business.
        You will need to provide a detailed list of the items bought and relevant
        taxes paid. They are often referred to a 'tax invoices' as they
        contain
        information relating to the amount of sales tax (eg VAT / GST)
        charged on the product or service.
        </para>
    <para> Purchase invoices are generated by your suppliers when you
        order something from them. You may send them an order in the form of
        a Purchase Order. They will then send you the products and an invoice
        for payment. This invoice is the Purchase Invoice and it will contain
        details of the items bought plus any taxes.</para>
    <para> Both of these documents are used as proof to various tax
        authorities (eg Inland Revenue, Customs etc) that the required tax
        has been charged or collected.</para>
    <para>
        GENERAL NOTE: The following is an extract from Ian McNulty's
        documentation work on accounting:</para>
    <para>Invoices are created automatically by the system when
        certain criteria are met for each item on an order. The criteria
        will vary depending on the type of product associated with the
        order item, and the type of order (ie purchase/sales).</para>
    <para>For Sales Orders that include digital goods, an invoice
        will be created when the order is placed, and that invoice will be
        for all digital goods in the order. If there are non-digital or
        physical goods they will go in a separate invoice.</para>
    <para>For Sales Orders that need physical fulfillment, an
        invoice will be created for all items in a shipment when the
        shipment goes into the 'Packed' status.</para>
    <para>For Purchase Orders an invoice will be created from a
        shipment when the shipment goes into the Received status.</para>
    <xi:include href="HELP_ACCOUNTING_findInvoices.xml" />
    <xi:include href="HELP_ACCOUNTING_invoiceOverview.xml" />
    <xi:include href="HELP_ACCOUNTING_editInvoice.xml" />
    <xi:include href="HELP_ACCOUNTING_newInvoice.xml" />
    <xi:include href="HELP_ACCOUNTING_editInvoiceApplications.xml" />
    <xi:include href="HELP_ACCOUNTING_listInvoiceItems.xml" />
    <xi:include href="HELP_ACCOUNTING_editInvoiceTimeEntries.xml" />
    <xi:include href="HELP_ACCOUNTING_sendPerEmail.xml" />
    <xi:include href="HELP_ACCOUNTING_invoiceRoles.xml" />
  </section>
