[MERGE] Forward-port of branch 13.0 to 14.0

This commit is contained in:
Antoine Vandevenne (anv) 2021-04-27 12:08:53 +02:00
commit 95b3d35691
7 changed files with 141 additions and 77 deletions

View File

@ -2,16 +2,18 @@
Payment Terms and Installment Plans
===================================
**Payment Terms** regroup all the conditions under which a sale is completed and paid. They can be
applied to sales orders, customer invoices, and supplier bills, mostly to ensure that they will be
correctly paid, and on time. These conditions cover:
**Payment Terms** specify all the conditions under which a sale is paid, mostly to ensure customers
pay their invoices correctly and on time.
Payment Terms can be applied to sales orders, customer invoices, supplier bills, and contacts. These
conditions cover:
- The due date
- Some discounts
- Any other condition on the payment
Defining Payment Terms automates the computation of payments due dates, both for invoices and bills.
This is particularly helpful in managing installment plans.
Defining Payment Terms automatically calculates the payments' due dates. This is particularly
helpful for managing installment plans.
An **installment plan** allows the customers to pay an invoice in parts, with the amounts and
payment dates defined beforehand by the seller.
@ -29,19 +31,23 @@ payment dates defined beforehand by the seller.
the full payment is due at the end of the month following the invoice date.
.. note::
Payment terms are not to be confused with payment in several parts. If, for a specific order, you
invoice the customer in two parts, that is nor a payment term nor an installment plan, but an
invoicing policy.
Payment terms are not to be confused with down payment invoices. If, for a specific order, you
issue several invoices to your customer, that is neither a payment term nor an installment plan,
but an invoicing policy.
.. note::
This document is about the *Payment Terms* feature, not *Terms & Conditions*.
Configuration
=============
Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on *Create*.
The **Description on the Invoice** is the displayed text on a sale order, invoice, or bill.
The **Description on the Invoice** is the text displayed on the document (sale order, invoice,
etc.).
In the **Terms** section, you can add a set of rules, that we call *terms*, to define what needs to
be paid, and by which due date.
In the **Terms** section, you can add a set of rules, called *terms*, to define what needs to be
paid and by which due date.
To add a term, click on *Add a line*, and define its *Type*, *Value*, and *Due Date Computation*.
@ -49,12 +55,13 @@ To add a term, click on *Add a line*, and define its *Type*, *Value*, and *Due D
- Terms are computed in the order they are set up.
- The **balance** should always be used for the last line.
In the following example, 30% of the invoice is due on the day of issuance of the invoice, and the
balance is due at the end of the following month.
In the following example, 30% is due on the day of issuance, and the balance is due at the end of
the following month.
.. image:: media/payment_terms_configuration.png
.. image:: payment_terms/configuration.png
:align: center
:alt: Example of payment terms. The last line is the balance due the 31st of the following month.
:alt: Example of Payment Terms. The last line is the balance due on the 31st of the following
month.
Using Payment Terms
===================
@ -72,25 +79,26 @@ Payment Terms can be defined with the **Payment Terms** field on:
| To set specific payment terms on a bill. This is mostly useful when you need to manage vendor
terms with several installments. Otherwise, setting the *Due Date* is enough.
.. tip::
You can also define a **Due Date** manually. If Payment Terms are already defined, empty the
field so you can select a date.
Journal Entries
===============
Invoices with specific Payment Terms generate different *Journal Entries*, with one *Journal Item*
for each different *Due Date* computed.
for every computed *Due Date*.
This makes for easier *Follow-ups* and *Reconciliation* since Odoo takes each due date into account,
rather than just the balance due date.
rather than just the balance due date. It also helps to get an accurate *Aged Receivable report*.
In the following example, an invoice of $1000 has been issued with the following payment terms:
30% of the invoice is due on the day of issuance of the invoice, and the balance is due at the end
of the following month.
.. image:: media/payment_terms_journal_entry.png
.. image:: payment_terms/journal-entry.png
:align: center
:alt: Example of an invoice with specific Payment Terms. The amount debited on the Account
Receivable is split in several Journal Items.
:alt: The amount debited on the Account Receivable is split into two Journal Items with distinct
Due Dates
The $1000 debited on the Account Receivable is split into two distinct *Journal Items*. Both of
them have their own **Due Date**.
In this example, an invoice of $1000 has been issued with the following payment terms: *30% is due
on the day of issuance, and the balance is due at the end of the following month.*
+----------------------+-------------+---------+---------+
| Account | Due date | Debit | Credit |
@ -102,7 +110,8 @@ them have their own **Due Date**.
| Product Sales | | | 1000 |
+----------------------+-------------+---------+---------+
This allows for easier reconciliation and to accurately follow up late payments.
The $1000 debited on the Account Receivable is split into two distinct *Journal Items*. Both of
them have their own **Due Date**.
.. seealso::
- :doc:`cash_discounts`

