changeset cdef7fe6a80a in modules/account_invoice:default
details: 
https://hg.tryton.org/modules/account_invoice?cmd=changeset;node=cdef7fe6a80a
description:
        Improve documentation

        issue9708
        review308351002
diffstat:

 doc/conf.py           |   61 +++++++++++++++
 doc/configuration.rst |   28 +++++++
 doc/design.rst        |  198 ++++++++++++++++++++++++++++++++++++++++++++++++++
 doc/index.rst         |  170 ++----------------------------------------
 doc/usage/amend.rst   |   57 ++++++++++++++
 doc/usage/index.rst   |   13 +++
 doc/usage/prepare.rst |  105 ++++++++++++++++++++++++++
 doc/usage/process.rst |  104 ++++++++++++++++++++++++++
 setup.py              |    8 +-
 9 files changed, 581 insertions(+), 163 deletions(-)

diffs (800 lines):

diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/conf.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/conf.py       Wed Feb 17 13:41:42 2021 +0000
@@ -0,0 +1,61 @@
+# This file is part of Tryton.  The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
+
+modules_url = 'https://docs.tryton.org/projects/modules-{module}/en/{series}/'
+trytond_url = 'https://docs.tryton.org/projects/server/en/{series}/'
+
+
+def get_info():
+    import configparser
+    import os
+    import subprocess
+    import sys
+
+    module_dir = os.path.dirname(os.path.dirname(__file__))
+
+    config = configparser.ConfigParser()
+    config.read_file(open(os.path.join(module_dir, 'tryton.cfg')))
+    info = dict(config.items('tryton'))
+
+    result = subprocess.run(
+        [sys.executable, 'setup.py', '--name'],
+        stdout=subprocess.PIPE, check=True, cwd=module_dir)
+    info['name'] = result.stdout.decode('utf-8').strip()
+
+    result = subprocess.run(
+        [sys.executable, 'setup.py', '--version'],
+        stdout=subprocess.PIPE, check=True, cwd=module_dir)
+    version = result.stdout.decode('utf-8').strip()
+    if 'dev' in version:
+        info['series'] = 'latest'
+    else:
+        info['series'] = '.'.join(version.split('.', 2)[:2])
+
+    for key in {'depends', 'extras_depend'}:
+        info[key] = info.get(key, '').strip().splitlines()
+    info['modules'] = set(info['depends'] + info['extras_depend'])
+    info['modules'] -= {'ir', 'res'}
+
+    return info
+
+
+info = get_info()
+
+master_doc = 'index'
+project = info['name']
+release = version = info['series']
+default_role = 'ref'
+highlight_language = 'none'
+extensions = [
+    'sphinx.ext.intersphinx',
+    ]
+intersphinx_mapping = {
+    'trytond': (trytond_url.format(series=version), None),
+    }
+intersphinx_mapping.update({
+        m: (modules_url.format(
+                module=m.replace('_', '-'), series=version), None)
+        for m in info['modules']
+        })
+
+del get_info, info, modules_url, trytond_url
diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/configuration.rst
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/configuration.rst     Wed Feb 17 13:41:42 2021 +0000
@@ -0,0 +1,28 @@
+*************
+Configuration
+*************
+
+The *Account Invoice Module* uses some settings from the ``[account_invoice]``
+section of the :doc:`configuration file <trytond:topics/configuration>`.
+
+.. _config-account_invoice.filestore:
+
+``filestore``
+=============
+
+This configuration value indicates whether the cached copy of the
+`Customer Invoice Reports <report-account.invoice>` should be stored in the
+:py:mod:`trytond:trytond.filestore` (``True``) or the database (``False``).
+
+The default value is: ``False``
+
+.. _config-account_invoice.store_prefix:
+
+``store_prefix``
+================
+
+This is the prefix to use with the :py:mod:`trytond:trytond.filestore`.
+This value is only used when the
+`filestore <config-account_invoice.filestore>` setting is in use.
+
+The default value is: ``None``
diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/design.rst
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/design.rst    Wed Feb 17 13:41:42 2021 +0000
@@ -0,0 +1,198 @@
+Design
+******
+
+The *Account Invoice Module* adds some new concepts and extends some existing
+concepts.
+
+.. _model-account.invoice:
+
+Invoice
+=======
+
+The main concept introduced by the *Account Invoice Module* is the *Invoice*.
+This contains details of a purchase, or sales, transaction between the
+`Company <company:model-company.company>` and another
+`Party <party:model-party.party>`.
+
+Each invoice has a type that indicates whether it is an invoice from a
+supplier, or to a customer.
+Credit notes are represented by invoices with negative totals.
+
+Additional information is also stored for each invoice, including things like
+a unique `Sequence <model-account.fiscalyear.invoice_sequence>` number,
+invoice, accounting and payment term dates,
+`Payment Terms <model-account.invoice.payment_term>`,
+`Tax Identifiers <party:model-party.identifier>`,
+`Currency <currency:model-currency.currency>` information,
+the customer's or supplier's invoice `Address <party:model-party.address>`,
+and other descriptions and reference numbers.
+
+An invoice is made up from one, or more, invoice lines.
+Most lines normally contain information about the items that were bought or
+sold, including information about the `Products <product:concept-product>`,
+quantities, `Taxes <account:model-account.tax>` and prices that make up the
+transaction.
+There are also some types of line that add other information like titles,
+descriptions or subtotals.
+
+The taxes that are included on an invoice are calculated from the tax
+amounts for each of the invoice's lines.
+These amounts are rounded at either the line or invoice level depending on the
+setting in the `Account Configuration <account:model-account.configuration>`.
+Additional taxes can be manually added to the invoice when required.
+It is also possible to change calculated tax amounts, although these changes
+get overwritten if the invoice's tax amounts get recalculated.
+
+When an invoice is processed an `Account Move <account:model-account.move>` is
+automatically created for it.
+This account move records the transaction represented by the invoice and
+places the total in the specified payable or receivable
+`Account <account:model-account.account>`.
+
+.. note::
+
+   For customer invoices the `Invoice Report <report-account.invoice>` is
+   generated and stored at the point when the invoice is posted.
+
+.. seealso::
+
+   Customer invoices and credit notes can be seen by opening the main menu
+   item:
+
+      |Financial --> Invoices --> Customer Invoices|__
+
+      .. |Financial --> Invoices --> Customer Invoices| replace:: 
:menuselection:`Financial --> Invoices --> Customer Invoices`
+      __ 
https://demo.tryton.org/model/account.invoice;domain=[["type"%2C"%3D"%2C"out";]]
+
+   Supplier invoices and credit note are available from the main menu item:
+
+      |Financial --> Invoices --> Supplier Invoices|__
+
+      .. |Financial --> Invoices --> Supplier Invoices| replace:: 
:menuselection:`Financial --> Invoices --> Supplier Invoices`
+      __ 
https://demo.tryton.org/model/account.invoice;domain=[["type"%2C"%3D"%2C"in";]]
+
+Wizards
+-------
+
+.. _wizard-account.invoice.pay:
+
+Pay Invoice
+^^^^^^^^^^^
+
+The *Pay Invoice* wizard allows a cash payment for an invoice to be registered
+against the invoice.
+It uses the values from an
+`Invoice Payment Method <model-account.invoice.payment.method>` when creating
+the `Account Move <account:model-account.move>`.
+The wizard supports partial payments, and can also be used to write-off some
+of the invoice amount.
+
+.. _wizard-account.invoice.credit:
+
+Credit Invoice
+^^^^^^^^^^^^^^
+
+The *Credit Invoice* wizard enables a credit note to be raised for the
+selected invoices.
+
+For customer invoices that are posted, the wizard allows the invoice to be
+credited with a refund.
+When this is done the credit note is automatically posted and the invoice is
+cancelled.
+
+Reports
+-------
+
+.. _report-account.invoice:
+
+Invoice
+^^^^^^^
+
+The *Invoice* report is used to output a hard copy of the invoice or credit
+note.
+It includes all the information that is needed in order to send the document
+to a customer or supplier.
+
+.. _model-account.invoice.payment.method:
+
+Invoice Payment Method
+======================
+
+The concept of an *Invoice Payment Method* brings together an
+`Account Journal <account:model-account.journal>`,
+a debit `Account <account:model-account.account>` and a credit account.
+This is normally used during the `Pay Invoice <wizard-account.invoice.pay>`
+wizard.
+
+.. seealso::
+
+   Invoice payment methods can be found using the main menu item:
+
+      |Financial --> Configuration --> Journals --> Invoice Payment Methods|__
+
+      .. |Financial --> Configuration --> Journals --> Invoice Payment 
Methods| replace:: :menuselection:`Financial --> Configuration --> Journals --> 
Invoice Payment Methods`
+      __ https://demo.tryton.org/model/account.invoice.payment.method
+
+.. _model-account.fiscalyear.invoice_sequence:
+
+Fiscal Year Invoice Sequence
+============================
+
+The *Fiscal Year Invoice Sequence* concept allows a set of
+`Sequences <trytond:model-ir.sequence.strict>` to be defined for use with
+`Invoices <model-account.invoice>`.
+It allows different sequences to be used for each of the different types of
+invoices and credit notes.
+It also allows the use of different sequences for each accounting
+`Period <account:model-account.period>`.
+
+.. seealso::
+
+   The fiscal year sequences are defined in the
+   `Fiscal Year <account:model-account.fiscalyear>`.
+
+.. _model-account.invoice.payment_term:
+
+Payment Term
+============
+
+The *Payment Term* stores the method that is used to calculate an
+`Invoice's <model-account.invoice>` payment due dates.
+
+An invoice may be due for payment in full on a particular day, or may become
+due for payment over time in parts.
+
+To allow for this each payment term is made up of one or more lines.
+Each line defines an amount that should be paid, and when that payment is
+expected.
+The amounts can be defined as either fixed amounts, percentages, or a
+remainder.
+
+.. seealso::
+
+   Payment terms are create and managed from the main menu item:
+
+      |Financial --> Configuration --> Payment Terms --> Payment Terms|__
+
+      .. |Financial --> Configuration --> Payment Terms --> Payment Terms| 
replace:: :menuselection:`Financial --> Configuration --> Payment Terms --> 
Payment Terms`
+      __ https://demo.tryton.org/model/account.invoice.payment_term
+
+Wizards
+-------
+
+.. _wizard-account.invoice.payment_term.test:
+
+Test Payment Term
+^^^^^^^^^^^^^^^^^
+
+The *Test Payment Term* wizard shows how a specific invoice amount is
+broken down for a particular
+`Payment Term <model-account.invoice.payment_term>`.
+It allows a date and an amount to be entered and then calculates the due dates
+and amounts for each payment that will be required for that payment term.
+
+.. seealso::
+
+   Payment terms can be tested out by opening the main menu item:
+
+      :menuselection:`Financial --> Configuration --> Payment Terms --> Test 
Payment Term`
diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/index.rst
--- a/doc/index.rst     Sun Feb 14 15:51:51 2021 +0100
+++ b/doc/index.rst     Wed Feb 17 13:41:42 2021 +0000
@@ -1,166 +1,14 @@
+######################
 Account Invoice Module
 ######################
 
