Compare commits

...

41 Commits

Author SHA1 Message Date
Jonathan Castillo (jcs)
f71b4822bd [IMP] sales: add link to OQT - PDF quote video
This commit adds a seealso section in the intro of the PDF quote builder
doc, with a link to the related Odoo Quick Tips video.
2023-11-21 15:58:40 +01:00
Rémi Rahir (rar)
9be2b43adb [FIX] dev/reference: Fix external reference
The tour utils were red and moved in Odoo (odoo/odoo#107618).

closes odoo/documentation#6514

X-original-commit: 1746c57ff4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
2023-11-20 11:13:29 +00:00
Felicious
e946be6abd [IMP] barcode: split docs + hone in on language
closes odoo/documentation#6519

X-original-commit: 9081e45aab
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-11-20 01:14:04 +00:00
oco-odoo
a70677317a [IMP] accounting: new tag selector for custom reports
0c0cf8ebc9
added a new way to select accounts in the account_codes engine. This
commit adds some explanation in the doc on how to use this new syntax.

closes odoo/documentation#6507

X-original-commit: 1a32165180
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-11-20 01:14:02 +00:00
John Holton (hojo)
d7218a2d75 [ADD] MRP: Three-step manufacturing
closes odoo/documentation#5163

closes odoo/documentation#6489

X-original-commit: 5689f7cf22
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-20 01:13:56 +00:00
John Holton (hojo)
507c4a07e1 [ADD] MRP: One-step manufacturing
closes odoo/documentation#6469

X-original-commit: 9c0982371a
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-16 01:20:31 +00:00
Felicious
f92a81d051 [IMP] inventory: expand on accounting and math
closes odoo/documentation#6481

X-original-commit: 9761eb44dc
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: toaa <104567387+toaa-odoo@users.noreply.github.com>
Co-authored-by: meng-odoo <101904966+meng-odoo@users.noreply.github.com>
2023-11-15 23:51:15 +00:00
tiku-odoo
e5ee15e20d [IMP] Productivity: Outlook Plugin edits
closes odoo/documentation#6482

X-original-commit: 71aabb2618
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2023-11-15 21:07:21 +00:00
Rémy Voet (ryv)
5070f160ed [IMP] orm: update changelog
closes odoo/documentation#6464

X-original-commit: f1960a250c
Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2023-11-15 12:34:28 +00:00
Yaroslav Soroko (yaso)
52b86aab37 [IMP] Pos: iot six module part added to the six doc
This PR adds the documentation for a new Pos IoT Six module which will
soon replace the old Six module.

task-3555605

closes odoo/documentation#6439

X-original-commit: bc98b8c491
Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
Co-authored-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
Co-authored-by: Loredana Perazzo <lrpz@odoo.com>
2023-11-14 16:35:03 +00:00
John Holton (hojo)
ae1ad46925 [ADD] Quality: Instructions quality check
closes odoo/documentation#6453

X-original-commit: f0b895fdb2
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-14 03:13:49 +00:00
Felicious
ee93bc9d9d [IMP] inventory: fwport removal strategy
closes odoo/documentation#6448

X-original-commit: ba34f754ce
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-14 03:13:48 +00:00
Sam Lieber (sali)
0336359c57 [IMP] tests: make review UX and resource files
closes odoo/documentation#6433

X-original-commit: 25e204adcd
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-13 19:03:36 +00:00
John Holton (hojo)
5d840a56d7 [ADD] MRP: Two-step manufacturing
closes odoo/documentation#6401

X-original-commit: 0241c9dd05
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-13 19:03:31 +00:00
John Holton (hojo)
b09c1e045e [ADD] Inventory: Use locations to manage inventory
closes odoo/documentation#6422

X-original-commit: 889e95037d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-11 18:47:20 +00:00
KC (ksc)
f938a012ad [IMP] sales: complete rewrite for pricing doc
closes odoo/documentation#6414

X-original-commit: a113d83fea
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-11 18:47:19 +00:00
Loredana Perazzo
787ec0f787 [IMP] pos: add warning to not buy a terminal from amazon
closes odoo/documentation#6390

Taskid: 3284737
X-original-commit: f0495a9bc9
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-09 12:27:47 +00:00
John Holton (hojo)
7cb346fbb1 [ADD] MRP: Work order dependencies
closes odoo/documentation#6379

X-original-commit: a1e7445ae3
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-09 03:52:53 +00:00
Felicious
5e579431e1 [IMP] inventory: rewrite lead times, add images
closes odoo/documentation#6359

X-original-commit: 3d5badcc82
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2023-11-09 03:52:53 +00:00
John Holton (hojo)
1a353a6b91 [ADD] Inventory: Add Scrap inventory
closes odoo/documentation#6374

X-original-commit: 0e6576cc3d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-09 02:52:28 +00:00
Sam Lieber (sali)
17885d893e [FW][ADD] MRP: Shop Floor Overview
closes odoo/documentation#6334

X-original-commit: cd88165
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <hojo@odoo.com>
2023-11-09 01:24:00 +00:00
Martin Trigaux
f13d8b52fc [I18N] *: export 17.0 translations
closes odoo/documentation#6352

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-11-08 10:05:16 +00:00
tiku-odoo
7f69acd5aa [ADD] IoT: OPC-UA Protocol
closes odoo/documentation#6350

X-original-commit: 4d2a3101ad
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-08 10:05:15 +00:00
John Holton (hojo)
66414a765e [ADD] MRP: Add Split and merge manufacturing orders
closes odoo/documentation#6340

X-original-commit: 83873dbd71
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-08 10:05:14 +00:00
Louis Baudoux
1c0678a99a [IMP] iap: move from first-person to second-person writing
For some reason, the first-person was used throughout the IAP
documentation, and quite inconsistently.
As the rest of the documentation is using second-person writing, IAP
should be no exception.

closes odoo/documentation#6327

X-original-commit: df474342ba
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Louis Baudoux (lba) <lba@odoo.com>
2023-11-08 05:31:15 +00:00
Louis Baudoux
b237af1ba8 [IMP] iap: remove documentation related to IAP services creation
It has been decided to remove the possibility for our users to create
their own IAP services.
This decision was motivated by the fact that, in the 5 years of
existence of IAP, very few non-Odoo services have been created and
actively used by our customers.

X-original-commit: 282f041ed1
Part-of: odoo/documentation#6327
2023-11-08 05:31:15 +00:00
KC (ksc)
03cf50013a [IMP] sales: minor adjustment to dynamic text portion of PDF builder
closes odoo/documentation#6322

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-08 05:31:13 +00:00
Nathan Marotte (nama)
9ab09aa0a5 [IMP] upgrade: overhaul upgrade doc
closes odoo/documentation#6320

X-original-commit: 41aebc3b05
Signed-off-by: Nathan Marotte (nama) <nama@odoo.com>
2023-11-08 04:09:48 +00:00
Antoine Vandevenne (anv)
255b3b2651 [IMP] supported_versions: release 17.0
closes odoo/documentation#6313

X-original-commit: 2c805d9813
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-08 04:09:45 +00:00
Felicious
07bb9ec349 [ADD] PLM: ECO approvals doc
closes odoo/documentation#6303

X-original-commit: 907e1ba854
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-07 02:24:49 +00:00
Sam Lieber (sali)
717b45bf56 [IMP] l10n: Chile new features
closes odoo/documentation#6256

X-original-commit: eff8e9d915
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: masi-odoo <masi@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
2023-11-05 18:35:53 +00:00
Felicious
60490b0a7d [ADD] PLM: version control
closes odoo/documentation#6293

Author:    Felicious <feku@odoo.com>
X-original-commit: 6a5c340a26
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-04 16:38:55 +00:00
Louis Baudoux
6ce9a014a7 [IMP] extract_api: document the new API version
We have introduced a second version of the Extract API that adds the IAP
account token to the `get_result` and `validate` routes.

There are also other changes in this commit:
 - The deprecated stuff has been removed as it's been deprecated for a
   while and won't be supported anymore in the future.
 - The `status` table of the `get_result` route has been added as it was
   missing for some reason.
 - The documentation regarding the `/validate` routes have been removed
   for security reasons.

closes odoo/documentation#6282

X-original-commit: a8c6272899
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Louis Baudoux (lba) <lba@odoo.com>
2023-11-04 06:43:07 +00:00
Jess Rogers (jero)
c4f0e9c11c [IMP] live chat: update ratings doc
closes odoo/documentation#6263

X-original-commit: 7a307320c3
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
2023-11-04 00:38:27 +00:00
KC (ksc)
4fdfda7ddb [ADD] sales: adding pdf quote builder doc for 16/17
closes odoo/documentation#6029

Author:    KC (ksc) <ksc@odoo.com>
Date:      Thu Oct 5 11:29:37 2023 -0700
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: meng-odoo <meng@odoo.com>
Co-authored-by: Felicious <feku@odoo.com>
Co-authored-by: Demesmaeker <edm@odoo.com>
Co-authored-by: dalaOdoo <dala@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
2023-11-04 00:38:16 +00:00
Felicious
765d8935d4 [ADD] PLM: engineering change order
closes odoo/documentation#6272

X-original-commit: fc9bbb7d22
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: Sho Ketchum <96748231+odoo-shke@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-11-02 18:23:13 +00:00
Rémy Voet (ryv)
6cb55a5cce [FIX] developer: fix bad documentation of --unaccent
In the CLI, `--unaccent` try to enable PostgreSQL unaccent extention
when odoo is responsible to create new database(s).

closes odoo/documentation#6244

X-original-commit: 1639d22efd
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2023-10-31 07:11:43 +00:00
Martin Trigaux
fd7d95f707 [IMP] *: export translations
closes odoo/documentation#6248

X-original-commit: bb4210cdbd
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-10-30 09:01:02 +00:00
Tom Aarab (toaa)
ffe569a625 [IMP] accounting: reconciliation
Updated screenshots and typos for 16.3

Forward to 16.4:
- Change: Dashboard links are improved, and audit features can be found
  in the journal items view.

closes odoo/documentation#6233

X-original-commit: a31bcec3ba
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-10-27 21:36:43 +00:00
Tom Aarab (toaa)
077b7a577f [IMP] silverfin: API key
Added a note to make it clearer that for fiduciaries, a single API key
is valid for all databases linked to the user.

taskid-3570700

closes odoo/documentation#6230

X-original-commit: 323d3563c9
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2023-10-27 16:09:42 +00:00
Christophe Monniez
9d94d155fd [REL] 17.0 2023-10-26 19:39:29 +00:00
406 changed files with 20519 additions and 15025 deletions

View File

@@ -1,63 +1,122 @@
[main]
host = https://www.transifex.com
[o:odoo:p:odoo-16-doc:r:administration]
file_filter = locale/<lang>/LC_MESSAGES/administration.po
source_file = locale/sources/administration.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:administration]
file_filter = locale/<lang>/LC_MESSAGES/administration.po
source_file = locale/sources/administration.pot
type = POT
minimum_perc = 0
resource_name = administration
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:applications]
file_filter = locale/<lang>/LC_MESSAGES/applications.po
source_file = locale/sources/applications.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:applications]
file_filter = locale/<lang>/LC_MESSAGES/applications.po
source_file = locale/sources/applications.pot
type = POT
minimum_perc = 0
resource_name = applications
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:finance]
file_filter = locale/<lang>/LC_MESSAGES/finance.po
source_file = locale/sources/finance.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:finance]
file_filter = locale/<lang>/LC_MESSAGES/finance.po
source_file = locale/sources/finance.pot
type = POT
minimum_perc = 0
resource_name = finance
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:general]
file_filter = locale/<lang>/LC_MESSAGES/general.po
source_file = locale/sources/general.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:general]
file_filter = locale/<lang>/LC_MESSAGES/general.po
source_file = locale/sources/general.pot
type = POT
minimum_perc = 0
resource_name = general
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:index]
file_filter = locale/<lang>/LC_MESSAGES/index.po
source_file = locale/sources/index.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:index]
file_filter = locale/<lang>/LC_MESSAGES/index.po
source_file = locale/sources/index.pot
type = POT
minimum_perc = 0
resource_name = index
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:inventory_and_mrp]
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
source_file = locale/sources/inventory_and_mrp.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:inventory_and_mrp]
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
source_file = locale/sources/inventory_and_mrp.pot
type = POT
minimum_perc = 0
resource_name = inventory_and_mrp
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:marketing]
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
source_file = locale/sources/marketing.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:marketing]
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
source_file = locale/sources/marketing.pot
type = POT
minimum_perc = 0
resource_name = marketing
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:productivity]
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
source_file = locale/sources/productivity.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:productivity]
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
source_file = locale/sources/productivity.pot
type = POT
minimum_perc = 0
resource_name = productivity
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:sales]
file_filter = locale/<lang>/LC_MESSAGES/sales.po
source_file = locale/sources/sales.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:sales]
file_filter = locale/<lang>/LC_MESSAGES/sales.po
source_file = locale/sources/sales.pot
type = POT
minimum_perc = 0
resource_name = sales
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:services]
file_filter = locale/<lang>/LC_MESSAGES/services.po
source_file = locale/sources/services.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:services]
file_filter = locale/<lang>/LC_MESSAGES/services.po
source_file = locale/sources/services.pot
type = POT
minimum_perc = 0
resource_name = services
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-16-doc:r:user_settings]
file_filter = locale/<lang>/LC_MESSAGES/settings.po
source_file = locale/sources/settings.pot
source_lang = en
[o:odoo:p:odoo-16-doc:r:websites]
file_filter = locale/<lang>/LC_MESSAGES/websites.po
source_file = locale/sources/websites.pot
source_lang = en
[o:odoo:p:odoo-17-doc:r:user_settings]
file_filter = locale/<lang>/LC_MESSAGES/settings.po
source_file = locale/sources/settings.pot
type = POT
minimum_perc = 0
resource_name = settings
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:websites]
file_filter = locale/<lang>/LC_MESSAGES/websites.po
source_file = locale/sources/websites.pot
type = POT
minimum_perc = 0
resource_name = websites
replace_edited_strings = false
keep_translations = false
source_lang = en