View File

@ -68,14 +68,48 @@ grammatical way of separating ideas.
.. _contributing/titles:
Titles
------
Titles and headings
-------------------
To write a good title :
To write good titles and headings:
- **Be concise.**
- **Avoid sentences**, questions, and titles starting with "how to."
- **Don't use pronouns** in your titles, especially 2nd person (*your*)
- Use **sentence case**. This means you capitalize only:
- the first word of the title or heading
- the first word after a colon
- proper nouns (brands, product and service names, etc.)
- app features, as written in the apps
.. important::
Do not capitalize common nouns when they are not referred to as features. This is more likely
to happen in headings rather than in titles.
+------------------+-----------------------------------+--------------------------------------------------------+
| | Examples | Explanations |
+==================+===================================+========================================================+
| | **Titles** | *Quotation Templates* | "Quotation Templates" is a feature in Odoo. |
| | (h1) +-----------------------------------+--------------------------------------------------------+
| | *Lead Mining* | "Lead Mining" is a feature in Odoo. |
| +-----------------------------------+--------------------------------------------------------+
| | *Resupply from another Warehouse* | "Warehouse" is capitalized as we refer to the feature |
| | | in the app rather than to a real warehouse. |
| +-----------------------------------+--------------------------------------------------------+
| | *Synchronize Google Calendar | "Google Calendar" is a product and "Odoo" is a brand. |
| | with Odoo* | |
+------------------+-----------------------------------+--------------------------------------------------------+
| | **Headings** | *Confirm the quotation* | "The quotation" is a common noun not referring to a |
| | (h2, h3, etc.) | | feature in Odoo. |
| +-----------------------------------+--------------------------------------------------------+
| | *Test environment* | "Environment" is a common noun. |
| +-----------------------------------+--------------------------------------------------------+
| | *Add a new Payment Acquirer* | "Payment Acquirers" is a feature in Odoo. |
| +-----------------------------------+--------------------------------------------------------+
| | *Generate SEPA Direct Debit XML | "SEPA Direct Debit" and "XML" are considered as proper |
| | files to submit payments* | nouns. |
+------------------+-----------------------------------+--------------------------------------------------------+
.. _contributing/document-structure:
@ -86,7 +120,7 @@ Use different **headings levels** to organize your text by sections and sub-sect
are also displayed in a dynamic *navigation bar* on the side.
+---------------------------------------------------------------------------------------+
| | **H1: Page Title** |
| | **H1: Page title** |
| | Your *page title* gives your reader a quick and clear understanding of what your |
| content is about. It is also referenced in the section's *table of contents*. |
| |
@ -94,11 +128,11 @@ are also displayed in a dynamic *navigation bar* on the side.
| of view**, and shouldn't put the emphasis on Odoo, as this is documentation and not |
| marketing. |
| |
| Start first with a **Lead Paragraph**, which helps the reader make sure that they've |
| Start first with a **lead paragraph**, which helps the reader make sure that they've |
| found the right page, then explain the **business aspects of this topic** in the |
| following paragraphs. |
+-----+---------------------------------------------------------------------------------+
| | | **H2: Section Title (configuration)** |
| | | **H2: Section title (configuration)** |
| | | This first H2 section is about the configuration of the feature, or the |
| | prerequisites to achieve a specific goal. To add a path, make sure you |
| | use the ``:menuselection:`` specialized directive (see link below). |
@ -107,7 +141,7 @@ are also displayed in a dynamic *navigation bar* on the side.
| | | To do so, go to ``:menuselection:`App name --> Menu --> Sub-menu```, and |
| | enable the XYZ feature. |
+-----+---------------------------------------------------------------------------------+
| | | **H2: Section Title (main sections)** |
| | | **H2: Section title (main sections)** |
| | | Create as many main sections as you have actions or features to distinguish. |
| | The title can start with a verb, but try to avoid using "Create ...". |
+-----+-----+---------------------------------------------------------------------------+
@ -160,6 +194,38 @@ A few tips to improve your screenshots:
Resizing the window's width is the most important step to do as Odoo's responsive design
automatically resizes all fields to match the window's width.
.. _contributing/media-files:
Media files
-----------
A **media filename**:
- is written in **lower-case letters**
- is **relevant** to the media's content. (E.g., :file:`screenshot-tips.gif`.)
- separates its words with a **hyphen** ``-`` (E.g., :file:`awesome-filename.png`.)
Each document has its own folder in which the media files are located. The folder's name must be the
same as the document's filename.
For example, the document :file:`doc_filename.rst` refers to two images that are placed in the
folder ``doc_filename``.
::
├── section
│ └── doc_filename
│ │ └── screenshot-tips.gif
│ │ └── awesome-filename.png
│ └── doc_filename.rst
.. note::
Previously, image filenames would mostly be named with numbers (e.g., :file:`feature01.png`) and
placed in a single ``media`` folder. While it is advised not to name your *new* images in that
fashion, it is also essential **not to rename unchanged files**, as doing this would double the
weight of renamed image files on the repository. They will eventually all be replaced as the
content referencing those images is updated.
.. _contributing/alt-tags:
ALT tags