-The account_invoice module adds the invoice, payment term.
-
-Invoice
-*******
-
-There are 4 types of invoice: *Invoice*, *Supplier Invoice*, *Credit Note* and
-*Supplier Credit Note*. An invoice can be in *Draft*, *Validated*, *Posted*,
-*Paid* or *Cancelled*.
-
-- Company: The company for which the invoice is created.
-- Tax Identifier: The tax identifier that will be printed on the invoice
-  (By default the first tax identifier of the company).
-- Number: The invoice number set on validation for supplier invoices and on
-  posting for others using the sequence defined on the fiscalyear.
-- Reference: The optional external reference of the invoice.
-- Party: The party for which or from which the invoice is issued.
-- Invoice Address: The address of the party.
-- Party Tax Identifier: The tax identifier of the party.
-- Description: An optional description of the invoice.
-- Comment: A text fields to add custom comments.
-- Invoice Date: The date of the invoice. It is set on posting the invoice if 
not.
-- Accounting Date: The date to use for accounting if set otherwise it is the
-  invoice date.
-- Currency: The currency of the invoice.
-- Journal: The journal on which the accounting must be booked.
-- Account: The payable or receivable account.
-- Payment Term: The payment term to apply for the invoice
-  (default value comes from the party).
-- Lines: The lines invoiced.
-- Taxes: The taxes related to the lines.
-- Untaxed, Tax, Total Amount: The amounts computed by the invoice.
-- Move: The accounting move created by the invoice on validation for supplier
-  invoices and on posting for others.
-- Cancel Move: The accounting move created to cancel a posted invoice.
-
-The *Invoice* report is stored when the invoice is posted and thus it is always
-the same that is returned for consistency.
-
-A wizard allow to register a cash payment directly on the invoice. The payment
-could be partial or with write-off.
-
-An other wizard allow to create a credit note from the invoice. If the option
-to refund is checked, the original invoice will be cancelled by the credit 
note.
-
-Invoice Line
-************
-
-There are 4 types of lines: *Line*, *Subtotal*, *Title*, *Comment*.
-The *Line* are composed of:
-
-- Product: An optional reference to the product to invoice.
-- Account: The account to book the expense or revenue.
-- Quantity: The quantity invoiced.
-- Unit: The unit of measure in which is expressed the quantity.
-- Unit Price: The unit price of the quantity in the currency of the invoice.
-- Amount: The amount of the line (Unit Price multiplied by Quantity).
-- Description: The description of the product or the line.
-- Note: A text fields to add custom comments.
-- Taxes: The taxes to apply to the amount of the line.
-
-Invoice Tax
-***********
-
-It groups the taxes of all the lines.
-The rounding of the taxes is defined in the accounting configuration and can
-be: *Per Document* or *Per Line*.
-
-- Description: The description of the tax.
-- Account: The account on which the tax is booked.
-- Base: The base amount on which the tax is computed.
-- Base Code: The *Tax Code* to record the base amount.
-- Base Sign: The sign used to record the base amount on the tax code.
-- Amount: The amount of the tax.
-- Tax Code: The *Tax Code* to record the tax amount.
-- Tax Sing: The sign used to record the tax amount on the tax code.
-- Tax: The tax used for computation.
-- Manual: A boolean to define manual tax
-  (which is not linked to an invoice line).
-
-Payment Term
-************
+The *Account Invoice Module* adds the concept of invoicing to Tryton.
+It allows the creation of customer and supplier invoices, and can handle the
+payment terms related to the invoices and show when they have been paid.
 