View File

@@ -26,7 +26,7 @@ SOURCE_DIR = content
HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/17.0
endif
ifneq ($(CURRENT_LANG),en)
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
@@ -86,12 +86,13 @@ static: $(HTML_BUILD_DIR)/_static/style.css
# Called by runbot for the ci/documentation_guideline check.
test:
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer $(SOURCE_DIR)/services redirects
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer redirects
# Similar as `test`, but called only manually by content reviewers to trigger extra checks.
review:
@read -p "Enter content path: " path; read -p "Enter max line length (default: 100): " line_length; \
@read -p "Enter relative content path: " path; read -p "Enter max line length (default: 100): " line_length; \
if [ -z "$$path" ]; then echo "Error: Path cannot be empty"; exit 1; fi; \
if echo $$path | grep -q 'content/'; then path=`echo $$path | sed 's|content/||'`; fi; \
if [ -z "$$line_length" ]; then line_length=100; fi; \
export REVIEW=1; \
python tests/main.py --max-line-length=$$line_length $(SOURCE_DIR)/$$path

View File

@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
# `version` is the version info for the project being documented, acts as replacement for |version|,
# also used in various other places throughout the built documents.
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
version = release = 'master'
version = release = '17.0'
# `current_branch` is the technical name of the current branch.
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
@@ -213,6 +213,7 @@ sphinx.transforms.i18n.docname_to_domain = (
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'17.0': "Odoo 17",
'saas-16.4': "Odoo Online",
'saas-16.3': "Odoo Online",
'saas-16.2': "Odoo Online",
@@ -221,7 +222,6 @@ versions_names = {
'saas-15.2': "Odoo Online",
'15.0': "Odoo 15",
'14.0': "Odoo 14",
'13.0': "Odoo 13",
}
# The language names that should be shown in the language switcher, if the config option `languages`

View File

@@ -30,8 +30,8 @@ Upgrade
Trigger a database upgrade.
.. seealso::
For more information about the upgrade process, check out the :doc:`Odoo Online upgrade
documentation <../upgrade/odoo_online>`.
For more information about the upgrade process, check out the :ref:`Odoo Online upgrade
documentation <upgrade/request-test-database>`.
.. _odoo_online/duplicate:

View File

@@ -1,3 +1,4 @@
:hide-page-toc:
.. _supported_versions:
@@ -16,9 +17,6 @@ Odoo provides support and bug fixing **for the 3 last major versions** of Odoo.
- Online versions are *not* released for Odoo.sh and On-Premise installations.
- Online versions are listed below as *SaaS*.
What's the support status of my Odoo?
=====================================
This matrix shows the support status of every version.
**Major releases are in bold type.**
@@ -33,6 +31,12 @@ This matrix shows the support status of every version.
- On-Premise
- Release date
- End of support
* - **Odoo 17.0**
- |green|
- |green|
- |green|
- November 2023
- November 2026 (planned)
* - Odoo saas~16.4
- |green|
- N/A
@@ -62,7 +66,7 @@ This matrix shows the support status of every version.
- |green|
- |green|
- October 2022
- October 2025 (planned)
- November 2025 (planned)
* - Odoo saas~15.2
- |red|
- N/A
@@ -80,21 +84,27 @@ This matrix shows the support status of every version.
- |green|
- |green|
- October 2021
- October 2024 (planned)
- November 2024 (planned)
* - **Odoo 14.0**
- |green|
- |green|
- |green|
- |red|
- |red|
- |red|
- October 2020
- November 2023 (planned)
- November 2023
* - **Odoo 13.0**
- |red|
- |red|
- |red|
- October 2019
- October 2022
* - Older versions
- |red|
- |red|
- |red|
- Before 2019
- Before 2022
.. note::
.. admonition:: Legend
|green| Supported version
@@ -102,7 +112,9 @@ This matrix shows the support status of every version.
N/A Never released for this platform
🏁 Future version, not released yet
.. important::
Even though we don't support older versions, you can always `upgrade from any version
<https://upgrade.odoo.com/>`_.
.. |green| raw:: html
@@ -111,14 +123,3 @@ This matrix shows the support status of every version.
.. |red| raw:: html
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
I run an older version of Odoo/OpenERP/TinyERP
==============================================
Odoo 12.0, 11.0, 10.0, 9.0, and 8.0 are not supported anymore, on any platform.
OpenERP 7.0, 6.1, 6.0 and 5.0 are not supported anymore, on any platform.
TinyERP 4.0, 3.0, 2.0 and 1.0 are not supported anymore, on any platform.
Even though we don't support older versions, you can always `upgrade from any version <https://upgrade.odoo.com/>`_.

View File

@@ -295,7 +295,7 @@ Upgrade
Available for production and staging branches for valid projects.
.. seealso::
:doc:`Upgrade - Odoo.sh <../../upgrade/odoo_sh>`
:doc:`Upgrade documentation <../../upgrade>`
.. _odoosh-gettingstarted-branches-tabs-settings:

View File

@@ -1,226 +1,373 @@
:show-content:
.. |assistance-contact| replace::
If you need Odoo assistance on this matter, please get in touch with your Odoo Account Manager or
our `Sales department`_.
.. _Sales department: mailto:sales@odoo.com
=======
Upgrade
=======
.. toctree::
:titlesonly:
.. _administration/upgrade:
upgrade/odoo_online
upgrade/odoo_sh
upgrade/on_premise
upgrade/faq
An upgrade is the process of moving your database from an older version to a newer :doc:`supported
version <maintain/supported_versions>` (e.g., Odoo 14.0 to Odoo 16.0). Frequently upgrading is
essential as each version comes with new and improved features, bug fixes, and security patches.
An upgrade is switching to a newer version of Odoo (e.g., Odoo 14.0 to Odoo 15.0).
.. _upgrade_faq/rolling_release:
.. spoiler:: Automatic upgrades: Odoo Online's Rolling Release process
The Rolling Release process allows Odoo Online customers to upgrade their database directly from
a message prompt sent to the database administrator as soon as a new version is released. The
invitation to upgrade is only sent if no issues are detected during the automatic tests.
.. image:: upgrade/rr-upgrade-message.png
:alt: The upgrade message prompt on the top right of the database
It is strongly recommended to manually :ref:`test the upgrade first <upgrade/test_your_db>`.
Clicking :guilabel:`I want to test first` redirects to `the database manager
<https://www.odoo.com/my/databases/>`_, where it is possible to request an upgraded test database
and check it for any discrepancies.
It is **not** recommended to click :guilabel:`Upgrade Now` without testing first, as it
immediately triggers the live production database upgrade.
If the Rolling Release process detects an issue with the upgrade, it will be deactivated until
the issue is resolved.
An upgrade does not cover:
* Changing :ref:`editions <upgrade-faq/editions-change>` (i.e., Community to Enterprise edition)
* Switching :ref:`hosting type <upgrade-faq/hosting-types-switch>` (i.e., On-Premise to Odoo Online
or Odoo.sh)
* Migration from another ERP to Odoo
- Downgrading to a previous version of Odoo
- :doc:`Switching editions <maintain/enterprise>` (e.g., from Community to Enterprise)
- :doc:`Changing hosting type </administration/maintain/hosting_changes>` (e.g., from on-premise
to Odoo Online)
- Migrating from another ERP to Odoo
.. note:: |assistance-contact|
.. warning::
If your database contains a **custom module**, you must first upgrade its source code to be
compatible with the new version of Odoo **before upgrading**.
.. TODOUPG : once the page for developers is published, uncomment and link
.. :doc:`first upgrade its source code </developer/reference/upgrade>`
.. seealso::
- :ref:`upgrade/sla`
.. _upgrade/process-workflow:
Upgrading in a nutshell
-----------------------
Process workflow
================
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
<upgrade/request-test-database>`).
The upgrade process in a nutshell:
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
<upgrade/test_your_db>`).
#. You create a test upgrade request.
#. Odoo processes the request automatically by running the database through an upgrade script, which
takes between 20 and 120 minutes.
#. Odoo delivers a test database.
#. You test your database for possible discrepancies (see :ref:`upgrade/test-guidance`).
#. If there are any discrepancies, you report them to the Upgrade support team via the help portal
(see :ref:`upgrade/test-assistance`).
#. We fix the issues and send you a new test database.
#. Once you have completed the testing and are happy with the result, you decide on a date and time
when you stop users from accessing Odoo, freeze all data entries, and create an upgrade request
for the production upgrade.
#. Odoo delivers the production database through the automated process.
#. You restore it in your Production environment a few short hours later and continue working on the
newly upgraded database (this is done automatically on Odoo Online).
#. Report any issue encountered during the testing to Odoo via the `support page
<https://odoo.com/help?stage=migration>`__.
.. seealso::
- :doc:`Upgrade process for Odoo Online <upgrade/odoo_online>`
- :doc:`Upgrade process for Odoo.sh <upgrade/odoo_sh>`
- :doc:`Upgrade process for On-Premise <upgrade/on_premise>`
#. (If applicable) : upgrade the source code of your custom module to be compatible with the new
version of Odoo.
.. _upgrade/testing-phase:
#. Once all issues are resolved and you are confident that the upgraded database can be used as
your main database without any issues, plan the upgrade of your production database.
Testing
=======
#. Request the upgrade for the production database, rendering it unavailable for the time it takes
to complete the process (see :ref:`upgrading the production database <upgrade/upgrade-prod>`).
This phase allows you to review an upgraded version of your database without affecting your
production database in any way. We suggest that you run the test upgrade process at least once, but
you can do it as many times as you need (one at a time).
#. Report any issue encountered during the upgrade to Odoo via the `support page
<https://odoo.com/help?stage=post_upgrade>`__.
Once you receive your upgraded test database, check that all data, processes, and functionality are
still correct and working as expected.
.. TODOUPG: Once the page for developers is published, put this at 4)
.. (see :ref:`upgrading customizations <upgrade/upgrading_customizations>`).
If you do find discrepancies, :ref:`report your issues <upgrade/test-assistance>` and :ref:`request
a new test database <upgrade/test-db-request>` when the reported issues are fixed in the upgrade
script.
.. _upgrade/request-test-database:
If you do not find any discrepancies, you can move on to the upgrade of your production database.
.. important::
A test database is only intended for testing and remains completely unrelated to your present or
future production database. Any data you add, or changes you make, will not be reflected in your
upgraded production database.
.. note::
Test databases are neutered and features are disabled to prevent them from having an impact on
the production database:
#. The serial number of the database is modified (to prevent it from sending information as if it
was the production database).
#. The :ref:`base URL of the database <domain-name/web-base-url>` is reset to
``http://localhost:8069`` and the email domain to ``localhost``.
#. Scheduled actions are disabled (the calendar synchronization, the bank statement
synchronization, the planned automated actions, the fetching of incoming mail servers, etc.).
#. Outgoing mail servers are disabled by archiving the existing ones and adding a
fake/non-working one.
#. Payment providers and delivery carriers are reset to test environment.
#. Accounting localization Electronic Data Interchange (EDI) services are disabled.
#. A system parameter is set to tell the database has been neutered.
.. _upgrade/test-db-request:
Request a test database
=======================
Follow the instructions available per hosting type on the `website form
<https://upgrade.odoo.com>`_ and select *Testing* purpose.
.. image:: upgrade/test-purpose.png
:align: center
:alt: Selection of the "Testing" purpose in the upgrade form on Odoo
.. _upgrade/test-guidance:
Test guidance
=============
Every business and organization has its own operational needs and has to test its specific Odoo
database individually. We recommend you look at `the test scenario
<https://docs.google.com/document/d/1ypNs7JKPOsjNbKpdiKFH7Al6g6whZ9jr7f7duAQ5E1w/>`_ for further
information.
.. todo:: change link "test scenario" once the related doc is published
.. _upgrade/test-assistance:
Assistance
----------
If you encounter an issue in the **test database**, please get in touch with Odoo Upgrade Support
via the `Odoo Support page <https://www.odoo.com/help>`_.
Under the *Ticket Description* section, select *An issue related to my upgrade* ticket type.
.. image:: upgrade/test-assistance.png
:align: center
:alt: Selection of "An issue related to my upgrade" as Ticket Type in the support form on Odoo
.. warning::
If you choose another *Ticket Description* type, the request will be redirected to another
team. This will slow down the processing and response time.
Please provide as much detail as you can (i.e., videos and screenshots to illustrate your issue).
This will avoid clarifying questions and speed up the resolution process significantly.
.. note::
* The purpose of the test phase is not to correct existing data or configurations in your
database.
* |assistance-contact|
.. _upgrade/steps-production:
The production launch
=====================
The production upgrade request is when you decide to upgrade your current database with all your
production data (invoices, VAT returns, inventories, current orders) to a new version of your
choice.
After your :ref:`tests <upgrade/testing-phase>` are completed to your satisfaction, submit the
request to upgrade your production database via our `website form <https://upgrade.odoo.com>`_.
Select *Production* purpose.
.. important::
Going into production without first testing may lead to:
- business interruptions (e.g., no longer having the possibility to validate an action)
- poor customer experiences (e.g., an eCommerce website that does not work correctly)
.. _upgrade/production-assistance:
Assistance
----------
If you encounter issues or problems in the **production database**, please get in touch with **Odoo
Support**:
#. Connect to our `Odoo Support page <https://www.odoo.com/help>`_.
#. Under the *Ticket Description* section, select the appropriate type related to your issue but
**do not select** the option *An issue related to my upgrade*.
.. note::
After upgrading to production, the support will be provided by the Support team instead of the
Upgrade team.
#. Please provide as much detail as you can (i.e., videos and screenshots to illustrate your issue).
This will avoid clarifying questions and speed up the resolution process significantly.
.. warning::
If you choose *An issue related to my upgrade* as ticket type, the request will be redirected
to another team than the support one and will slow down the processing and response time.
.. _upgrade/assistance:
Help
====
.. _upgrade/contact:
Contact our upgrade service support
Obtaining an upgraded test database
-----------------------------------
Should you have any more questions about the upgrade, do not hesitate to send a message to `Odoo
Upgrade Team <mailto:upgrade@odoo.com>`_. We will be happy to answer it as soon as possible.
The `Upgrade page <https://upgrade.odoo.com/>`_ is the main platform for requesting an upgraded
database. However, depending on the hosting type, you can upgrade from the command line
(on-premise), the `Odoo Online database manager <https://odoo.com/my/databases>`_, or your `Odoo.sh
project <https://odoo.sh/project>`_.
.. _upgrade/supported-versions:
.. note::
The Upgrade platform follows the same `Privacy Policy <https://www.odoo.com/privacy>`_ as the
other Odoo.com services. Visit the `General Data Protection Regulation page
<https://www.odoo.com/gdpr>`_ to learn more about how Odoo handles your data and privacy.
Supported versions
------------------
.. tabs::
Please note that Odoo provides support and bug fixing only for the three last major versions of
Odoo.
.. group-tab:: Odoo Online
This is a factor to take into consideration before upgrading. If you are on an older version, we
suggest you to prefer the most recent version to benefit from longer support (before having to
upgrade again).
Odoo Online databases can be manually upgraded via the `database manager
<https://odoo.com/my/databases>`_.
The database manager displays all databases associated with the user's account. Databases
not on the most recent version of Odoo display an arrow in a circle icon next to their name,
indicating that they can be upgraded.
.. image:: upgrade/databases-page.png
:alt: The database manager with an upgrade button next to the name of a database.
Click the **arrow in a circle** icon to start the upgrade process. In the popup, fill in:
- The **version** of Odoo you want to upgrade to, usually the latest version
- The **email** address that should receive the link to the upgraded database
- The :guilabel:`Purpose` of the upgrade, which is automatically set to :guilabel:`Test` for
your first upgrade request
.. image:: upgrade/upgrade-popup.png
:alt: The "Upgrade your database" popup.
The :guilabel:`Upgrade in progress` tag is displayed next to the database name until
completion. Once the process succeeds, an email containing a link to the upgraded test
database is sent to the address provided. The database can also be accessed from the database
manager by clicking the dropdown arrow before the database name.
.. image:: upgrade/access-upgraded-db.png
:alt: Clicking the menu arrow displays the upgraded test database.
.. group-tab:: Odoo.sh
Odoo.sh is integrated with the upgrade platform to simplify the upgrade process.
.. image:: upgrade/odoo-sh-staging.png
:alt: Odoo.sh project and tabs
The **latest production daily automatic backup** is then sent to the `upgrade platform
<https://upgrade.odoo.com>`_.
Once the upgrade platform is done upgrading the backup and uploading it on the branch, it is
put in a **special mode**: each time a **commit is pushed** on the branch, a **restore
operation** of the upgraded backup and an **update of all the custom modules** occur. This
allows you to test your custom modules on a pristine copy of the upgraded database. The log
file of the upgrade process can be found in your newly upgraded staging build by going to
:file:`~/logs/upgrade.log`.
.. note::
In databases where custom modules are installed, their source code
must be up-to-date with the target version of Odoo before the upgrade
can be performed. If there are none, the "update on commit" mode is
skipped, the upgraded database is built as soon as it is transferred from the upgrade
platform, and the upgrade mode is exited.
.. TODOUPG : once the page for developers is published, uncomment
.. Check out the :doc:`upgrade for developers'
.. documentation </developer/reference/upgrade>` for more information. In
.. addition, if a module is not needed after an upgrade, :ref:`you can
.. remove customizations <upgrade/remove_customizations>`.
.. group-tab:: On-premise
The standard upgrade process can be initiated by entering the following command line on the
machine where the database is hosted:
.. code-block:: console
$ python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t <target version>
The following command can be used to display the general help and the main commands:
.. code-block:: console
$ python <(curl -s https://upgrade.odoo.com/upgrade) --help
An upgraded test database can also be requested via the `Upgrade page
<https://upgrade.odoo.com/>`_.
.. note::
- For security reasons, only the person who submitted the upgrade request can download it.
- For storage reasons, the database's copy is submitted without a filestore to the upgrade
server. Therefore, the upgraded database does not contain the production filestore.
- Before restoring the upgraded database, its filestore must be merged with the production
filestore to be able to perform tests in the same conditions as it would be in the new
version.
- The upgraded database contains:
- A `dump.sql` file containing the upgraded database
- A `filestore` folder containing files extracted from in-database records into
attachments (if there are any) and new standard Odoo files from the targeted Odoo
version (e.g., new images, icons, payment provider's logos, etc.).
This is the folder that should be merged with the production filestore
in order to get the full upgraded filestore.
.. note::
You can request multiple test databases if you wish to test an upgrade more than once.
.. _upgrade/upgrade_report:
.. note::
When an upgrade request is completed, an upgrade report is attached to the successful upgrade
email, and it becomes available in the Discuss app for users who are part of the "Administration
/ Settings" group. This report provides important information about the changes introduced by
the new version.
.. _upgrade/test_your_db:
Testing the new version of the database
---------------------------------------
It is essential to spend some time testing the upgraded test database to ensure that you are not
stuck in your day-to-day activities by a change in views, behavior, or an error message once the
upgrade goes live.
.. note::
Test databases are neutralized, and some features are disabled to prevent them from impacting the
production database:
#. Scheduled actions are disabled.
#. Outgoing mail servers are disabled by archiving the existing ones and adding a fake one.
#. Payment providers and delivery carriers are reset to the test environment.
Testing as many of your business flows as possible is strongly recommended to ensure they are
working correctly and to get more familiar with the new version.
.. admonition:: Basic test checklist
- Are there views that are deactivated in your test database but active in your production
database?
- Are your usual views still displayed correctly?
- Are your reports (invoice, sales order, etc.) correctly generated?
- Are your website pages working correctly?
- Are you able to create and modify records? (sales orders, invoices, purchases, users, contacts,
companies, etc.)
- Are there any issues with your mail templates?
- Are there any issues with saved translations?
- Are your search filters still present?
- Can you export your data?
.. spoiler:: Example of end-to-end testing
- Checking a random product in your product catalog and comparing its test and production data to
verify everything is the same (product category, selling price, cost price, vendor, accounts,
routes, etc.).
- Buying this product (Purchase app).
- Confirming the reception of this product (Inventory app).
- Checking if the route to receive this product is the same in your production database
(Inventory app).
- Selling this product (Sales app) to a random customer.
- Opening your customer database (Contacts app), selecting a customer (or company), and checking
its data.
- Shipping this product (Inventory app).
- Checking if the route to ship this product is the same as in your production database
(Inventory app).
- Validating a customer invoice (Invoicing or Accounting app).
- Crediting the invoice (issuing a credit note) and checking if it behaves as in your production
database.
- Checking your reports' results (Accounting app).
- Randomly checking your taxes, currencies, bank accounts, and fiscal year (Accounting app).
- Making an online order (Website apps) from the product selection in your shop until the
checkout process and checking if everything behaves as in your production database.
This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo.
If you face an issue while testing your upgraded test database, you can request the assistance of
Odoo via the `support page <https://odoo.com/help?stage=migration>`__ by selecting the option
related to testing the upgrade. In any case, it is essential to report any
problem encountered during the testing to fix it before upgrading your production database.
You might encounter significant differences with standard views, features, fields, and models during
testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced
by a new version breaks a customization, it is the responsibility of the maintainer of your custom
module to make it compatible with the new version of Odoo.
.. tip::
Do not forget to test:
- Integrations with external software (EDI, APIs, etc.)
- Workflows between different apps (online sales with eCommerce, converting a lead all the way to
a sales order, delivery of products, etc.)
- Data exports
- Automated actions
- Server actions in the action menu on form views, as well as by selecting multiple records on
list views
.. _upgrade/upgrade-prod:
Upgrading the production database
---------------------------------
Once the :ref:`tests <upgrade/test_your_db>` are completed and you are confident that the upgraded
database can be used as your main database without any issues, it is time to plan the go-live day. It
can be planned in coordination with Odoo's upgrade support analysts, reachable via the `support page
<https://odoo.com/help>`__.
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
the upgrade at a time when the use of the database is minimal.
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
to frequently request another upgraded test database to ensure that the upgrade process is
still successful, especially if it takes a long time to finish. Fully rehearsing the upgrade
process the day before upgrading the production database is also recommended.
.. important::
- Going into production without first testing may lead to:
- Users failing to adjust to the changes and new features
- Business interruptions (e.g., no longer having the possibility to validate an action)
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
The process of upgrading a production database is similar to upgrading a test database with a few
exceptions.
.. tabs::
.. group-tab:: Odoo Online
The process is similar to :ref:`obtaining an upgraded test database
<upgrade/request-test-database>`, except for the purpose option, which must be set to
:guilabel:`Production` instead of :guilabel:`Test`.
.. warning::
Once the upgrade is requested, the database will be unavailable until the upgrade is
finished. Once the process is completed, it is impossible to revert to the previous
version.
.. group-tab:: Odoo.sh
The process is similar to :ref:`obtaining an upgraded test database
<upgrade/request-test-database>` on the :guilabel:`Production` branch.
.. image:: upgrade/odoo-sh-prod.png
:alt: View from the upgrade tab
The process is **triggered as soon as a new commit is made** on the branch. This
allows the upgrade process to be synchronized with the deployment of the custom modules'
upgraded source code.
If there are no custom modules, the upgrade process is triggered immediately.
.. important::
The database is unavailable throughout the process. If anything goes wrong, the platform
automatically reverts the upgrade, as it would be for a regular update. In case of success,
a backup of the database before the upgrade is created.
The update of your custom modules must be successful to complete the entire upgrade process.
Make sure the status of your staging upgrade is :guilabel:`successful` before trying it in
production.
.. TODOUPG : once the page for developers is published, uncomment
.. More information on how to upgrade your custom modules can be found in the :ref:`upgrading customizations documentation <upgrade/upgrading_customizations>`.
.. group-tab:: On-premise
The command to upgrade a database to production is similar to the one of upgrading a test
database except for the argument `test`, which must be replaced by `production`:
.. code-block:: console
$ python <(curl -s https://upgrade.odoo.com/upgrade) production -d <your db name> -t <target version>
An upgraded production database can also be requested via the `Upgrade page
<https://upgrade.odoo.com/>`_.
Once the database is uploaded, any modification to your production database will **not** be
present on your upgraded database. This is why we recommend not using it during the upgrade
process.
.. important::
When requesting an upgraded database for production purposes, the copy is submitted without
a filestore. Therefore, the upgraded database filestore must be merged with the production
filestore before deploying the new version.
In case of an issue with your production database, you can request the assistance of Odoo via the
`support page <https://odoo.com/help?stage=post_upgrade>`__ by selecting the option related to
the upgrade in production.
.. seealso::
:doc:`maintain/supported_versions`
.. _upgrade/sla:
Service-level agreement (SLA)
=============================
-----------------------------
With Odoo Enterprise, upgrading a database to the most recent version of Odoo is **free**, including
any support required to rectify potential discrepancies in the upgraded database.
@@ -230,7 +377,7 @@ Information about the upgrade services included in the Enterprise Licence is ava
upgrade services you can expect.
Upgrade services covered by the SLA
-----------------------------------
===================================
Databases hosted on Odoo's cloud platforms (Odoo Online and Odoo.sh) or self-hosted (On-Premise) can
benefit from upgrade services at all times for:
@@ -245,7 +392,7 @@ Upgrade services are limited to the technical conversion and adaptation of a dat
modules and data) to make it compatible with the version targeted by the upgrade.
Upgrade services not covered by the SLA
---------------------------------------
=======================================
The following upgrade-related services are **not** included:
@@ -256,9 +403,6 @@ The following upgrade-related services are **not** included:
<studio/automated-actions/action>`; and
- **training** on using the upgraded version's features and workflows.
.. note:: |assistance-contact|
.. seealso::
- :doc:`Upgrade FAQ <upgrade/faq>`
- :doc:`Odoo.sh documentation <odoo_sh>`
- :doc:`Supported Odoo versions <maintain/supported_versions>`

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -1,228 +0,0 @@
.. |assistance-contact| replace::
If you need Odoo assistance on this matter, please get in touch with your Odoo Account Manager or
our `Sales department`_.
.. _Sales department: mailto:sales@odoo.com
===
FAQ
===
.. _upgrade-faq/why:
Why upgrade
===========
* You benefit from the latest features of the :ref:`new major version
<upgrade-faq/release-notes>` released by Odoo.
* If you are in an :ref:`unsupported version <upgrade/supported-versions>`, you get a new version
with support.
.. _upgrade-faq/when:
When to upgrade
===============
Whenever you want. You can make your upgrade request as soon as a new version is released or when
your version turns unsupported, and you still wish to enjoy support.
.. _upgrade-faq/availability:
Availability of the new version
===============================
As soon as Odoo announces the release of a new major version, you can create a test upgrade request
to try the latest version. Please note that at this point, the upgrade scripts will only have been
tested with demo data. Please report any issue you might encounter while testing via the `Odoo
Support page <https://www.odoo.com/help>`_ and make sure to be happy with your test version before
requesting the upgrade of your database in production.
.. _upgrade-faq/duration:
Duration of the upgrade
=======================
It is impossible to give time estimates for every upgrade request.
In general, the "smaller" the database, the quickest the upgrade request is completed. A single-user
database that uses only CRM will be processed faster than a multi-company, multi-user database that
uses Accounting, Sales, Purchase, and Manufacturing.
You can expect the time it takes for the platform to upgrade the test database to be similar to the
production upgrade.
.. _upgrade-faq/project:
Duration of the upgrade project
-------------------------------
It depends on the user involvement (the time spent on testing, reporting problems, etc.) and the
issues encountered that might need to be addressed by our technical team.
So, in a nutshell, what can impact your upgrade lead time?
* Source & targeted versions
* Installed apps
* Volume of data
* Amount of customization (models, fields, methods, workflows, reports, website, etc.)
* Installation of new apps or configuration changes after the start of the test phase
* User commitment
.. _upgrade-faq/custom-modules:
Upgrade of the custom modules
=============================
As stated in our :doc:`/legal/terms/enterprise`, section :ref:`charges_standard`, this optional
service is subject to additional fees.
Depending on your situation, the custom code could be upgraded by our services, by one of our
partners, or you can do it yourself.
.. note:: |assistance-contact|
.. _upgrade-faq/upgrade-or-migration:
Upgrade or Migration
====================
An upgrade is switching to a newer version of Odoo, while a migration reflects the change of
:ref:`editions <upgrade-faq/editions-change>` or change of :ref:`hosting type
<upgrade-faq/hosting-types-switch>`.
.. note:: |assistance-contact|
.. _upgrade-faq/editions-change:
Editions change (from Community to Enterprise)
==============================================
The upgrade always returns an Enterprise edition of Odoo, whether the database you sent was a
community or enterprise edition. It is required to have an enterprise subscription to upgrade.
.. note::
If you need assistance on this matter, please contact us via the `Odoo Support page
<https://www.odoo.com/help>`_.
.. seealso::
- `Editions <https://www.odoo.com/page/editions>`_
.. _upgrade-faq/hosting-types-switch:
Switching the hosting types (On-premise vs. Odoo Online vs. Odoo.sh)
====================================================================
An upgrade does not cover a change of `Hosting types <https://www.odoo.com/page/hosting-types>`_.
Open the following link to get :doc:`more information about how to change your hosting type
<../maintain/hosting_changes>`.
.. note:: |assistance-contact|
.. _upgrade-faq/upgrade-report:
The Upgrade Report
==================
When an upgrade request completes successfully (test or production), you receive an email
notification about it that includes an 'Upgrade Report'. This report is also sent to you via the
Discuss app. It contains valuable information regarding changes that occurred during the upgrade.
While it serves as a guide to possible issues to look out for, it is not an exhaustive list. It
remains imperative that you test the upgraded database thoroughly and report any discrepancies you
might find, before you decide to upgrade your production database.
.. _upgrade-faq/custom-views:
Custom views
============
During the upgrade, some custom views might get disabled for technical reasons. Therefore they might
have to be fixed after the upgrade. The :ref:`Upgrade Report <upgrade-faq/upgrade-report>` that is
generated after the upgrade is available in the Discuss app, and lists all the custom views that
might be impacted by this.
.. _upgrade-faq/release-notes:
Release Notes by version
========================
Open our `Release Note <https://www.odoo.com/page/release-notes>`_ page to get a summary of the new
features and improvements made in each version.
How long is my test available for
=================================
An Odoo Online test database is available for one month by default. We can extend this trial period
upon request. For Odoo.sh or on-premise, there is no restriction.
How many tests to perform before upgrading to production?
=========================================================
As many as needed. When you are comfortable with the database, run a last test upgrade 48 hours
before requesting your production upgrade and test your workflows one last time.
How to/Where to report upgrade issues?
======================================
If you encounter issues during the upgrade process, please contact the Odoo Support through the
`Odoo Support page <https://www.odoo.com/help>`_.
- To report an issue discovered during the testing phase, please select **An issue related to my
upgrade (test phase)**.
- To report an issue discovered post-upgrade, please select **An issue related to my upgrade
(production)**.
Upgrading to production
=======================
Once you have completed testing and are happy with the result, you decide on a date and time when
you stop users from accessing Odoo, freeze all data entries, and create an upgrade request for the
production upgrade.
How is my data handled in the Upgrade Platform?
===============================================
The Odoo Upgrade platform uses the same Privacy Policy as the rest of Odoo.com services.
Your data is hosted on servers that follow our security guidelines, namely:
- SSL - All web connections to client instances are protected with 256-bit SSL encryption
(HTTPS with a 2048-bit modulus SSL certificate), and running behind Grade A SSL stacks. All our
certificate chains are using SHA-2 already.
- Safe System - Our servers are running recent Linux distribution with up-to-date security patches,
with firewall and intrusion countermeasures (not disclosed for obvious reasons).
Servers are located at the same locations as our Cloud providers with the following services:
- Restricted perimeter, physically accessed by authorized data center employees only
- Physical access control with security badges or biometrical security
- Security cameras monitoring the data center locations 24/7
- Security personnel on-site 24/7
The uploaded and migrated databases uploaded to the Upgrade platform are kept for up to 3 months and
are permanently deleted following that period.
You can learn more about privacy and data handling at Odoo by visiting our `General Data Protection
Regulation page <https://www.odoo.com/gdpr>`_.
Rolling Release (applicable to Odoo Online databases)
=====================================================
This feature allows customers to upgrade their database directly from a message prompt sent to the
database administrator as soon as the new version is released. Odoo first tests the upgrade to the
next version. The rolling release upgrade option is displayed if the automated tests are successful.
The message offers two options:
#. To 'Upgrade Now', which immediately triggers the upgrade of your live production database.
#. To take you to your `database manager <https://www.odoo.com/my/databases/>`_ where you can
`request an upgraded test database <https://upgrade.odoo.com/#online/>`_ and check the upgraded
test database for any discrepancies.
When you choose to proceed with the production upgrade directly, make sure all users have saved
their work and are logged out. The upgrade takes approximately 15 minutes. During this time your
database is unreachable. If you notice any problem after the upgrade, please report it via the `Odoo
Support page <https://www.odoo.com/help>`_.
.. note::
If you are using the Website or Studio app, we recommend you always do a test upgrade before
upgrading your production instance.

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,92 +0,0 @@
===========
Odoo Online
===========
Odoo databases can be manually upgraded directly from the main Odoo website. To upgrade an Odoo
database, navigate to the `database manager <https://www.odoo.com/my/databases>`_ page and sign in.
The database manager page displays all of the Odoo databases associated with the user's account. Any
databases that are not already on the most recent version of Odoo display an **arrow in a circle**
icon next to the database name, indicating that the database can be upgraded.
.. image:: odoo_online/databases-page.png
:align: center
:alt: The database manager page with an upgrade button next to the name of a database.
.. important::
- If the database's version is **lower** than the latest major release: the database must be
upgraded within two months. After these two months, an automatic upgrade is initiated.
- If the database's version is **equal** to or **higher** than the latest major release:
you can disregard the invitation to upgrade, as the database probably would not benefit from
new features every two months.
If a database is *not* on the latest online version, its administrator should receive an invitation
to upgrade on the database's dashboard, displayed as an **arrow in a circle**.
.. image:: odoo_online/database-notification.png
:alt: Invitation to upgrade on the database dashboard.
.. note::
Versions that are not supported anymore become deprecated and must be updated to avoid
security issues. It is recommended to initiate the upgrade yourself and not wait for the
automatic upgrade, as the former method allows you to request a test upgrade of the database to
check for any discrepancies.
Test database
=============
Click on the **arrow in a circle** icon to start the upgrade process. On the :guilabel:`Upgrade your
database` pop-up, select the version of Odoo that the platform will be upgraded to. In the
:guilabel:`Email to notify` field, enter an email address that will receive email notifications
about the database upgrade.
There is also a :guilabel:`Purpose` section on the pop-up that is used to specify the reason for the
upgrade. However, at this stage of the process, the only selectable option is :guilabel:`Test`, as
Odoo requires users to create a test copy of the upgraded database before converting the actual
database.
.. image:: odoo_online/upgrade-pop-up.png
:align: center
:alt: The "Upgrade your database" pop-up.
After filling out the form, click the :guilabel:`Upgrade` button. The pop-up disappears and the
database being upgraded shows a red :guilabel:`Upgrade in progress` tag next to its name. An email
confirming that the upgrade is in progress is also sent to the email address specified on the
pop-up.
.. image:: odoo_online/upgrade-in-progress.png
:align: center
:alt: The "Upgrade in progress" tag next to the database name.
Once the upgrade is complete, a new test database appears on the `database manager
<https://www.odoo.com/my/databases>`_ page. To access the test database, click the drop-down arrow
(:guilabel:`⯆`) to the left of the main database's name. Doing so makes the test version appear
below it. Finally, click the green :guilabel:`Connect` button on the right side of the test
version's row to go to the database.
.. image:: odoo_online/test-database.png
:align: center
:alt: A test database on the database manager page.
Except for being on the newer version of Odoo, the test database is an exact copy of the one being
upgraded. It is important to do extensive testing in this database to ensure that the upgrade has
not altered or corrupted any data, and that all workflows still proceed as expected.
Production database
===================
After confirming the integrity of the new version, return to the `database manager
<https://www.odoo.com/my/databases>`_ page. Once again, click on the **arrow in a circle** icon next
to the database being upgraded. The :guilabel:`Upgrade your database` pop-up appears as before,
except that there is now a :guilabel:`Production` option under the :guilabel:`Purpose` section.
Select the :guilabel:`Production` option and then click :guilabel:`Upgrade` to begin the upgrade
process. As before, a notification email is sent to the email address provided and a red
:guilabel:`Upgrade in progress` tag appears next to the name of the database.
The production database is then taken offline and will be upgraded automatically. The time it takes
to upgrade the production database should be similar to the time that was necessary to upgrade the
test database. Make sure to inform database users of the scheduled downtime.
After the upgrade is finished, the :guilabel:`Upgrade in progress` tag disappears and the database
is upgraded to the version specified.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,132 +0,0 @@
=======
Odoo.sh
=======
.. _upgrade/odoo_sh/overview:
Overview
========
Odoo.sh is integrated with the upgrade platform to make the upgrade process easier.
.. note::
The :guilabel:`Upgrade` tab is available in the branches view. It is only available for valid
projects with a valid production build.
.. image:: odoo_sh/odoo-sh-menu.png
:align: center
:alt: Click on the upgrade menu
The suggested upgrade steps on Odoo.sh are:
#. On a :guilabel:`Development` branch, upgrade your custom modules to keep them compatible with the
new version and thoroughly **test them**.
#. Switch that branch to the :guilabel:`Staging` branch, **upgrade** the last daily production
backup and **test it**. Write upgrade scripts if necessary.
#. Trigger the production upgrade from your :guilabel:`Production` branch and sit tight.
.. seealso::
- :doc:`../../administration/upgrade`
- :doc:`Upgrade FAQ <../upgrade/faq>`
- :doc:`Introduction to Odoo.sh <../odoo_sh/overview/introduction>`
.. _upgrade/odoo_sh/custom-modules:
Upgrade your custom modules
===========================
The first step is to upgrade your custom modules to keep them compatible with the new version. Fork
your :guilabel:`Production` branch in the :guilabel:`Development` stage, then go to the settings of
your :guilabel:`Development` branch and select the Odoo version you target. If needed, modify your
code to be compatible with the new version. Make sure to **test** your features are still working
correctly.
.. note::
Depending on your contract, the upgrade of your custom modules can be done by yourself, by your
Partner or by Odoo (if you hold a subscription including maintenance of customizations).
.. _upgrade/odoo_sh/testing-phase:
Upgrade your database on a staging branch
=========================================
Take the upgraded development branch and drag & drop it to :guilabel:`Staging`.
Go to the :guilabel:`Upgrade` tab and select the :guilabel:`target version`. Then, click on
:guilabel:`Test Upgrade`.
.. image:: odoo_sh/odoo-sh-staging.png
:align: center
:alt: Odoo.sh project and tabs
The **latest production daily automatic backup** is sent to the
`upgrade platform <https://www.upgrade.odoo.com>`_ to start the upgrade test process.
.. note::
You can follow the upgrade process by going to the :guilabel:`Upgrade` menu of your
:guilabel:`Production` branch.
When the upgraded backup is ready on the `upgrade platform <https://www.upgrade.odoo.com>`_, it is
automatically downloaded back to your project.
The branch is now in a **special mode**: each time a **commit is pushed** on the branch, a
**restore operation** of the upgraded backup occurs, and an **update of all the custom modules**
happens. This allows you to quickly iterate on your custom modules upgrade scripts. The log file of
the upgrade process can be found at :file:`~/logs/upgrade.log` in your newly upgraded staging build.
.. note::
- The **special upgrade mode** is automatically closed after 30 days.
- It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
upgraded database are set to be updated. If the modules are missing in the code, the update
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
upgrade script are necessary to clean up the database. The complete removal of the module has
to be handled afterwards.
Functionally test your upgraded database
========================================
Now that the test upgraded database is available on your staging branch, **thoroughly test it** and
make sure everything runs as it's supposed to. Once you are satisfied with the result, you are ready
to upgrade your production database.
Production upgrade
==================
Once you are happy with your testing, you can start the process on the :guilabel:`Production`
branch.
On your :guilabel:`Production` branch, go to the :guilabel:`Upgrade` tab, select the
:guilabel:`targeted version` and click on the :guilabel:`start Upgrade` button.
.. image:: odoo_sh/odoo-sh-prod.png
:align: center
:alt: View from the upgrade tab
The actual process is **triggered as soon as you push a new commit** in your branch. Make sure you
are pushing code that is compatible with the new version. For example by merging the code from your
upgraded staging branch.
.. note::
You can see the progress of the upgrade by going to the :guilabel:`Upgrade` tab of the main
branch.
.. image:: odoo_sh/odoo-sh-progress.png
:align: center
:alt: View showing the progress of the upgrade
.. important::
Your database is unavailable throughout the process.
.. note::
If anything goes wrong, the platform automatically reverts the upgrade, the same as it would be
for a regular update. In case of success, a backup is always made.
The update of your custom modules must be successful to complete the entire upgrade process. Make
sure the status of your staging upgrade is :guilabel:`successful` before trying it in production.
.. note::
It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
upgraded database are set to be updated. If the modules are missing in the code, the update
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
upgrade script are necessary to clean up the database. The complete removal of the module has to
be handled afterwards.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -1,76 +0,0 @@
==========
On-Premise
==========
Test upgrade request
====================
There are two ways to create your upgrade request.
Upgrade request via command line
--------------------------------
For technically-advanced users and partners, the upgrade process can be initiated via the following
command line on the server where the database is hosted:
:command:`python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t
<target version>`
The above command creates the database dump, sends it to the upgrade platform, and initiates the
automated upgrade process. During the upgrade, you can follow the live logs on your screen.
Once the upgrade process is completed successfully, the upgraded database is restored onto the
server (as a duplicate test database).
Upgrade request via the Odoo Upgrade Portal
-------------------------------------------
#. Download a recent copy of your database and select the option :guilabel:`pg_dump custom format
(without filestore)`.
#. Upload this dump file at https://upgrade.odoo.com and select *Testing* as the aim.
Odoo performs the automated upgrade process. Once it is completed, you receive an email with a
link to download the upgrade database dump file.
#. Import the upgraded database into your on-premise environment and manually test all processes and
workflows.
.. note::
- For security reasons, only the person who submitted the upgrade request is able to download it.
- Any problem found during testing should be reported via the `helpdesk
<https://odoo.com/help>`_.
- For storage reasons, the copy of your database is submitted without a filestore to the upgrade
server. Therefore, the upgraded database does not contain the production filestore.
- Before restoring the upgraded database, its filestore must be merged with the production
filestore to be able to perform tests in the same conditions as it would be in the new version.
- The upgraded database contains:
- A `dump.sql` file containing the upgraded database.
- A `filestore` folder containing files that were extracted from in-database records into
attachments (if there are any) and new standard Odoo files from the targeted Odoo version
(like new images, icons, payment provider's logos, etc.). This is the folder that should be
merged with the production filestore in order to get the full upgraded filestore.
Upgrade your production database
================================
Once you have completed the testing successfully, you can proceed to upgrade your live database in
production. Download your upgraded database from the link in the email and import it onto your live
environment.
.. important::
- Same as in the test phase, when requesting an upgrade for production purposes, the copy of your
database is submitted without a filestore.
- Therefore, the upgraded database filestore must be merged with the production filestore before
deploying the new version.
Custom modules (if applicable)
==============================
The upgrade of a database that contains custom modules is a two-step process.
#. The standard upgrade is done when your upgrade request is completed.
#. Your custom modules also need to be upgraded to keep them compatible with the new version.
Depending on your contract, the upgrade of your custom modules can be done
#. by yourself.
#. by your Partner.
#. by Odoo (if you hold a subscription to 'Maintenance of Customizations').

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -69,13 +69,13 @@ Transactions can be matched automatically with the use of :doc:`reconciliation m
:ref:`matching existing entries <reconciliation/existing-entries>`, :ref:`manual operations
<reconciliation/manual-operations>`, :ref:`batch payments <reconciliation/batch-payments>`, and
:ref:`reconciliation model buttons <reconciliation_models_button>`.
#. If the resulting entry isn't fully balanced, balance it by adding another existing counterpart
#. If the resulting entry is not fully balanced, balance it by adding another existing counterpart
entry or writing it off with a :ref:`manual operation <reconciliation/manual-operations>`.
#. Click the :guilabel:`Validate` button to confirm the reconciliation and move to the next
transaction.
.. tip::
If you aren't sure how to reconcile a particular transaction and would like to deal with it
If you are not sure how to reconcile a particular transaction and would like to deal with it
later, use the :guilabel:`To Check` button instead. All transactions marked as :guilabel:`To
Check` can be displayed using the :guilabel:`To Check` filter.
@@ -112,7 +112,7 @@ has a search bar that allows you to search for specific batch payments.
Manual operations
-----------------
If there isn't an existing entry to match the selected transaction, you may instead wish to
If there is not an existing entry to match the selected transaction, you may instead wish to
reconcile the transaction manually by choosing the correct account and amount. Then, complete any
of the relevant optional fields.
@@ -123,6 +123,10 @@ of the relevant optional fields.
account by clicking on the new line in the resulting entry section and selecting the
:guilabel:`Account` to record the open balance.
.. note::
Lines are silently reconciled unless a write-off entry is required, which launches a
reconciliation wizard.
.. image:: reconciliation/fully-paid.png
:alt: Click on fully paid to manually set an invoice as entirely paid.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -1,167 +1,440 @@
=================================
Inventory average price valuation
=================================
===============================
Average price on returned goods
===============================
As stated in the :doc:`inventory valuation page
</applications/inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`,
one of the possible costing method you can use in perpetual stock
valuation, is the average cost.
.. |AVCO| replace:: :abbr:`AVCO (Average Cost Valuation)`
This document answers to one recurrent question for companies using that
method to make their stock valuation: how does a shipping returned to
its supplier impact the average cost and the accounting entries? This
document is **only** for the specific use case of a perpetual valuation (as
opposed to the periodic one) and in average price costing method (as
opposed to standard of FIFO).
.. _inventory/avg_cost/definition:
Definition of average cost
==========================
*Average cost valuation* (AVCO) is an inventory valuation method that evaluates cost based on the
total cost of goods bought or produced during a period, divided by the total number of items
on-hand. Inventory valuation is used to:
The average cost method calculates the cost of ending inventory and cost
of goods sold on the basis of weighted average cost per unit of
inventory.
- reflect the value of a company's assets;
- keep track of the amount of unsold goods;
- account for monetary value in goods that have yet to generate profit;
- report on flow of goods throughout the quarter.
The weighted average cost per unit is calculated using the following
formula:
Because |AVCO| uses the weighted average to evaluate the cost, it is a good fit for companies that
sell only a few different products in large quantities. In Odoo, this costing analysis is
*automatically updated* each time products are received.
- When new products arrive in a warehouse, the new average cost is
recomputed as:
Thus, when shipments are returned to their supplier, Odoo automatically generates accounting entries
to reflect the change in inventory valuation. However, Odoo does **not** automatically update the
|AVCO| calculation, because :ref:`this can potentially create inconsistencies with inventory
valuation <inventory/avg_price/leaving_inventory>`.
.. image:: avg_price_valuation/avg01.png
.. note::
This document addresses a specific use case for theoretical purposes. Navigate :ref:`here
<inventory/management/inventory_valuation_config>` for instructions on how to set up and use
|AVCO| in Odoo.
.. seealso::
- :ref:`Using inventory valuation <inventory/reporting/using_inventory_val>`
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
Configuration
=============
To use average cost inventory valuation on a product, navigate to :menuselection:`Inventory -->
Configuration --> Product Categories` and select the category that will be using |AVCO|. On the
product category page, set :guilabel:`Costing Method` to `Average Cost (AVCO)` and
:guilabel:`Inventory Valuation` to `Automated`.
.. seealso::
:ref:`Inventory valuation configuration <inventory/management/inventory_valuation_config>`
Using average cost valuation
============================
The average cost method adjusts the inventory valuation when products are received in the warehouse.
This section explains how it works, but if the explanation is unnecessary, skip to the :ref:`return
to supplier use case <inventory/avg_cost/return>` section.
.. _inventory/avg_cost/formula:
Formula
-------
When new products arrive, the new average cost for each product is recomputed using the formula:
.. math::
Avg~Cost = \frac{(Old~Qty \times Old~Avg~Cost) + (Incoming~Qty \times Purchase~Price)}{Final~Qty}
- **Old Qty**: product count in stock before receiving the new shipment;
- **Old Avg Cost**: calculated average cost for a single product from the previous inventory
valuation;
- **Incoming Qty**: count of products arriving in the new shipment;
- **Purchase Price**: estimated price of products at the reception of products (since vendor bills
may arrive later). The amount includes not only the price for the products, but also added costs,
such as shipping, taxes, and :ref:`landed costs <inventory/reporting/landed_costs>`. At reception
of the vendor bill, this price is adjusted;
- **Final Qty**: quantity of on-hand stock after the stock move.
.. _inventory/avg_cost/definite_rule:
.. important::
When products leave the warehouse, the average cost **does not** change. Read about why the
average cost valuation is **not** adjusted :ref:`here <inventory/avg_price/leaving_inventory>`.
.. _inventory/avg_cost/math_table:
Compute average cost
--------------------
To understand how the average cost of a product changes with each shipment, consider the following
table of warehouse operations and stock moves. Each is a different example of how the average cost
valuation is affected.
+--------------------------------+---------------+-------------------+---------------+------------+
| Operation | Incoming Value| Inventory Value | Qty On Hand | Avg Cost |
+================================+===============+===================+===============+============+
| | | $0 | 0 | $0 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Receive 8 tables at $10/unit | 8 * $10 | $80 | 8 | $10 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Receive 4 tables at $16/unit | 4 * $16 | $144 | 12 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Deliver 10 tables | -10 * $12 | $24 | 2 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
.. _inventory/avg_cost/ex-1:
.. exercise::
Ensure comprehension of the above computations by reviewing the "Receive 8 tables at $10/unit"
example.
Initially, the product stock is 0, so all values are $0.
In the first warehouse operation, `8` tables are received at `$10` each. The average cost is
calculated using the :ref:`formula <inventory/avg_cost/formula>`:
.. math::
Avg~Cost = \frac{0 + 8 \times $10}{8} = \frac{$80}{8} = $10
- Since the *incoming quantity* of tables is `8` and the *purchase price* for each is `$10`,
- The inventory value in the numerator is evaluated to `$80`;
- `$80` is divided by the total amount of tables to store, `8`;
- `$10` is the average cost of a single table from the first shipment.
To verify this in Odoo, in the *Purchase* app, order `8` quantities of a new product, `Table`,
with no previous stock moves, for `$10` each.
In the table's :guilabel:`Product Category` field in the :guilabel:`General Information` tab of
the product form, click the :guilabel:`➡️ (arrow)` icon, to open an :guilabel:`External Link` to
edit the product category. Set the :guilabel:`Costing Method` to `Average Cost (AVCO)` and
:guilabel:`Inventory Valuation` to `Automated`.
Then, return to the purchase order. Click :guilabel:`Confirm Order`, and click :guilabel:`Receive
Products` to confirm receipt.
Next, check the inventory valuation record generated by the product reception by navigating to
:menuselection:`Inventory --> Reporting --> Inventory Valuation`. Select the drop-down for
`Table`, and view the :guilabel:`Total Value` column for the *valuation layer* (:dfn:`inventory
valuation at a specific point in time = on-hand quantity * unit price`). The 8 tables in-stock
are worth $80.
.. image:: avg_price_valuation/inventory-val-8-tables.png
:align: center
:alt: Show inventory valuation of 8 tables in Odoo.
.. tip::
When the product category's :guilabel:`Costing Method` is set to :guilabel:`AVCO`, then the
average cost of a product is also displayed on the :guilabel:`Cost` field, under the
:guilabel:`General Information` tab, on the product page itself.
Product delivery (use case)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
For outgoing shipments, :ref:`outbound products have no effect on the average cost valuation
<inventory/avg_cost/definite_rule>`. Although the average cost valuation is not recalculated, the
inventory value still decreases because the product is removed from stock and delivered to the
customer location.
.. exercise::
To demonstrate that the average cost valuation is not recalculated, examine the "Deliver 10
tables" example.
.. math::
Avg~Cost = \frac{12 \times $12 + (-10) \times $12}{12-10} = \frac{24}{2} = $12
#. Because 10 tables are being sent out to customers, the *incoming quantity* is `-10`. The
previous average cost (`$12`) is used in lieu of a vendor's *purchase price*;
#. The *incoming inventory value* is `-10 * $12 = -$120`;
#. The old *inventory value* (`$144`) is added to the *incoming inventory value* (`-$120`), so
`$144 + -$120 = $24`;
#. Only `2` tables remain after shipping out `10` tables from `12`. So the current *inventory
value* (`$24`) is divided by the on-hand quantity (`2`);
#. `$24 / 2 = $12`, which is the same average cost as the previous operation.
To verify this in Odoo, sell `10` tables in the *Sales* app, validate the delivery, and then
review the inventory valuation record by going to in :menuselection:`Inventory --> Reporting -->
Inventory Valuation`. In the topmost valuation layer, delivering `10` tables reduces the
product's value by `-$120`.
**Note**: What is not represented in this stock valuation record is the revenue made from this
sale, so this decrease is not a loss to the company.
.. image:: avg_price_valuation/inventory-val-send-10-tables.png
:align: center
:alt: Show how deliveries decrease inventory valuation.
.. _inventory/avg_cost/return:
Return items to supplier (use case)
===================================
Because the price paid to suppliers can differ from the price the product is valued at with the
|AVCO| method, Odoo handles returned items in a specific way.
#. Products are returned to suppliers at the original purchase price, but;
#. The internal cost valuation remains unchanged.
The above :ref:`example table <inventory/avg_cost/math_table>` is updated as follows:
+--------------------------------+---------------+-------------------+---------------+------------+
| Operation | Qty*Avg Cost | Inventory Value | Qty On Hand | Avg Cost |
+================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Return 1 table bought at $10 | -1 * $12 | $12 | 1 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
In other words, returns to vendors are perceived by Odoo as another form of a product exiting the
warehouse. To Odoo, because the table is valued at $12 per unit, the inventory value is reduced by
`$12` when the product is returned; the initial purchase price of `$10` is unrelated to the table's
average cost.
.. example::
To return a single table that was purchased for `$10`, navigate to the receipt in the *Inventory*
app for the :ref:`8 tables purchased in Exercise 1 <inventory/avg_cost/ex-1>` by going to the
:guilabel:`Inventory Overview`, clicking on :guilabel:`Receipts`, and selecting the desired
receipt.
Then, click :guilabel:`Return` on the validated delivery order, and modify the quantity to `1` in
the reverse transfer window. This creates an outgoing shipment for the table. Select
:guilabel:`Validate` to confirm the outgoing shipment.
Return to :menuselection:`Inventory --> Reporting --> Inventory Valuation` to see how the
outgoing shipment decreases the inventory value by $12.
.. image:: avg_price_valuation/inventory-valuation-return.png
:align: center
:alt: Inventory valuation for return.
.. _inventory/avg_price/leaving_inventory:
Eliminate stock valuation errors in outgoing products
-----------------------------------------------------
Inconsistencies can occur in a company's inventory when the average cost valuation is recalculated
on outgoing shipments.
To demonstrate this error, the table below displays a scenario in which 1 table is shipped to a
customer and another is returned to a supplier at the purchased price.
+------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Qty*Price | Inventory Value | Qty On Hand | Avg Cost |
+==========================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+------------------------------------------+---------------+-------------------+---------------+------------+
| Ship 1 product to customer | -1 \* $12 | $12 | 1 | $12 |
+------------------------------------------+---------------+-------------------+---------------+------------+
| Return 1 product initially bought at $10 | -1 \* $10 | **$2** | **0** | $12 |
+------------------------------------------+---------------+-------------------+---------------+------------+
In the final operation above, the final inventory valuation for the table is `$2` even though there
are `0` tables left in stock.
.. admonition:: Correct method
Use the average cost to value the return. This does not mean the company gets $12 back for a $10
purchase; the item returned for $10 is valued internally at $12. The inventory value change
represents a product worth $12 no longer being accounted for in company assets.
Anglo-Saxon accounting
======================
In addition to using |AVCO|, companies that use **Anglo-Saxon accounting** also keep a holding
account that tracks the amount to be paid to vendors. Once a vendor delivers an order, **inventory
value** increases based on the vendor price of the products that have entered the stock. The holding
account (called **stock input**) is credited and only reconciled once the vendor bill is received.
.. seealso::
- :ref:`Anglo-Saxon vs. Continental <inventory/inventory_valuation_config/accounting>`
The table below reflects journal entries and accounts. The *stock input* account stores the money
intended to pay vendors when the vendor bill has not yet been received. To balance accounts when
returning products that have a price difference between the price the product is **valued at** and
the price it was bought for, a *price difference* account is created.
.. _inventory/avg_price/price-table:
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Operation | Stock Input | Price Diff | Inventory Value | Qty On Hand | Avg Cost |
+=========================================+===============+==============+===================+===============+============+
| | | | $0 | 0 | $0 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 8 tables at $10 | ($80) | | $80 | 8 | $10 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $80 | $0 | | $80 | 8 | $10 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 4 tables at $16 | ($64) | | $144 | 12 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $64 | $0 | | $144 | 12 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Deliver 10 tables to customer | $0 | | $24 | 2 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Return 1 table initially bought at $10 | **$10** | **$2** | **$12** | 1 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor refund $10 | $0 | $2 | $12 | 1 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
Product reception
-----------------
Summary
~~~~~~~
At product reception, Odoo ensures companies can pay for goods that were purchased by preemptively
moving an amount matching the price of received goods into the :doc:`liability account
</applications/finance/accounting/get_started/cheat_sheet>`, **Stock Input**. Then, once the bill
has been received, the amount in the holding account is transferred to *Accounts Payable*. Transfers
into this account means the bill has been paid. **Stock Input** is reconciled once the vendor bill
is received.
Inventory valuation is a method of calculating how much each in-stock product is worth internally.
Since there is a difference between the price the product is **valuated at** and the price the
product was actually **purchased for**, the **Inventory Valuation** account is unrelated to the
crediting and debiting operations of the **Stock Input** account.
To conceptualize all this, follow the breakdown below.
Accounts balanced at received products
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In this example, a company starts with zero units of a product, `table`, in stock. Then, 8 tables
are received from the vendor:
#. The **Stock Input** account stores `$80` of credit owed to the vendor. The amount in this account
is unrelated to the inventory value.
#. `$80` worth of tables came **in** (**debit** the *Inventory Value* account `$80`), and
#. `$80` must be paid **out** for received goods (**credit** the *Stock Input* account `$80`).
In Odoo
*******
Odoo generates an accounting journal entry when shipments that use |AVCO| costing method are
received. Configure a :guilabel:`Price Difference Account` by selecting the :guilabel:`➡️ (arrow)`
icon next to the :guilabel:`Product Category` field on the product page.
Under :guilabel:`Account Properties`, create a new :guilabel:`Price Difference Account` by typing in
the name of the account and clicking :guilabel:`Create and Edit`. Then set the account
:guilabel:`Type` as `Expenses`, and click :guilabel:`Save`.
.. image:: avg_price_valuation/create-price-difference.png
:align: center
:alt: Create price difference account.
- When products leave the warehouse: the average cost **does not** change
Then, receive the shipment in the *Purchase* app or *Inventory* app, and navigate to the
:menuselection:`Accounting app --> Accounting --> Journal Entries`. In the list, find the
:guilabel:`Reference` that matches the warehouse reception operation for the relevant product.
Defining the purchase price
---------------------------
.. image:: avg_price_valuation/search-for-entry-of-tables.png
:align: center
:alt: Show accounting entry of 8 tables from the list.
The purchase price is estimated at the reception of the products (you
might not have received the vendor bill yet) and reevaluated at the
reception of the vendor bill. The purchase price includes the cost you
pay for the products, but it may also includes additional costs, like
landed costs.
Click on the line for 8 tables. This accounting journal entry shows that when the 8 tables were
received, the `Stock Valuation` account increased by `$80`. Conversely, the **Stock Input** account
(set as `Stock Interim (Received)` account by default) is credited `$80`.
Average cost example
====================
.. image:: avg_price_valuation/accounting-entry-8-tables.png
:align: center
:alt: Debit stock valuation and credit stock input 80 dollars.
+-----------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+=============================+===============+===================+===============+============+
| | | $0 | 0 | $0 |
+-----------------------------+---------------+-------------------+---------------+------------+
| Receive 8 Products at $10 | +8\*$10 | $80 | 8 | $10 |
+-----------------------------+---------------+-------------------+---------------+------------+
| Receive 4 Products at $16 | +4\*$16 | $144 | 12 | $12 |
+-----------------------------+---------------+-------------------+---------------+------------+
| Deliver 10 Products | -10\*$12 | $24 | 2 | $12 |
+-----------------------------+---------------+-------------------+---------------+------------+
+-----------------------------+---------------+-------------------+---------------+------------+
Accounts balanced at received vendor bill
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At the beginning, the Avg Cost is set to 0 set as there is no product in
the inventory. When the first reception is made, the average cost
becomes logically the purchase price.
In this example, a company starts with zero units of a product, table, in stock. Then, 8 tables are
received from the vendor. When the bill is received from vendor for 8 tables:
At the second reception, the average cost is updated because the total
inventory value is now ``$80 + 4*$16 = $144``. As we have 12 units on
hand, the average price per unit is ``$144 / 12 = $12``.
#. Use `$80` in the **Stock Input** account to pay the bill. This cancels out and the account now
holds `$0`.
#. Debit **Stock Input** `$80` (to reconcile this account).
#. Credit **Accounts payable** `$80`. This account stores the amount the company owes others, so
accountants use the amount to write checks to vendors.
By definition, the delivery of 10 products does not change the average
cost. Indeed, the inventory value is now $24 as we have only 2 units
remaining of each ``$24 / 2 = $12``.
In Odoo
*******
Purchase return use case
========================
Once the vendor requests payment, navigate to the :menuselection:`Purchase app --> Orders -->
Purchase` and select the :abbr:`PO (Purchase Order)` for 8 tables. Inside the :abbr:`PO (Purchase
Order)`, select :guilabel:`Create Bill`.
In case of a product returned to its supplier after reception, the
inventory value is reduced using the average cost formulae (not at the
initial price of these products!).
Switch to the :guilabel:`Journal Items` tab to view how `$80` is transferred from the holding
account, `Stock Interim (Received)` to `Accounts Payable`. :guilabel:`Confirm` the bill to record
the payment to the vendor.
Which means that the above table will be updated as follow:
.. image:: avg_price_valuation/receive-8-table-bill.png
:align: center
:alt: Show bill linked to the purchase order for 8 tables.
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | -1\*$12 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
On product delivery
-------------------
Explanation: counter example
----------------------------
In the :ref:`above example table <inventory/avg_price/price-table>`, when 10 products are delivered
to a customer, the **Stock Input** account is untouched because there are no new products coming in.
To put it simply:
Remember the definition of **Average Cost**, saying that we do not update
the average cost of a product leaving the inventory. If you break this
rule, you may lead to inconsistencies in your inventory.
#. **Inventory valuation** is credited `$120`. Subtracting from inventory valuation represents
`$120` worth of products exiting the company.
#. Debit **Accounts Receivable** to record revenue from the sale.
As an example, here is the scenario when you deliver one piece to the
customer and return the other one to your supplier (at the cost you
purchased it). Here is the operation:
.. image:: avg_price_valuation/sell-10-tables.png
:align: center
:alt: Show journal items linked to sale order.
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Customer Shipping 1 product | -1\*$12 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | -1\*$10 | **$2** | **0** | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
.. spoiler:: Understand Anglo-Saxon expensing
As you can see in this example, this is not correct: an inventory
valuation of $2 for 0 pieces in the warehouse.
In the accounting journal entry invoicing a customer for 10 tables, the accounts **Product
Sales**, **Tax Received**, and **Accounts Receivable** all pertain to the sale of the product.
**Accounts Receivable** is the account where the customer payment will be received.
The correct scenario should be to return the goods at the current
average cost:
Anglo-Saxon accounting recognizes the cost of goods sold (COGS) once the sale is made. So, up
until the product is sold, scrapped, or returned, costs of keeping the product in stock are not
accounted for. The **Expense** account is debited `$120` to log the costs of storing 10 tables
during this period of time.
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Customer Shipping 1 product | -1\*$12 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | -1\*$12 | **$0** | **0** | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
On product return
-----------------
On the other hand, using the average cost to value the return ensure a
correct inventory value at all times.
In the :ref:`above example table <inventory/avg_price/price-table>`, when returning 1 product to a
vendor purchased at `$10`, a company expects `$10` in the **Accounts Payable** account from the
vendor. However, **Stock Input** account must be debited `$12` because the average cost is `$12` at
the time of the return. The missing `$2` is accounted for in the :guilabel:`Price Difference
Account`, which is set up in the product's :guilabel:`Product Category`.
Further thoughts on anglo saxon mode
------------------------------------
.. note::
Behavior of *price difference accounts* varies from localization. In this case, the account is
intended to store differences between vendor price and *automated* inventory valuation methods.
For people in using the **anglo saxon accounting** principles, there is
another concept to take into account: the stock input account of the
product, which is intended to hold at any time the value of vendor bills
to receive. So the stock input account will increase on reception of
incoming shipments and will decrease when receiving the related vendor
bills.
Summary:
Back to our example, we see that when the return is valued at the
average price, the amount booked in the stock input account is the
original purchase price:
#. Debit **Stock Input** account `$10` to move the table from stock to stock input. This move is to
indicate that the table is to be processed for an outgoing shipment.
#. Debit **Stock Input** an additional `$2` to account for the **Price Difference**.
#. Credit **Stock Valuation** `$12` because the item is leaving the stock.
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Operation | stock input | price diff | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+==============+===================+===============+============+
| | | | $0 | 0 | $0 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 8 Products at $10 | ($80) | | $80 | 8 | $10 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $80 | $0 | | $80 | 8 | $10 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 4 Products at $16 | ($64) | | $144 | 12 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $64 | $0 | | $144 | 12 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Deliver 10 Products | $0 | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | **$10** | **$2** | **$12** | 1 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor refund $10 | $0 | $2 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
.. image:: avg_price_valuation/expensing-price-difference-account.png
:align: center
:alt: 2 dollar difference expensed in Price Difference account.
This is because the vendor refund will be made using the original
purchase price, so to zero out the effect of the return in the stock
input in last operation, we need to reuse the original price. The price
difference account located on the product category is used to book the
difference between the average cost and the original purchase price.
Once the vendor's refund is received,
#. Credit **Stock Input** account `$10` to reconcile the price of the table.
#. Debit **Accounts Payable** `$10` to have the accountants collect and register the payment in
their journal.
.. image:: avg_price_valuation/return-credit-note.png
:align: center
:alt: Return to get 10 dollars back.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -220,6 +220,42 @@ To match the letter `C` or `D` in a prefix and not use it as a suffix, use an em
| `21D\\()`
| This formula matches accounts whose code starts with `21D`, regardless of their balance sign.
In addition to using code prefixes to include accounts, you can also match them with **account
tags**. This is especially useful, for example, if your country lacks a standardized chart of
accounts, where the same prefix might be used for different purposes across companies.
.. example::
| `tag(25)`
| This formula matches accounts whose associated tags contain the one with id *25*.
If the tag you reference is defined in a data file, an xmlid can be used instead of the id.
.. example::
| `tag(my_module.my_tag)`
| This formula matches accounts whose associated tags include the tag denoted by
*my_module.my_tag*.
You can also use arithmetic expressions with tags, possibly combining them with prefix selections.
.. example::
| `tag(my_module.my_tag) + tag(42) + 10`
| The balances of accounts tagged as *my_module.my_tag* will be summed with those of accounts
linked to the tag with ID *42* and accounts with the code prefix `10`
`C` and `D` suffixes can be used in the same way with tags.
.. example::
| `tag(my_module.my_tag)C`
| This formula matches accounts with the tag *my_module.my_tag* and a credit balance.
Prefix exclusion also works with tags.
.. example::
| `tag(my_module.my_tag)\\(10)`
| This formula matches accounts with the tag *my_module.my_tag* and a code not starting with
`10`.
'External Value' engine
-----------------------

View File

@@ -23,12 +23,12 @@ Odoo API key
------------
You can create Odoo external API keys either :ref:`for a single database <silverfin/api-singledb>`
(hosting: Odoo Online, On-premise, and Odoo.sh) or :ref:`for multiple databases managed by a user
(hosting: Odoo Online, On-premise, and Odoo.sh) or :ref:`for all databases managed by a single user
<silverfin/api-multipledb>` (hosting: Odoo Online).
.. important::
- These API keys are personal and provide full access to your user account. Store it securely.
- You can copy the API key only at its creation, and you cannot retrieve it later.
- You can copy the API key only at its creation. It is not possible to retrieve it later.
- If you need it again, create a new API key (and delete the old one).
.. seealso::
@@ -36,15 +36,15 @@ You can create Odoo external API keys either :ref:`for a single database <silver
.. _silverfin/api-singledb:
One key per database
~~~~~~~~~~~~~~~~~~~~
Per database
~~~~~~~~~~~~
To create a new API key valid for a single database, click on the user menu, then on
:guilabel:`My Profile`. Under the :guilabel:`Account Security` tab, click on :guilabel:`New API
key`, confirm your password, give a descriptive name to your new key, and copy the new API key.
To add an API key to a **single** database, connect to the database, enable the :ref:`developer
mode <developer-mode>`, click on the user menu, and then :guilabel:`My Profile` /
:guilabel:`Preferences`. Under the :guilabel:`Account Security` tab, click on :guilabel:`New API
Key`, confirm your password, give a descriptive name to your new key, and copy the API key.
.. image:: silverfin/api-key-db.png
:align: center
:alt: creation of an Odoo external API key for a database
.. seealso::
@@ -52,15 +52,18 @@ key`, confirm your password, give a descriptive name to your new key, and copy t
.. _silverfin/api-multipledb:
One key for multiple databases (fiduciaries)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For all databases (fiduciaries)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To create a new API key valid for all the databases of a single user **(the easiest for
fiduciaries)**, navigate to `Odoo's website <https://www.odoo.com>`_ and sign in with your
administrator account. Next, open `your account security settings in developer mode
To add an API key to **all** databases managed by a single user at the same time **(the easiest
method for fiduciaries)**, navigate to `Odoo's website <https://www.odoo.com>`_ and sign in with
your administrator account. Next, open `your account security settings in developer mode
<https://www.odoo.com/my/security?debug=1>`_, click on :guilabel:`New API Key`, confirm your
password, give a descriptive name to your new key, and copy the new API key.
.. tip::
Open the `database manager <https://www.odoo.com/my/databases>`_ to view all databases that will
be linked to the single API key.
.. image:: silverfin/api-key-user.png
:align: center
:alt: creation of an Odoo external API key for an Odoo user

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Some files were not shown because too many files have changed in this diff Show More