[MERGE] Forward-port of branch 13.0 to 14.0
This commit is contained in:
commit
95b3d35691
@ -2,16 +2,18 @@
|
|||||||
Payment Terms and Installment Plans
|
Payment Terms and Installment Plans
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
**Payment Terms** regroup all the conditions under which a sale is completed and paid. They can be
|
**Payment Terms** specify all the conditions under which a sale is paid, mostly to ensure customers
|
||||||
applied to sales orders, customer invoices, and supplier bills, mostly to ensure that they will be
|
pay their invoices correctly and on time.
|
||||||
correctly paid, and on time. These conditions cover:
|
|
||||||
|
Payment Terms can be applied to sales orders, customer invoices, supplier bills, and contacts. These
|
||||||
|
conditions cover:
|
||||||
|
|
||||||
- The due date
|
- The due date
|
||||||
- Some discounts
|
- Some discounts
|
||||||
- Any other condition on the payment
|
- Any other condition on the payment
|
||||||
|
|
||||||
Defining Payment Terms automates the computation of payments due dates, both for invoices and bills.
|
Defining Payment Terms automatically calculates the payments' due dates. This is particularly
|
||||||
This is particularly helpful in managing installment plans.
|
helpful for managing installment plans.
|
||||||
|
|
||||||
An **installment plan** allows the customers to pay an invoice in parts, with the amounts and
|
An **installment plan** allows the customers to pay an invoice in parts, with the amounts and
|
||||||
payment dates defined beforehand by the seller.
|
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.
|
the full payment is due at the end of the month following the invoice date.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Payment terms are not to be confused with payment in several parts. If, for a specific order, you
|
Payment terms are not to be confused with down payment invoices. If, for a specific order, you
|
||||||
invoice the customer in two parts, that is nor a payment term nor an installment plan, but an
|
issue several invoices to your customer, that is neither a payment term nor an installment plan,
|
||||||
invoicing policy.
|
but an invoicing policy.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This document is about the *Payment Terms* feature, not *Terms & Conditions*.
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on *Create*.
|
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
|
In the **Terms** section, you can add a set of rules, called *terms*, to define what needs to be
|
||||||
be paid, and by which due date.
|
paid and by which due date.
|
||||||
|
|
||||||
To add a term, click on *Add a line*, and define its *Type*, *Value*, and *Due Date Computation*.
|
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.
|
- Terms are computed in the order they are set up.
|
||||||
- The **balance** should always be used for the last line.
|
- 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
|
In the following example, 30% is due on the day of issuance, and the balance is due at the end of
|
||||||
balance is due at the end of the following month.
|
the following month.
|
||||||
|
|
||||||
.. image:: media/payment_terms_configuration.png
|
.. image:: payment_terms/configuration.png
|
||||||
:align: center
|
: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
|
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
|
| 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.
|
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
|
Journal Entries
|
||||||
===============
|
===============
|
||||||
|
|
||||||
Invoices with specific Payment Terms generate different *Journal Entries*, with one *Journal Item*
|
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,
|
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:
|
.. image:: payment_terms/journal-entry.png
|
||||||
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
|
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Example of an invoice with specific Payment Terms. The amount debited on the Account
|
:alt: The amount debited on the Account Receivable is split into two Journal Items with distinct
|
||||||
Receivable is split in several Journal Items.
|
Due Dates
|
||||||
|
|
||||||
The $1000 debited on the Account Receivable is split into two distinct *Journal Items*. Both of
|
In this example, an invoice of $1000 has been issued with the following payment terms: *30% is due
|
||||||
them have their own **Due Date**.
|
on the day of issuance, and the balance is due at the end of the following month.*
|
||||||
|
|
||||||
+----------------------+-------------+---------+---------+
|
+----------------------+-------------+---------+---------+
|
||||||
| Account | Due date | Debit | Credit |
|
| Account | Due date | Debit | Credit |
|
||||||
@ -102,7 +110,8 @@ them have their own **Due Date**.
|
|||||||
| Product Sales | | | 1000 |
|
| 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::
|
.. seealso::
|
||||||
- :doc:`cash_discounts`
|
- :doc:`cash_discounts`
|
||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
@ -68,14 +68,48 @@ grammatical way of separating ideas.
|
|||||||
|
|
||||||
.. _contributing/titles:
|
.. _contributing/titles:
|
||||||
|
|
||||||
Titles
|
Titles and headings
|
||||||
------
|
-------------------
|
||||||
|
|
||||||
To write a good title :
|
To write good titles and headings:
|
||||||
|
|
||||||
- **Be concise.**
|
- **Be concise.**
|
||||||
- **Avoid sentences**, questions, and titles starting with "how to."
|
- **Avoid sentences**, questions, and titles starting with "how to."
|
||||||
- **Don't use pronouns** in your titles, especially 2nd person (*your*)
|
- **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:
|
.. _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.
|
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 |
|
| | 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*. |
|
| 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 |
|
| of view**, and shouldn't put the emphasis on Odoo, as this is documentation and not |
|
||||||
| marketing. |
|
| 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 |
|
| found the right page, then explain the **business aspects of this topic** in the |
|
||||||
| following paragraphs. |
|
| following paragraphs. |
|
||||||
+-----+---------------------------------------------------------------------------------+
|
+-----+---------------------------------------------------------------------------------+
|
||||||
| | | **H2: Section Title (configuration)** |
|
| | | **H2: Section title (configuration)** |
|
||||||
| | | This first H2 section is about the configuration of the feature, or the |
|
| | | 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 |
|
| | prerequisites to achieve a specific goal. To add a path, make sure you |
|
||||||
| | use the ``:menuselection:`` specialized directive (see link below). |
|
| | 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 |
|
| | | To do so, go to ``:menuselection:`App name --> Menu --> Sub-menu```, and |
|
||||||
| | enable the XYZ feature. |
|
| | 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. |
|
| | | 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 ...". |
|
| | 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
|
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.
|
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:
|
.. _contributing/alt-tags:
|
||||||
|
|
||||||
ALT tags
|
ALT tags
|
||||||
|
@ -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,
|
* force a price by geo-localization,
|
||||||
|
|
||||||
* let the customer choose the currency.
|
* 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`).
|
: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
|
Assign country groups to your pricelists. That way, visitors who aren't
|
||||||
logged in will get their own currency when landing on your website.
|
logged in yet will get their own currency when landing on your website.
|
||||||
|
|
||||||
Once logged in, they get the pricelist matching their country.
|
Once logged in, they get the pricelist matching their country.
|
||||||
|
|
||||||
Currency selector
|
Currency selector
|
||||||
=================
|
=================
|
||||||
|
|
||||||
In case you sell in several currencies, you can let your customers choose
|
In the case that 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.
|
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
|
.. image:: ./media/website_pricelist_select.png
|
||||||
:align: center
|
:align: center
|
||||||
|
@ -31,15 +31,3 @@ We advise that:
|
|||||||
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
|
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
|
||||||
cause side-effects if they are started more often than expected.
|
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.
|
|
||||||
|
|
||||||
|
@ -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.).
|
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.).
|
OpenOffice, Google Drive, etc.).
|
||||||
|
|
||||||
How to customize the file
|
How to customize the file
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
* Remove columns you don't need. We advise to not remove the *ID* one (see
|
* Remove columns you don't need. However, we advise you to not remove the *ID* column (see
|
||||||
why here below).
|
why below).
|
||||||
* Set a unique ID to every single record by dragging down the ID sequencing.
|
* 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
|
* 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.
|
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
|
* 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
|
in matching the column name with a field, you can match it manually when importing
|
||||||
by browsing a list of available fields.
|
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
|
The ID is a truly unique identifier for the line item. Feel free to use one of your
|
||||||
previous software to ease the transition to Odoo.
|
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).
|
* Import relation fields (see here below).
|
||||||
|
|
||||||
How to import relation fields
|
How to import relation fields
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
An Odoo object is always related to many other objects (e.g. a product is linked
|
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
|
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.
|
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
|
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
|
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).
|
(e.g., for product attributes: Product Attributes / Attribute / ID).
|
||||||
|
Loading…
Reference in New Issue
Block a user