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',
},