-It defines the maximum dates of how an due amount should be paid.
-
-- Name: The name of the term.
-- Description: The long description of the term.
-- Lines:
-
-  - Relative Deltas:
-
-    - Day: The day of the month.
-    - Month: The month of the year.
-    - Day of the Week: One of the week day.
-    - Months: The number of months to add.
-    - Weeks: The number of weeks to add.
-    - Days: The number of days to add.
-
-  - Type:
-
-    - *Fixed*:
-
-      - Amount: The maximum fixed amount to pay at this date.
-      - Currency: The currency of the amount.
-
-    - *Percentage on Remainder*:
-
-      - Ratio: The ratio to use on the remainder amount.
-      - Divisor: The reversed ratio.
-
-    - *Percentage on Total*:
-
-      - Ratio: The ratio to use on the total amount.
-      - Divisor: The reversed ratio.
-
-    - *Remainder*
-
-The computation of relative delta is based on the `python-dateutil library`_.
-The payment term create a term for each line as far as there is still a
-remainder amount.
-
-A wizard is provided to test the behaviour of the payment term. It display
-computed terms base on an amount and a date.
+.. toctree::
+   :maxdepth: 2
 
-.. note:: The last line of payment term must be a remainder.
-
-
-Payment Method
-**************
-
-The payment options available when paying an invoice. It has the following
-fields:
-
-- Name
-- Company
-- Journal: Will be used for creating the payment move
-- Credit Account and Debit Account: The accounts used for the payment move
-  depending on the amount sign.
-- Active: A checkbox that allow to disable the payment method.
-
-
-Fiscal Year Sequences
-*********************
-
-The sequence used to compute the invoice number is retrieved from the
-fiscalyear sequences model. At least one record must be defined for each
-fiscalyear. Additional criteria can be used like:
-
-* By period
-
-
-Configuration
-*************
-
-The account_invoice module uses the section `account_invoice` to retrieve some
-parameters:
-
-- `filestore`: a boolean value to store invoice report cache in the FileStore.
-  The default value is `False`.
-
-- `store_prefix`: the prefix to use with the FileStore. The default value is
-  `None`.
-
-.. _`python-dateutil library`: 
http://labix.org/python-dateutil#head-72c4689ec5608067d118b9143cef6bdffb6dad4e
+   usage/index
+   configuration
+   design
diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/usage/amend.rst
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/usage/amend.rst       Wed Feb 17 13:41:42 2021 +0000
@@ -0,0 +1,57 @@
+.. _Correcting invoices:
+
+Correcting invoices
+===================
+
+`Invoices <model-account.invoice>` can only be changed when they are in a
+draft state.
+
+Once an invoice has been posted you will need to
+`credit it <Crediting customers and suppliers>`, and reissue it by creating
+a new invoice with the correct information on.
+
+.. tip::
+
+   If you need to create a new invoice that is almost the same as an existing
+   invoice you can use the :guilabel:`Duplicate` item from the form's menu to
+   copy the existing invoice.
+   The duplicate invoice will be created in a draft state, so you can change
+   anything that was incorrect.
+
+.. _Cancelling invoices:
+
+Cancelling invoices
+===================
+
+Most `Invoices <model-account.invoice>` can be cancelled up to the point they
+are paid.
+Once they are paid you need to credit them instead.
+You do this by `creating a credit note <Crediting customers and suppliers>`
+for them.
+
+.. note::
+
+   Legislation may not allow you to cancel a posted customer invoice.
+   If this is the case, then you should instead create a credit note for it.
+
+   You can allow posted invoices to be credited by changing the setting in your
+   `Company <company:model-company.company>`.
+
+Cancelling an invoice removes its effect on your accounts by either removing
+its `Account Move <account:model-account.move>`, or negating it with a
+cancelling move.
+
+.. _Crediting customers and suppliers:
+
+Crediting customers and suppliers
+=================================
+
+In Tryton you credit customers and suppliers by creating *Credit Notes*.
+These are just `Invoices <model-account.invoice>` with negative totals.
+You can create a credit note manually or create one based on an existing
+invoice.
+
+To credit existing invoices you must first select the invoices that need to
+be credited.
+Next you run the `Credit <wizard-account.invoice.credit>` invoice wizard from
+the :guilabel:`Launch action` menu.
diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/usage/index.rst
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/usage/index.rst       Wed Feb 17 13:41:42 2021 +0000
@@ -0,0 +1,13 @@
+*****
+Usage
+*****
+
+Customer and supplier invoices can be found under the
+:menuselection:`Financial --> Invoices` menu item.
+
+.. toctree::
+   :maxdepth: 1
+
+   prepare
+   process
+   amend
diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/usage/prepare.rst
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/usage/prepare.rst     Wed Feb 17 13:41:42 2021 +0000
@@ -0,0 +1,105 @@
+.. _Setting a party's invoice address:
+
+Setting a party's invoice address
+=================================
+
+Tryton lets you mark which `Addresses <party:model-party.address>`, and
+also `Contact Mechanisms <party:model-party.contact_mechanism>`, should be
+used with `Invoices <model-account.invoice>`.
+
+.. tip::
+
+   If you don't set an invoice addresses or contact mechanisms, then the
+   party's first address or contact mechanism is used.
+
+.. _Setting default accounts:
+
+Setting default accounts
+========================
+
+Receivable and payable
+^^^^^^^^^^^^^^^^^^^^^^
+
+You can set the default receivable and payable
+`Accounts <account:model-account.account>` that are used for the invoice
+totals, for customers and suppliers respectively, in the
+`Account Configuration <account:model-account.configuration>`.
+
+A `Party <party:model-party.party>` can override these default accounts
+and normally allows you to set which accounts you want to use with that party.
+
+Revenue and Expense
+^^^^^^^^^^^^^^^^^^^
+
+The default revenue and expense accounts for the
+`Products <product:concept-product>` that appear on the invoice's lines are
+also set in the *Account Configuration*.
+
+These default accounts are used unless the product overrides them.
+Normally this is done by setting the revenue and expense accounts in the
+product's `Account Category <account_product:model-product.category>`.
+
+Tax
+^^^
+
+The accounts that are used for any `Taxes <account:model-account.tax>` are set
+on the taxes themselves.
+
+.. _Creating payment terms:
+
+Creating payment terms
+======================
+
+Any `Payment Term <model-account.invoice.payment_term>` that you want to use
+must be created before you can use them.
+You can do this at the point where you need to use them, or beforehand.
+
+The payment term defines when payment for an `Invoice <model-account.invoice>`
+is expected.
+Each part of a payment term allows you specify an amount and a date by adding
+months, weeks and days to the invoice date, and also setting a day of the
+month, month of the year, or day of the week that the payment is due.
+This calculation is done using |python-dateutil's relativedeltas|__.
+
+.. |python-dateutil's relativedeltas| replace:: python-dateutil's 
``relativedeltas``
+__ https://dateutil.readthedocs.io/en/stable/relativedelta.html
+
+One payment term that is sometimes used is "30 Days", this means you expect
+payment 30 days after the date on the invoice.
+In Tryton you would set this up by creating a payment term like this::
+
+   Name: 30 Days
+   Line 1:
+      Type: Remainder
+      Number of Days: 30
+
+You may want to request payment at the end of the month that the invoice
+was raised in, you can do this with::
+
+   Name: End Of Month
+   Line 1:
+      Type: Remainder
+      Day of Month: 31
+
+You can also define payment terms in which the payment is expected in stages.
+For example, to require a fixed amount of 100 immediately, then 50% of what
+is left after 7 days and the remaining amount after 14 days you would use::
+
+   Name: Payment in Stages
+   Line 1:
+      Type: Fixed
+      Amount: 100
+      Number of Days: 0
+   Line 2:
+      Type: Percentage on Remainder
+      Ratio: 50%
+      Number of Days: 7
+   Line 3:
+      Type: Remainder
+      Number of Days: 14
+
+.. tip::
+
+    For complex payment terms if you want to check what dates and amounts
+    it will generate you can try it out using the
+    `Test Payment Term <wizard-account.invoice.payment_term.test>` wizard.
diff -r 6d6edd30fca8 -r cdef7fe6a80a doc/usage/process.rst
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/usage/process.rst     Wed Feb 17 13:41:42 2021 +0000
@@ -0,0 +1,104 @@
+.. _Invoicing customers:
+
+Invoicing customers
+===================
+
+If your `Company <company:model-company.company>` has sold some things and
+you want to issue an invoice to the customer, then in Tryton you need to
+create a customer `Invoice <model-account.invoice>`.
+
+.. tip::
+
+   Tryton provides additional modules that can be used to automatically create
+   customer invoices.
+   These modules normally create draft invoices for you with almost all the
+   data already filled in.
+
+If you need to manually create a new customer `Invoice <model-account.invoice>`
+you will need to enter in a few details such as the name of the
+`Party <party:model-party.party>`, the
+`Currency <currency:model-currency.currency>` and the lines that make up the
+invoice.
+Most of the other fields are optional or have sensible default values.
+
+.. tip::
+
+   If the invoice you want to create is almost the same as an existing
+   invoice then you can use the :guilabel:`Duplicate` item from the form's
+   menu to avoid creating it from scratch.
+
+You should post the invoice before you issue it to your customer.
+Once the invoice has been posted the `Invoice report <report-account.invoice>`
+can be printed out or saved, and sent to your customer.
+
+.. tip::
+
+   The *Invoice report* generates a *Pro forma invoice* for invoices that are
+   validated, but not yet posted.
+
+.. tip::
+
+   The *Invoice report* is saved for posted customer invoices.
+   This means that every time you print it you will get an identical copy
+   of it.
+
+.. _Handling supplier invoices:
+
+Handling supplier invoices
+==========================
+
+Supplier `Invoices <model-account.invoice>` are issued to your
+`Company <company:model-company.company>` by a supplier for things that you
+purchase.
+
+For each invoice that you receive you need a new supplier invoice in Tryton.
+
+.. tip::
+
+   Tryton provides additional modules that automatically create, or help
+   create, supplier invoices.
+   If you are using these modules then the supplier invoices or invoice lines
+   are often automatically created for you.
+
+.. tip::
+
+   If the invoice you want to create is almost the same as an existing
+   invoice then you can use the :guilabel:`Duplicate` item from the form's
+   menu to avoid creating it from scratch.
+
+Once you have created, or found, the supplier invoice on Tryton you should
+check that it matches the one provided by the supplier.
+If you see any differences due to the way the taxes have been calculated
+then these can be fixed once all the lines are entered.
+You can do this by manually changing the tax amounts on the supplier invoice
+on Tryton.
+
+When you are happy the supplier invoice is correct, and it matches the one
+on Tryton you can post it.
+
+.. _Paying an invoice:
+
+Paying an invoice
+=================
+
+Each `Invoice <model-account.invoice>` tracks how much still needs to be paid.
+Once an invoice has been fully paid it automatically updates its state to
+indicate that it is now paid.
+
+If you are manually registering payments against invoices, then you can use
+the invoice's :guilabel:`Pay` button to run the
+`Pay Invoice <wizard-account.invoice.pay>` wizard and register a cash payment
+against the invoice.
+
+When doing this you will need to have already setup an appropriate
+`Invoice Payment Method <model-account.invoice.payment.method>`.
+This then makes it easy to use consistent
+`Journals <account:model-account.journal>` and
+`Accounts <account:model-account.account>` when manually entering payments.
+
+.. note::
+
+   Some of the other accounting modules allow you to automatically register
+   payments against invoices.
+   So, if you are using those modules you will not normally need to do this
+   manually.
diff -r 6d6edd30fca8 -r cdef7fe6a80a setup.py
--- a/setup.py  Sun Feb 14 15:51:51 2021 +0100
+++ b/setup.py  Wed Feb 17 13:41:42 2021 +0000
@@ -10,9 +10,12 @@
 
 
 def read(fname):
-    return io.open(
+    content = io.open(
         os.path.join(os.path.dirname(__file__), fname),
         'r', encoding='utf-8').read()
+    content = re.sub(
+        r'(?m)^\.\. toctree::\r?\n((^$|^\s.*$)\r?\n)*', '', content)
+    return content
 
 
 def get_require_version(name):
@@ -80,7 +83,8 @@
     download_url=download_url,
     project_urls={
         "Bug Tracker": 'https://bugs.tryton.org/',
-        "Documentation": 'https://docs.tryton.org/',
+        "Documentation":
+        'https://docs.tryton.org/projects/modules-account-invoice/',
         "Forum": 'https://www.tryton.org/forum',
         "Source Code": 'https://hg.tryton.org/modules/account_invoice',
         },

Reply via email to