Compare commits

..

49 Commits

Author SHA1 Message Date
Felicious
c9314b7cd4 [ADD] inventory: cluster picking
X-original-commit: 32900efbb9
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: meng-odoo <101904966+meng-odoo@users.noreply.github.com>
2023-11-23 04:17:13 +01:00
Samuel Degueldre
16e10c53db [IMP] developer: document how to create standalone owl apps
Since we've introduced Owl, developers want more and more to create
standalone Owl applications outside of the webclient. This commit
introduces a How-to for doing just that.

task-3580007

closes odoo/documentation#6553

X-original-commit: 1fc36ffa82
Related: odoo/odoo#143073
Signed-off-by: Samuel Degueldre (sad) <sad@odoo.com>
2023-11-22 15:52:49 +00:00
Jonathan Castillo (jcs)
4219829976 [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.

closes odoo/documentation#6554

X-original-commit: 386a3a9e10
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-11-22 10:24:17 +00:00
Donatienne (dopi)
c2190a438c [IMP] website: use plausible.io servers and account
This addition explains how to create and connect an existing plausible.io account in Odoo.

task-3540753

closes odoo/documentation#6546

X-original-commit: cd11937f43
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-11-22 07:58:21 +00:00
John Holton (hojo)
5b44376e52 [ADD] Quality: Pass - Fail quality checks
closes odoo/documentation#6552

X-original-commit: 1a11e3c35c
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-22 03:49:07 +00:00
Rémy Voet (ryv)
7067cf372a [FIX] performance: change example with the new _read_group
closes odoo/documentation#6540

X-original-commit: 01625aa661
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2023-11-21 19:58:05 +00:00
Jess Rogers (jero)
ebbd736540 [REM] crm: google spreadsheet integration
closes odoo/documentation#6538

X-original-commit: a11fa7e5b2
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2023-11-21 18:44:18 +00:00
Xavier (XPL)
4fe046b9d0 [FIX] payroll: add missing show-content metadata
Without the :show-content: metadata markup, it is not possible to open the
page by navigating from the toctree.

closes odoo/documentation#6535

X-original-commit: 16e339a7a3
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-21 18:44:12 +00:00
Mathieu (mano)
07c50eae7a [IMP] odoo_theme: toctrees-l1,l2 design improvement
Issue 1:
========
The toctrees in the documentation are visually inconsistent because of
the content. Sometimes we have titles that are also links and visually
collides with the rest of the toc making it hard to read. This applies
to toctree-l1 and toctree-l2.

Fix 1:
========
When we have a link and title toctree-l2 in a list containing other
nested toc, we apply another styling displaying it with the same color
as a title, but with an icon and hover behavior indicating that it is a
link. (This commit also changes the direction of the i-link icon to make
it standard).

Issue 2:
========
When we have only have toctree-l1 links without nested toc the toctree
is uselessly taking a lot of space.

Fix: 2
========

In these scenario we add a class to the toctree wrapper to replace the
toctree-l1 style with a toctree-l2.

task-3138525
task-3138563

part of

task-3059178

closes odoo/documentation#6512

X-original-commit: c62bf21987
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-21 12:58:53 +00:00
Rémi Rahir (rar)
671cca36a6 [FIX] dev/reference: Fix external reference
The tour utils were red and moved in Odoo (odoo/odoo#107618).

closes odoo/documentation#6521

X-original-commit: 9be2b43adb
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
2023-11-21 09:36:04 +00:00
Felicious
246450c957 [IMP] barcode: split docs + hone in on language
closes odoo/documentation#6520

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:16:42 +00:00
oco-odoo
cc37e41de0 [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#6509

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

closes odoo/documentation#6490

X-original-commit: 5689f7cf22
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-17 17:58:55 +00:00
tiku-odoo
03c9226547 [IMP] Productivity: Outlook Plugin edits
closes odoo/documentation#6484

X-original-commit: 71aabb2618
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2023-11-16 05:19:10 +00:00
Felicious
d87112ddef [IMP] inventory: expand on accounting and math
closes odoo/documentation#6483

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-16 05:19:09 +00:00
John Holton (hojo)
6605ec1988 [ADD] MRP: One-step manufacturing
closes odoo/documentation#6470

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 05:19:07 +00:00
Rémy Voet (ryv)
d105f614af [IMP] orm: update changelog
closes odoo/documentation#6465

X-original-commit: f1960a250c
Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2023-11-15 12:35:34 +00:00
Yaroslav Soroko (yaso)
10f936247a [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#6440

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 17:07:14 +00:00
John Holton (hojo)
6a198ad1ce [ADD] Quality: Instructions quality check
closes odoo/documentation#6454

X-original-commit: f0b895fdb2
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-14 02:36:02 +00:00
Felicious
7dc0dc37d2 [IMP] inventory: fwport removal strategy
closes odoo/documentation#6450

X-original-commit: ba34f754ce
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-14 02:36:01 +00:00
Sam Lieber (sali)
09e0b8affc [IMP] tests: make review UX and resource files
closes odoo/documentation#6434

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-14 02:35:55 +00:00
John Holton (hojo)
f3a6cc6779 [ADD] MRP: Two-step manufacturing
closes odoo/documentation#6402

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

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

X-original-commit: a113d83fea
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-11 03:32:55 +00:00
Loredana Perazzo
6da7dcccea [IMP] pos: add warning to not buy a terminal from amazon
closes odoo/documentation#6391

Taskid: 3284737
X-original-commit: f0495a9bc9
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-09 12:53:09 +00:00
Sam Lieber (sali)
48679b52e9 [FW][ADD] MRP: Shop Floor Overview
closes odoo/documentation#6381

X-original-commit: 17885d893e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <hojo@odoo.com>
2023-11-09 04:38:41 +00:00
John Holton (hojo)
f85a667236 [ADD] MRP: Work order dependencies
closes odoo/documentation#6380

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

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 01:54:18 +00:00
John Holton (hojo)
4b1b3db6f2 [ADD] Inventory: Add Scrap inventory
closes odoo/documentation#6375

X-original-commit: 0e6576cc3d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-09 00:35:02 +00:00
Martin Trigaux
db2ee387a9 [I18N] *: export 17.0 translations
closes odoo/documentation#6361

X-original-commit: f13d8b52fc
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-11-08 12:17:46 +00:00
tiku-odoo
f7cb830798 [ADD] IoT: OPC-UA Protocol
closes odoo/documentation#6351

X-original-commit: 4d2a3101ad
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-08 10:00:45 +00:00
KC (ksc)
86bd83705d [IMP] sales: minor adjustment to dynamic text portion of PDF builder
closes odoo/documentation#6349

X-original-commit: 03cf50013a
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-08 10:00:44 +00:00
John Holton (hojo)
b4eaf1c223 [ADD] MRP: Add Split and merge manufacturing orders
closes odoo/documentation#6341

X-original-commit: 83873dbd71
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-08 10:00:43 +00:00
Louis Baudoux
5ec7aff3c5 [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#6328

X-original-commit: df474342ba
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Louis Baudoux (lba) <lba@odoo.com>
2023-11-07 18:17:37 +00:00
Louis Baudoux
49ad6221a8 [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#6328
2023-11-07 18:17:37 +00:00
Nathan Marotte (nama)
32441c88fc [IMP] upgrade: overhaul upgrade doc
closes odoo/documentation#6321

X-original-commit: 41aebc3b05
Signed-off-by: Nathan Marotte (nama) <nama@odoo.com>
2023-11-07 17:10:24 +00:00
Antoine Vandevenne (anv)
89539f7379 [IMP] supported_versions: release 17.0
closes odoo/documentation#6314

X-original-commit: 2c805d9813
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-07 17:10:19 +00:00
Felicious
4d88c4ec20 [ADD] PLM: ECO approvals doc
closes odoo/documentation#6304

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 15:50:37 +00:00
Audric Onockx (auon)
66b08cd4fd [IMP] developer: add "widget" attr to cohort field tag
Related PR: https://github.com/odoo/enterprise/pull/46693

task-3475463

closes odoo/documentation#6284

Related: odoo/enterprise#46693
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-07 13:03:52 +00:00
KC (ksc)
4e6983c135 [ADD] sales: adding pdf quote builder doc for 16/17
closes odoo/documentation#6295

Author:    KC (ksc) <ksc@odoo.com>
Date:      Thu Oct 5 11:29:37 2023 -0700
X-original-commit: 4fdfda7ddb
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 13:03:21 +00:00
Felicious
f53aca7b32 [ADD] PLM: version control
closes odoo/documentation#6294

Author:    Felicious <feku@odoo.com>
X-original-commit: 6a5c340a26
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-04 11:57:54 +00:00
Louis Baudoux
cdc510295c [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#6283

X-original-commit: a8c6272899
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Louis Baudoux (lba) <lba@odoo.com>
2023-11-03 16:55:58 +00:00
Jess Rogers (jero)
86207443b1 [IMP] live chat: update ratings doc
closes odoo/documentation#6264

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-03 16:55:47 +00:00
Sam Lieber (sali)
d25eecbe13 [IMP] l10n: Chile new features
closes odoo/documentation#6257

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-03 15:12:14 +00:00
Felicious
dd6bf8b6c7 [ADD] PLM: engineering change order
closes odoo/documentation#6273

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 21:33:18 +00:00
Rémy Voet (ryv)
d53c676288 [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#6246

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 08:06:49 +00:00
Martin Trigaux
dbb82d83e2 [IMP] *: export translations
closes odoo/documentation#6249

X-original-commit: bb4210cdbd
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-10-30 08:53:41 +00:00
Tom Aarab (toaa)
a8ef31f215 [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#6234

X-original-commit: a31bcec3ba
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-10-27 13:42:50 +00:00
Tom Aarab (toaa)
a3e1378919 [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#6231

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 13:42:49 +00:00
40 changed files with 167 additions and 500 deletions

View File

@@ -26,7 +26,7 @@ SOURCE_DIR = content
HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/17.0
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
endif
ifneq ($(CURRENT_LANG),en)
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)

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 = '17.0'
version = release = 'master'
# `current_branch` is the technical name of the current branch.
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).

View File

@@ -210,8 +210,6 @@ upgrade goes live.
#. 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.
#. Bank synchronization is disabled. Should you want to test the synchronization, contact your
bank synchronization provider to get sandbox credentials.
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.

View File

@@ -96,12 +96,6 @@ gains and losses after reconciling the journal items.
.. seealso::
:doc:`Manage a bank in a foreign currency <accounting/bank/foreign_currency>`
Branch management
=================
Multiple branches can be managed thanks to multi-company hierarchies. This allows to post journal
entries on each branch as well as setting up a common lock date managed by the main company.
International standards
=======================

View File

@@ -72,6 +72,33 @@ You can define a specific e-invoicing format for each customer. To do so, go to
.. image:: electronic_invoicing/customer-form.png
:alt: Select an EDI format for a specific customer
Peppol formats
--------------
Use the fields :guilabel:`Peppol e-address (EAS)` and :guilabel:`Peppol Endpoint` to identify the
recipient in the Peppol Network.
.. seealso::
`Peppol BIS Billing 3.0 - Electronic Address Scheme (EAS) code list
<https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/>`_
.. example::
.. list-table::
:header-rows: 1
* - Partner's country
- Peppol e-address (EAS)
- Peppol Endpoint
* - Luxembourg
- 9938 - Luxemburg VAT number
- a valid Luxemburgish VAT number
* - Netherlands
- 0190 - Dutch Originator's Identification Number
- a valid OIN number
* - Belgium
- 9925 - Belgium VAT number
- a valid Belgian VAT number
National electronic invoicing
-----------------------------
@@ -94,45 +121,3 @@ e-invoicing option to generate and attach the e-invoice file.
.. image:: electronic_invoicing/send-window.png
:alt: The Peppol option is checked and an e-invoicing XML file is attached to the email.
Peppol
======
The `Peppol <https://peppol.org/about/>`_ network ensures the exchange of documents and information
between enterprises and governmental authorities. It is primarily used for electronic invoicing, and
its access points (connectors to the Peppol network) allow enterprises to exchange electronic
documents.
Odoo is now an **access point** enabling electronic invoicing transactions without the need to send
invoices and bills by email or post.
Configuration
-------------
First, :ref:`install <general/install>` the :guilabel:`Peppol` module (`account_peppol`).
.. image:: electronic_invoicing/peppol-module.png
:alt: Peppol module install
Then, go to :menuselection:`Accounting --> Configuration --> Settings`, tick the
:guilabel:`Use PEPPOL Invoicing`, and fill in the following information:
- `PEPPOL EAS <https://ec.europa.eu/digital-building-blocks/wikis/display/DIGITAL/Code+lists/>`_
- :guilabel:`Peppol Endpoint`
- :guilabel:`Phone Number`, including the country code (e.g., `+32` in Belgium)
- :guilabel:`Primary contact email`
If you are migrating from another access point, insert the :guilabel:`Migration key` from
the previous provider.
.. image:: electronic_invoicing/peppol-settings.png
:alt: Configuration for peppol
Finally, click on :guilabel:`Validate registration`.
A text message containing a code is sent to the phone number provided to finalize the registration
process.
.. image:: electronic_invoicing/phone-registration.png
:alt: phone validation
All invoices and vendor bills are now sent directly using the Peppol network.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -187,8 +187,7 @@ Send yourself a sample invoice by email to make sure everything is correctly con
* :doc:`get_started/chart_of_accounts`
* :doc:`bank/bank_synchronization`
* :doc:`../fiscal_localizations`
* `Odoo Tutorials: Accounting and Invoicing - Getting started [video]
<https://www.odoo.com/slides/slide/getting-started-1692>`_
* `Odoo Tutorials: Accounting Basics <https://www.odoo.com/r/lsZ>`_
.. toctree::
:titlesonly:

View File

@@ -5,11 +5,6 @@ PayPal
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide, and
one of the few that does not charge a subscription fee.
.. note::
While PayPal is available in `over 200 countries/regions
<https://www.paypal.com/webapps/mpp/country-worldwide>`_, only `a selection of currencies are
supported <https://developer.paypal.com/docs/reports/reference/paypal-supported-currencies>`_.
Settings in PayPal
==================

View File

@@ -2,8 +2,8 @@
Reporting
=========
You can find several reports under the :guilabel:`Reporting` menu of most apps that let you analyze
and visualize the data of your records.
You can find under the :guilabel:`Reporting` menu of most apps several reports that let you analyze
and visualize your records' data.
.. _reporting/views:
@@ -25,6 +25,7 @@ but can be found elsewhere. Click the **graph view button** located at the top r
it.
.. image:: reporting/graph-button.png
:align: center
:alt: Selecting the graph view
.. _reporting/views/pivot:
@@ -37,6 +38,7 @@ down for analysis. The view is often found under the :guilabel:`Reporting` menu
found elsewhere. Click the **pivot view button** located at the top right to access it.
.. image:: reporting/pivot-button.png
:align: center
:alt: Selecting the pivot view
.. _reporting/choosing-measures:
@@ -63,6 +65,7 @@ grouped by *Date > Month*, which is used to analyze the evolution of a measure o
When you filter a single time period, the option to compare it against another one appears.
.. image:: reporting/comparison.png
:align: center
:alt: Using the comparison option
.. example::
@@ -76,6 +79,7 @@ grouped by *Date > Month*, which is used to analyze the evolution of a measure o
selected.
.. image:: reporting/measures.png
:align: center
:alt: Selecting different measures on the Sales Analysis report
.. tab:: Group measures
@@ -84,6 +88,7 @@ grouped by *Date > Month*, which is used to analyze the evolution of a measure o
previous Sales Analysis report example.
.. image:: reporting/single-group.png
:align: center
:alt: Adding a group on the Sales Analysis report
.. _reporting/using-pivot:
@@ -106,6 +111,7 @@ subgroups.
group on the :guilabel:`All / Saleable / Office Furniture` product category.
.. image:: reporting/multiple-groups.png
:align: center
:alt: Adding multiple groups on the Sales Analysis report
.. tip::
@@ -118,7 +124,7 @@ subgroups.
Using the graph view
====================
Three graphs are available: the bar, line, and pie charts.
Three graphs are available, the bar, line, and pie charts.
**Bar charts** are used to show the distribution or a comparison of several categories. They are
especially useful as they can deal with larger data sets.
@@ -133,16 +139,19 @@ when they form a meaningful whole.
.. tab:: Bar chart
.. image:: reporting/bar.png
:align: center
:alt: Viewing the Sales Analysis report as a bar chart
.. tab:: Line chart
.. image:: reporting/line.png
:align: center
:alt: Viewing the Sales Analysis report as a line chart
.. tab:: Pie chart
.. image:: reporting/pie.png
:align: center
:alt: Viewing the Sales Analysis report as a pie chart
.. tip::
@@ -154,21 +163,25 @@ when they form a meaningful whole.
.. tab:: Stacked bar chart
.. image:: reporting/stacked-bar.png
:align: center
:alt: Stacked bar chart example
.. tab:: Regular bar chart
.. image:: reporting/non-stacked-bar.png
:align: center
:alt: Non-stacked bar chart example
.. tab:: Stacked line chart
.. image:: reporting/stacked-line.png
:align: center
:alt: Stacked line chart example
.. tab:: Regular line chart
.. image:: reporting/non-stacked-line.png
:align: center
:alt: Non-stacked line chart example
For **line** charts, you can use the cumulative option to sum values, which is especially useful
@@ -179,9 +192,11 @@ when they form a meaningful whole.
.. tab:: Cumulative line chart
.. image:: reporting/cumulative.png
:align: center
:alt: Cumulative line chart example
.. tab:: Regular line chart
.. image:: reporting/non-cumulative.png
:align: center
:alt: Regular line chart example

View File

@@ -2,8 +2,6 @@
How to invoice the shipping cost to the customer?
=================================================
.. _inventory/shipping/invoice:
Overview
========

View File

@@ -1,213 +1,100 @@
================
Delivery methods
================
===============================
How to setup a delivery method?
===============================
When activated in Odoo, the *Delivery Methods* setting adds the option of calculating the cost of
shipping on sales orders and e-commerce shopping carts.
Overview
========
When integrated with a :ref:`third-party carrier <inventory/shipping/third_party>`, shipping prices
are calculated based on the carrier's pricing and packaging information.
Odoo can handle various delivery methods, but it is not activated by
default. Delivery methods can be used for your sale orders, your
deliveries but also on your e-commerce.
.. seealso::
- :ref:`Third-party shipping carrier setup <inventory/shipping/third_party>`
- `Odoo Tutorials: Delivery Prices
<https://www.odoo.com/slides/slide/delivery-prices-613?fullscreen=1>`_
Delivery methods allow you to manage the transport company, the price
and the destination. You can even integrate Odoo with external shippers
to compute the real price and the packagings.
Configuration
=============
To calculate shipping on sales orders and e-commerce, the *Delivery Costs* module must be installed.
To do so, navigate to the :menuselection:`Apps` application from the main Odoo dashboard.
Install the inventory module
----------------------------
Then, remove the :guilabel:`Apps` filter, and type in `Delivery Costs` in the :guilabel:`Search...`
bar. After finding the :guilabel:`Delivery Costs` module, click :guilabel:`Activate` to install it.
Delivery methods are handled by the **Delivery costs** module. Go to
**Apps** and search for the module. You should remove the **Apps** filter in
order to see it :
.. image:: delivery_method/install-module.png
.. image:: delivery_method/setup05.png
:align: center
:alt: Install the *Delivery Costs* module.
Add shipping method
===================
To configure delivery methods, go to :menuselection:`Inventory app --> Configuration --> Shipping
Methods`.
.. note::
If the :guilabel:`Shipping Methods` option is not available from the :guilabel:`Configuration`
drop-down menu, verify whether the feature is enabled by following these steps:
If you want to integrate delivery methods in your e-commerce,
you'll have to install the **eCommerce Delivery** module.
#. Go to :menuselection:`Inventory app --> Configuration --> Settings`.
#. Scroll to the :guilabel:`Shipping` section and enable the :guilabel:`Delivery Methods` feature
by checking the corresponding checkbox.
Configure the delivery method
-----------------------------
.. image:: delivery_method/enable-delivery.png
:align: center
:alt: Enable the *Delivery Methods* feature by checking the box in Configuration > Settings.
To configure your delivery methods, go to the **Inventory** module,
click on :menuselection:`Configuration --> Delivery Methods`.
On the :guilabel:`Shipping Methods` page, add a method by clicking :guilabel:`New`. Doing so opens
a form to provide details about the shipping provider, including:
First set a name and a transporter company.
- :guilabel:`Shipping Method` (*Required field*): the name of the delivery method (e.g. `flat-rate
shipping`, `same day delivery`, etc.).
- :guilabel:`Provider` (*Required field*): choose the delivery service, like Fedex, if using a
:ref:`third-party carrier <inventory/shipping/third_party>`. Ensure the integration with the
shipping carrier is properly installed and select the provider from the drop-down menu.
.. image:: delivery_method/setup03.png
:align: center
For more details on configuring custom shipping methods, such as :ref:`fixed price
<inventory/shipping/fixed>`, :ref:`based on rules <inventory/shipping/rules>`, or :ref:`pickup in
store <inventory/shipping/pickup>` options, refer to their respective sections below.
- :guilabel:`Website`: configure shipping methods for an e-commerce page. Select the applicable
website from the drop-down menu, or leave it blank to apply the method to all web pages.
- :guilabel:`Company`: if the shipping method should apply to a specific company, select it from the
drop-down menu. Leave the field blank to apply the method to all companies.
- :guilabel:`Delivery Product` (*Required field*): the product listed on the :ref:`sales order line
<inventory/shipping/sales-order>` as the delivery charge.
- :guilabel:`Free if order amount is above`: checking this box enables free shipping if the customer
spends above the specified amount.
Then you'll have to set the pricing. It can be fixed or based on rules.
For examples on how to configure specific shipping methods, refer to the sections below.
- If the price is fixed, tick **Fixed price**. You'll just have to define
the price. If you want the delivery to be free above a certain
amount, tick the option **Free if Order total is more
than** and set a price.
.. _inventory/shipping/fixed:
.. image:: delivery_method/setup06.png
:align: center
Fixed price
-----------
- If the price varies according to rules, tick **Based on Rules**. Click
on **add an item to a pricing rule**. Choose a condition based on
either the weight, the volume, the price or the quantity.
To configure a shipping price that is the same for all orders, go to :menuselection:`Inventory app
--> Configuration --> Shipping Methods`. Then, click :guilabel:`New`, and on the shipping method
form, set the :guilabel:`Provider` to the :guilabel:`Fixed Price` option. Selecting this option
makes the :guilabel:`Fixed Price` field become available, which is where the fixed rate shipping
amount is defined.
.. image:: delivery_method/setup04.png
:align: center
To enable free shipping if the amount of the order exceeds a specified amount, check the box
:guilabel:`Free if order amount is above` and fill in the amount.
Finally you can limit the delivery method to a few destinations. The
limit can be applied to some countries, states or even zip codes. This
feature limits the list of countries on your e-commerce.
.. example::
To set up `$20` flat-rate shipping that becomes free if the customer spends over `$100`, fill in
the following fields:
.. image:: delivery_method/setup02.png
:align: center
- :guilabel:`Shipping Method`: `Flat-rate shipping`
- :guilabel:`Provider`: :guilabel:`Fixed Price`
- :guilabel:`Fixed Price`: `$20.00`
- :guilabel:`Free if order amount is above`: `$100.00`
- :guilabel:`Delivery Product`: `[SHIP] Flat`
.. note::
You can integrate Odoo with external shippers in order to compute the
real price and packagings, and handle the printing the shipping labels.
See :doc:`third_party_shipper`
.. image:: delivery_method/new-shipping-method.png
:align: center
:alt: Example of filling out a shipping method.
Delivery process
================
.. _inventory/shipping/rules:
Sale order
----------
Based on rules
--------------
.. image:: delivery_method/setup07.png
:align: center
To calculate the price of shipping based on pricing rules, set the :guilabel:`Provider` field to the
:guilabel:`Based on Rules` option. Optionally, adjust :guilabel:`Margin on Rate` and
:guilabel:`Additional margin` to include additional shipping costs.
You can now choose the **Delivery Method** on your sale order. If you want
to invoice the price of the delivery charge on the sale order, click on
**Set price**, it will add a line with the name of the delivery method as
a product.
Create pricing rules
~~~~~~~~~~~~~~~~~~~~
Delivery
--------
Navigate to the :guilabel:`Pricing` tab and click :guilabel:`Add a line`. Doing so opens the
:guilabel:`Create Pricing Rules` window, where the :guilabel:`Condition` related to the product
weight, volume, price, or quantity is compared to a defined amount to calculate the
:guilabel:`Delivery Cost`.
You can add or change the delivery method on the delivery itself.
Once finished, click either :guilabel:`Save & New` to add another rule, or :guilabel:`Save & Close`.
.. image:: delivery_method/setup01.png
:align: center
.. example::
To charge customers $20 in shipping for orders with five or fewer products, set the
:guilabel:`Condition` to `Quantity <= 5.00`, and the :guilabel:`Delivery Cost` to `$20`.
.. image:: delivery_method/pricing-rule.png
:align: center
:alt: Display window to add a pricing rule. Set a condition and delivery cost.
To restrict shipping to specific destinations on the eCommerce website, in the shipping method form,
navigate to the :guilabel:`Destination Availability` tab and define the :guilabel:`Countries`,
:guilabel:`States`, and :guilabel:`Zip Prefixes`. Leave these fields empty if all locations apply.
Calculate delivery cost
~~~~~~~~~~~~~~~~~~~~~~~
Shipping cost is the :guilabel:`Delivery cost` specified in the rule that satisfies the
:guilabel:`Condition`, plus any extra charges from the :guilabel:`Margin on rate` and
:guilabel:`Additional margin`.
.. math::
Total = Rule's~Delivery~Cost + (Margin~on~rate \times Rule's~Delivery~Cost) + Additional~margin
.. example::
With the two following rules set up:
#. If the order contains five or fewer products, shipping is $20
#. If the order contains more than five products, shipping is $50.
:guilabel:`Margin on Rate` is `10%` and :guilabel:`Additional margin` is `$9.00`.
.. image:: delivery_method/delivery-cost-example.png
:align: center
:alt: Show example of "Based on rules" shipping method with margins configured.
When the first rule is applied, the delivery cost is $31 (20 + (0.1 * 20) + 9). When the second
rule is applied, the delivery cost is $64 (50 + (0.1 * 50) + 9).
.. _inventory/shipping/pickup:
Pickup in store
---------------
To configure in-store pickup, select :guilabel:`Pickup in store` in the :guilabel:`Provider` field
and specify the pickup location in :guilabel:`Warehouse`.
To invoice the customer for the shipping cost to the pickup location, choose the :guilabel:`Get Rate
and Create Shipment` option in the :guilabel:`Integration Level` field. Then, pick either the
:guilabel:`Estimated cost` or :guilabel:`Real cost` radio options in the :guilabel:`Invoicing
Policy` field to decide whether the added shipping charge on the sales order is the precise cost
from the shipping carrier.
On the delivery, check the **Carrier Information**. The carrier is the
chosen delivery method.
.. seealso::
:ref:`Invoice cost of shipping <inventory/shipping/invoice>`
.. _inventory/shipping/sales-order:
Add shipping
============
Shipping methods can be added to sales orders in the form of delivery products, which appear as
individual line items. First, navigate to the desired sales order by going to :menuselection:`Sales
app --> Orders --> Orders`.
On the sales order, click the :guilabel:`Add shipping` button, which opens the :guilabel:`Add a
shipping method` pop-up window. Then, choose a :guilabel:`Shipping Method` from the list.
The :guilabel:`Total Order Weight` is pre-filled based on product weights (that are defined in the
:guilabel:`Inventory` tab for each product form). Edit the field to specify the exact weight, and
then click :guilabel:`Add` to add the shipping method.
.. note::
The amount defined in :guilabel:`Total Order Weight` overwrites the total product weights defined
on the product form.
The shipping cost is added to the *sales order line* as the :guilabel:`Delivery Product` detailed on
the shipping method form.
.. example::
`Furniture Delivery`, a delivery product with a fixed rate of `$200`, is added to sales order
`S00088`.
.. image:: delivery_method/delivery-product.png
:align: center
:alt: Show delivery order on the sales order line.
Delivery order
--------------
The shipping method added to the sales order is linked to the shipping carrier details on the
delivery order. To add or change the delivery method on the delivery itself, go to the
:guilabel:`Additional Info` tab and modify the :guilabel:`Carrier` field.
.. image:: delivery_method/delivery-order.png
:align: center
:alt: Shipping carrier information on the delivery form.
* :doc:`third_party_shipper`
* :doc:`../operation/invoicing`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -2,8 +2,6 @@
How to integrate a third party shipper?
=======================================
.. _inventory/shipping/third_party:
Overview
========

View File

@@ -9,4 +9,3 @@ Quality check types
quality_check_types/instructions_check
quality_check_types/pass_fail_check
quality_check_types/measure_check

View File

@@ -1,194 +0,0 @@
=====================
Measure quality check
=====================
.. |QCP| replace:: :abbr:`QCP (Quality Control Point)`
.. |QCPs| replace:: :abbr:`QCPs (Quality Control Points)`
In Odoo *Quality*, a *Measure* check is one of the quality check types that can be selected when
creating a new quality check or quality control point (QCP). *Measure* checks prompt users to
measure a certain aspect of a product and record the measurement in Odoo. For the quality check to
pass, the recorded measurement must be within a certain *tolerance* of a *norm* value.
Create a Measure quality check
==============================
There are two distinct ways that *Measure* quality checks can be created. A single check can be
manually created. Alternatively, a |QCP| can be configured that automatically creates checks at a
predetermined interval.
This documentation only details the configuration options that are unique to *Measure* quality
checks and |QCPs|. For a full overview of all the configuration options available when creating a
single check or a |QCP|, see the documentation on :ref:`quality checks
<quality/quality_management/quality-checks>` and :ref:`quality control points
<quality/quality_management/quality-control-points>`.
Quality check
-------------
To create a single *Measure* quality check, navigate to :menuselection:`Quality --> Quality Control
--> Quality Checks`, and click :guilabel:`New`. Fill out the new quality check form as follows:
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Measure` quality check type.
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
check.
- In the :guilabel:`Instructions` text field of the :guilabel:`Notes` tab, enter instructions for
how the picture should be taken.
.. image:: measure_check/measure-check-form-1.png
:align: center
:alt: A quality check form configured for a Measure quality check.
Quality control point (QCP)
---------------------------
To create a |QCP| that generates *Measure* quality checks automatically, navigate to
:menuselection:`Quality --> Quality Control --> Control Points`, and click :guilabel:`New`. Fill out
the new |QCP| form as follows:
- In the :guilabel:`Type` drop-down field, select the :guilabel:`Measure` quality check type. Doing
so causes two new fields to appear: :guilabel:`Norm` and :guilabel:`Tolerance`.
- Use the first text-entry field of the :guilabel:`Norm` field to record the ideal measurement
that the product should conform to. Use the second text-entry field to specify the unit of
measurement that should be used.
- The :guilabel:`Tolerance` field features two sub-fields: :guilabel:`from` and :guilabel:`to`.
Use the :guilabel:`from` field to specify the minimum acceptable measurement, and the
:guilabel:`to` field to specify the maximum acceptable measurement.
- In the :guilabel:`Team` drop-down field, select the quality team responsible for managing the
checks created by the |QCP|.
- In the :guilabel:`Instructions` text field, enter instructions for how the measurement should be
taken.
.. image:: measure_check/measure-check-qcp-form.png
:align: center
:alt: A QCP form configured to create Measure quality checks.
Process a Measure quality check
===============================
Once created, there are multiple ways that *Measure* quality checks can be processed. If a quality
check is assigned to a specific inventory, manufacturing, or work order, the check can be processed
on the order itself. Alternatively, a check can be processed from the check's page.
From the check's page
---------------------
To process a *Measure* quality check from the check's page, begin by navigating to
:menuselection:`Quality --> Quality Control --> Quality Checks`, and select a quality check. Follow
the :guilabel:`Instructions` for how to take the measurement.
After taking the measurement, record the value in the :guilabel:`Measure` field on the quality check
form. To manually pass or fail the check, click :guilabel:`Pass` or :guilabel:`Fail` at the top-left
corner of the check.
Alternatively, if the quality check is assigned to a |QCP| for which *norm* and *tolerance* values
have been specified, click :guilabel:`Measure` at the top-left corner of the check instead. Doing so
automatically marks the check as *Passed* if the recorded value is within the specified *tolerance*,
or *Failed* if the value is outside of it.
On an order
-----------
To process a *Measure* quality check on an order, select a manufacturing order or inventory order
(receipt, delivery, return, etc.), for which a check is required. Manufacturing orders can be
selected by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing Orders`,
and clicking on an order. Inventory orders can be selected by navigating to
:menuselection:`Inventory`, clicking the :guilabel:`# To Process` button on an operation card, and
selecting an order.
On the selected manufacturing or inventory order, a purple :guilabel:`Quality Checks` button appears
at the top of the page. Click the button to open the :guilabel:`Quality Check` pop-up window, which
shows all of the quality checks required for that order.
To process a *Measure* quality check, measure the product as instructed, then enter the value in the
:guilabel:`Measure` field on the pop-up window. Finally, click :guilabel:`Validate` to register the
recorded value.
.. image:: measure_check/measure-check-pop-up.png
:align: center
:alt: A Measure quality check pop-up window on a manufacturing or inventory order.
If the value entered is within the range specified in the :guilabel:`Tolerance` section of the
|QCP|, the quality check passes and the pop-up window closes. The rest of the manufacturing or
inventory order can then be processed as usual.
However, if the value entered is outside of the specified range, a new pop-up window appears, titled
:guilabel:`Quality Check Failed`. The body of the pop-up shows a warning message that states,
:guilabel:`You measured # units and it should be between # units and # units.`, as well as the
instructions entered in the :guilabel:`Message If Failure` tab of the |QCP|. At the bottom of the
pop-up, two buttons appear: :guilabel:`Correct Measure` and :guilabel:`Confirm Measure`.
.. image:: measure_check/measure-check-failed.png
:align: center
:alt: The "Quality Check Failed" pop-up window.
If the measurement was not entered correctly and should be changed, select :guilabel:`Correct
Measure`. Doing so re-opens the :guilabel:`Quality Check` pop-up window. Enter the corrected
measurement in the :guilabel:`Measure` field, and then click :guilabel:`Validate` to complete the
check.
If the measurement was entered correctly, click :guilabel:`Confirm Measure` instead, and the quality
check fails. Follow any instructions that were listed on the :guilabel:`Quality Check Failed` pop-up
window.
If a quality alert must be created, click the :guilabel:`Quality Alert` button that appears at the
top of the manufacturing or inventory order after the check fails. Clicking :guilabel:`Quality
Alert` opens a quality alert form on a new page.
For a complete guide on how to fill out the quality alert form, view the documentation on
:ref:`quality alerts <quality/quality_management/quality-alerts>`.
On a work order
---------------
When configuring a |QCP| that is triggered during manufacturing, a specific work order can also be
specified in the :guilabel:`Work Order Operation` field on the |QCP| form. If a work order is
specified, a *Measure* quality check is created for that specific work order, rather than the
manufacturing order as a whole.
*Measure* quality checks created for work orders must be processed from the tablet view. To do so,
begin by navigating to :menuselection:`Manufacturing --> Operations --> Manufacturing Orders`.
Select a manufacturing order that includes a work order for which a quality check is required. Open
the tablet view for that work order by selecting the :guilabel:`Work Orders` tab, and then clicking
the :guilabel:`📱 (tablet)` button on the order's line.
With tablet view open, complete the steps listed on the left side of the screen until the *Measure*
quality check step is reached. Upon reaching the check, the instructions for how to take the
measurement appear at the top of the screen. Enter the measured value in the :guilabel:`Measure`
field above the instructions, and then click :guilabel:`Validate`.
.. image:: measure_check/measure-tablet-view.png
:align: center
:alt: A Measure quality check in the Manufacturing tablet view.
If the measurement entered is within the range specified in the :guilabel:`Tolerance` section of the
|QCP|, the quality check passes and the tablet view moves on to the next step of the work order.
However, if the measurement entered is outside of the specified range, a pop-up window appears,
titled :guilabel:`Quality Check Failed`.
The body of the :guilabel:`Quality Check Failed` pop-up window shows a warning message that states,
:guilabel:`You measured # units and it should be between # units and # units.`, as well as the
instructions entered in the :guilabel:`Message If Failure` tab of the |QCP|. At the bottom of the
pop-up, two buttons appear: :guilabel:`Correct Measure` and :guilabel:`Confirm Measure`.
.. image:: measure_check/measure-check-failed.png
:align: center
:alt: The "Quality Check Failed" pop-up window.
If the measurement was not entered correctly, and should be changed, select :guilabel:`Correct
Measure`. Doing so opens a new pop-up window, titled :guilabel:`Quality Check`. Enter the corrected
measurement in the :guilabel:`Measure` field, then click :guilabel:`Validate` to complete the check,
and move on to the next step of the work order.
If the measurement was entered correctly, click :guilabel:`Confirm Measure` instead, and the quality
check fails. Follow any instructions that were listed on the :guilabel:`Quality Check Failed` pop-up
window.
If a quality alert must be created, do so by clicking the :guilabel:`☰ (three horizontal lines)`
button, and selecting :guilabel:`Quality Alert` from the :guilabel:`Menu` pop-up window. A
:guilabel:`Quality Alerts` pop-up window appears, from which a quality alert can be created.
For a complete guide on how to fill out the quality alert form, view the documentation on
:ref:`quality alerts <quality/quality_management/quality-alerts>`.

View File

@@ -103,6 +103,13 @@ Sync with Outlook
unarchived, or event date/time changed), with no exceptions. This is a limitation that cannot be
fixed from Odoo's side.
After one user syncs their Outlook calendar to the Odoo database, unwanted email notifications
are unavoidable because the first synchronized user's events will be in the Odoo Calendar. If
the Odoo database is shared amongst multiple users, and another user wants to sync their Outlook
calendar with Odoo Calendar, Outlook will again pull the existing Odoo Calendar events during
the sync and treat them as new events, causing Outlook to send email invitations to all event
attendees.
In summary, once a user synchronizes their Outlook calendar with the Odoo calendar:
- Creating an event in Odoo causes Outlook to send an invitation to all event attendees.

View File

@@ -2,8 +2,6 @@
Connect a measurement tool
==========================
.. _iot/devices/measurement-tool:
With Odoo's :abbr:`IoT (Internet of Things)` box, it is possible to connect measurement tools to the
Odoo database for use in the *Quality app* on a quality control point/quality check, or for use in a
work center during the manufacturing process.

View File

@@ -7,50 +7,54 @@ encourages customers to act quickly during sales negotiations, for they might fe
on a good deal. As well, deadlines also can also act as protection for a company in case an order
has to be fulfilled at a price that is no longer profitable for the business.
Quotation expiration
====================
Expiration date deadlines
=========================
In Odoo *Sales*, there's the option to add an expiration date to a quotation.
On an Odoo *Sales* quotation, add an expiration date in the :guilabel:`Expiration` field located at
the top of the quotation or sales order form.
To add an expiration date to a quotation, navigate to :menuselection:`Sales app`, and select a
desired quotation, or create a new one by clicking :guilabel:`New`.
desired quotation, or create a new one by clicking :guilabel:`Create`.
On the quotation form, click the :guilabel:`Expiration` field to reveal a pop-up calendar. From this
pop-up calendar, select the desired month and date as the expiration date for the quotation.
On the quotation form, click :guilabel:`Edit` (if modifying a pre-existing quotation), and click the
:guilabel:`Expiration` field. Doing so reveals a drop-down calendar, in which the month and date can
be designated as the expiration date of the quotation.
.. image:: deadline/quotation-deadlines-expiration-field.png
:align: center
:alt: The expiration field on a standard quotation form in Odoo Sales.
:alt: How to configure deadlines on Odoo Sales.
Once the expiration date is selected, click :guilabel:`Save` to save all changes.
Deadlines in quotation templates
================================
The Odoo *Sales* application also makes it possible to add a deadline to every quotation template.
Whenever a specific quotation template is used in a quote, its associated deadline is automatically
applied.
To add a deadline to a quotation template, navigate to :menuselection:`Sales app --> Configuration
--> Quotation Templates`, and either select the desired quotation template to which a deadline
should be added, or click :guilabel:`Create` to build a new quotation template from scratch.
On the quotation template detail page, click the :guilabel:`Edit` button to edit the quotation.
Then, add a specific number of days to the :guilabel:`Quotation expires after` field, located
beneath the quotation template name. The number of days represents how long the quotation will be
valid for, before it expires. When done, click :guilabel:`Save`.
.. image:: deadline/quotation-deadlines-expires-after.png
:align: center
:alt: How to use deadline in a quotation template on Odoo Sales.
.. tip::
By clicking the :guilabel:`Preview` button on a quotation, Odoo clearly displays when that
specific offer expires.
By clicking the :guilabel:`Customer Preview` button on a quotation, Odoo clearly displays when
that specific offer expires. As a reminder, the number of days is the same as those mentioned in
the quotation template (if a quotation template was used for the initial quotation).
.. image:: deadline/quotation-deadlines-preview.png
:align: center
:alt: How customers will see deadlines on Odoo Sales.
Quotation template expiration
=============================
The Odoo *Sales* application also makes it possible to add a deadline expiration date to quotation
templates.
To add a deadline expiration date to a quotation template, navigate to :menuselection:`Sales app -->
Configuration --> Quotation Templates`, and either select the desired quotation template to which a
deadline should be added, or click :guilabel:`New` to build a new quotation template from scratch.
On the quotation template form, add a specific number of days to the :guilabel:`Quotation expires
after` field, located beneath the quotation template name. The number of days represents how long
the quotation will be valid for, before it expires.
.. image:: deadline/quotation-deadlines-expires-after.png
:align: center
:alt: The quotation expires after field on a quotation template form in Odoo Sales.
Then, whenever that specific quotation template is used in a quote, an expiration date is
automatically calculated, based on the number of days designated above. However, this date can be
overwritten before sending the quotation to the customer.
.. seealso::
:doc:`/applications/sales/sales/send_quotations/quote_template`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -726,13 +726,6 @@ joins) or for performance reasons::
Please make sure your queries are sanitized when using user input and prefer using
ORM utilities if you don't really need to use SQL queries.
The recommended way to build SQL queries is to use the wrapper object
.. autoclass:: odoo.tools.SQL
.. automethod:: SQL.join
.. automethod:: SQL.identifier
One important thing to know about models is that they don't necessarily perform
database updates right away. Indeed, for performance reasons, the framework
delays the recomputation of fields after modifying records. And some database
@@ -747,7 +740,7 @@ called *flushing* and performs the expected database updates.
# make sure that 'partner_id' is up-to-date in database
self.env['model'].flush_model(['partner_id'])
self.env.cr.execute(SQL("SELECT id FROM model WHERE partner_id IN %s", ids))
self.env.cr.execute("SELECT id FROM model WHERE partner_id IN %s", [ids])
ids = [row[0] for row in self.env.cr.fetchall()]
Before every SQL query, one has to flush the data needed for that query. There

View File

@@ -4,24 +4,17 @@
Changelog
=========
Odoo version 17.0
=================
- Introduce an :class:`~odoo.tools.SQL` wrapper object to make SQL composition
easier and safer with respect to SQL injections. Methods of the ORM now use it
internally. Introduced by `#134677 <https://github.com/odoo/odoo/pull/134677>`_.
Odoo Online version 16.4
========================
- Method :meth:`~odoo.models.Model.name_get` has been deprecated with
- `odoo.models.Model.name_get` has been deprecated with
`#122085 <https://github.com/odoo/odoo/pull/122085>`_.
Read field `display_name` instead.
Read `display_name` instead.
Odoo Online version 16.3
========================
- Method :meth:`~odoo.models.Model._read_group` has a new signature with
- `odoo.models.Model._read_group` has a new signature with
`#110737 <https://github.com/odoo/odoo/pull/110737>`_
Odoo Online version 16.2
@@ -29,9 +22,9 @@ Odoo Online version 16.2
- Refactor the implementation of searching and reading methods to be able to
combine both in a minimal number of SQL queries. We introduce two new methods
:meth:`~odoo.models.Model.search_fetch` and :meth:`~odoo.models.Model.fetch`
that take advantage of the combination. More details can be found on the pull
request `#112126 <https://github.com/odoo/odoo/pull/112126>`_.
`odoo.models.Model.search_fetch` and `odoo.models.Model.fetch` that take
advantage of the combination. More details can be found on the pull request
`#112126 <https://github.com/odoo/odoo/pull/112126>`_.
Odoo version 16.0
=================

View File

@@ -3411,6 +3411,8 @@ attributes:
units, e.g. € and $).
If the value is a domain, the domain is evaluated in the context of the current row's
record, if ``True`` the corresponding attribute is set on the cell.
``widget`` (optional)
alternate representations for a field's display.
.. ....................................................................

View File

@@ -74,7 +74,7 @@ interface of the server.
.. code-block:: console
$ cd $HOME/src/odoo/
$ ./odoo-bin --addons-path="addons/,../enterprise/" -d rd-demo
$ ./odoo-bin --addons-path="addons/,../enterprise/,../technical-training-sandbox" -d rd-demo
There are multiple :ref:`command-line arguments <reference/cmdline/server>` that you can use to run
the server. In this training you will only need some of them.
@@ -118,10 +118,6 @@ the server. In this training you will only need some of them.
- :option:`-u <odoo-bin --update>`: Update some modules before running the server
(comma-separated list).
.. note::
For now you cannot add `../technical-training-sandbox` to your `addons-path` as it is empty
and will result into an invalid addons-path folder error, but you will have to add it back later on !
Log in to Odoo
--------------

View File

@@ -232,7 +232,7 @@ Any field can be given a default value. In the field definition, add the option
float, string) or a function taking a model and returning a value::
name = fields.Char(default="Unknown")
last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now)
last_seen = fields.Datetime("Last Seen", default=lambda self: fields.Datetime.now())
The ``name`` field will have the value 'Unknown' by default while the ``last_seen`` field will be
set as the current time.