View File

@ -1,29 +1,30 @@
==============================================
How to adapt the prices to my website visitors
==============================================
================================
Adapt prices to website visitors
================================
This section sheds some light on pricing features of eCommerce app:
This section sheds light on pricing features found in the eCommerce app:
* force a price by geo-localization,
* let the customer choose the currency.
As a pre-requisite, check out how to managing produt pricing:
As a pre-requisite, check out how to managing product pricing:
:doc:`../../sales/products_prices/prices/pricing`).
Geo-IP to automatically apply the right price
================================================
Geo-IP automatically applies the right price
============================================
Assign country groups to your pricelists. That way, your visitors not yet
logged in will get their own currency when landing on your website.
Assign country groups to your pricelists. That way, visitors who aren't
logged in yet will get their own currency when landing on your website.
Once logged in, they get the pricelist matching their country.
Currency selector
=================
In case you sell in several currencies, you can let your customers choose
their own currency. Check *Selectable* to add the pricelist to the website drop-down menu.
In the case that you sell in several currencies, you can let your customers choose
their own. Check the *Selectable* box to add the pricelist to the website drop-down menu, which
can be found in *Pricelists* under the *Products* menu, located in the Website application.
.. image:: ./media/website_pricelist_select.png
:align: center

View File

@ -31,15 +31,3 @@ We advise that:
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
cause side-effects if they are started more often than expected.
Can you install `pycups <https://pypi.org/project/pycups/>`_ or some similar library linked to `CUPS <https://www.cups.org/>`_ ?
--------------------------------------------------------------------------------------------------------------------------------
Several community apps for Odoo list ``pycups`` as required dependency.
- ``pycups`` is a set of Python bindings for the libcups library. They are meant to integrate your computer with a local printing server.
- CUPS is a printing server meant to be used for printers on the same local network as the Odoo server.
We consider adding new system packages as long as they are indeed used.
Regarding ``pycups``, you won't be able to configure a printer in the local network of your Odoo.sh server.

View File

@ -1,43 +1,43 @@
===================================================
How to import products with categories and variants
How to import Products with Categories and Variants
===================================================
Import templates are provided in the import tool of the most common data to
Import templates are provided in the **Import Tool** of the most common data to
import (contacts, products, bank statements, etc.).
You can open them with any spreadsheets software (Microsoft Office,
You can open them with any spreadsheet software (Microsoft Office,
OpenOffice, Google Drive, etc.).
How to customize the file
=========================
* Remove columns you don't need. We advise to not remove the *ID* one (see
why here below).
* Remove columns you don't need. However, we advise you to not remove the *ID* column (see
why below).
* Set a unique ID to every single record by dragging down the ID sequencing.
* Don't change labels of columns you want to import. Otherwise Odoo won't recognize
them anymore and you will have to map them on your own in the import screen.
* To add new columns,Feel free to add new columns but the fields need to exist in Odoo. If Odoo fails
in matching the column name with a field, you can make it manually when importing
* Don't change the labels of columns you want to import. Otherwise, Odoo won't recognize
them anymore, and you will have to map them on your own in the import screen.
* Feel free to add new columns, but the fields need to exist in Odoo. If Odoo fails
in matching the column name with a field, you can match it manually when importing
by browsing a list of available fields.
Why an “ID” column
==================
Why an “ID” column?
===================
The ID is an unique identifier for the line item. Feel free to use the one of your
previous software to ease the transition to Odoo.
The ID is a truly unique identifier for the line item. Feel free to use one of your
previous software to ease the transition into Odoo.
Setting an ID is not mandatory when importing but it helps in many cases:
Setting an ID is not mandatory when importing, but it helps in many cases:
* Update imports: you can import the same file several times without creating duplicates;
* Update imports: you can import the same file several times without creating duplicates.
* Import relation fields (see here below).
How to import relation fields
=============================
An Odoo object is always related to many other objects (e.g. a product is linked
to product categories, attributes, vendors, etc.). To import those relations you need to
An Odoo object is always related to many other objects (e.g., a product is linked
to product categories, attributes, vendors, etc.). To import those relations, you need to
import the records of the related object first from their own list menu.
You can do it using either the name of the related record or its ID. The ID is expected when
two records have the same name. In such a case add " / ID" at the end of the column title
(e.g. for product attributes: Product Attributes / Attribute / ID).
You can do this using the name of the related record or its ID. The ID is expected when
two records have the same name. In such a case, add " / ID" at the end of the column title
(e.g., for product attributes: Product Attributes / Attribute / ID).