Compare commits
49 Commits
17.0-sql-w
...
master-16.
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c9314b7cd4 |
[ADD] inventory: cluster picking
X-original-commit:
|
||
|
|
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:
|
||
|
|
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:
|
||
|
|
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:
|
||
|
|
5b44376e52 |
[ADD] Quality: Pass - Fail quality checks
closes odoo/documentation#6552
X-original-commit:
|
||
|
|
7067cf372a |
[FIX] performance: change example with the new _read_group
closes odoo/documentation#6540
X-original-commit:
|
||
|
|
ebbd736540 |
[REM] crm: google spreadsheet integration
closes odoo/documentation#6538
X-original-commit:
|
||
|
|
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:
|
||
|
|
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:
|
||
|
|
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:
|
||
|
|
246450c957 |
[IMP] barcode: split docs + hone in on language
closes odoo/documentation#6520
X-original-commit:
|
||
|
|
cc37e41de0 |
[IMP] accounting: new tag selector for custom reports
|
||
|
|
6cff316d86 |
[ADD] MRP: Three-step manufacturing
closes odoo/documentation#5163
closes odoo/documentation#6490
X-original-commit:
|
||
|
|
03c9226547 |
[IMP] Productivity: Outlook Plugin edits
closes odoo/documentation#6484
X-original-commit:
|
||
|
|
d87112ddef |
[IMP] inventory: expand on accounting and math
closes odoo/documentation#6483
X-original-commit:
|
||
|
|
6605ec1988 |
[ADD] MRP: One-step manufacturing
closes odoo/documentation#6470
X-original-commit:
|
||
|
|
d105f614af |
[IMP] orm: update changelog
closes odoo/documentation#6465
X-original-commit:
|
||
|
|
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:
|
||
|
|
6a198ad1ce |
[ADD] Quality: Instructions quality check
closes odoo/documentation#6454
X-original-commit:
|
||
|
|
7dc0dc37d2 |
[IMP] inventory: fwport removal strategy
closes odoo/documentation#6450
X-original-commit:
|
||
|
|
09e0b8affc |
[IMP] tests: make review UX and resource files
closes odoo/documentation#6434
X-original-commit:
|
||
|
|
f3a6cc6779 |
[ADD] MRP: Two-step manufacturing
closes odoo/documentation#6402
X-original-commit:
|
||
|
|
36b20ff16c |
[ADD] Inventory: Use locations to manage inventory
closes odoo/documentation#6423
X-original-commit:
|
||
|
|
068020901c |
[IMP] sales: complete rewrite for pricing doc
closes odoo/documentation#6415
X-original-commit:
|
||
|
|
6da7dcccea |
[IMP] pos: add warning to not buy a terminal from amazon
closes odoo/documentation#6391
Taskid: 3284737
X-original-commit:
|
||
|
|
48679b52e9 |
[FW][ADD] MRP: Shop Floor Overview
closes odoo/documentation#6381
X-original-commit:
|
||
|
|
f85a667236 |
[ADD] MRP: Work order dependencies
closes odoo/documentation#6380
X-original-commit:
|
||
|
|
44f202cff9 |
[IMP] inventory: rewrite lead times, add images
closes odoo/documentation#6360
X-original-commit:
|
||
|
|
4b1b3db6f2 |
[ADD] Inventory: Add Scrap inventory
closes odoo/documentation#6375
X-original-commit:
|
||
|
|
db2ee387a9 |
[I18N] *: export 17.0 translations
closes odoo/documentation#6361
X-original-commit:
|
||
|
|
f7cb830798 |
[ADD] IoT: OPC-UA Protocol
closes odoo/documentation#6351
X-original-commit:
|
||
|
|
86bd83705d |
[IMP] sales: minor adjustment to dynamic text portion of PDF builder
closes odoo/documentation#6349
X-original-commit:
|
||
|
|
b4eaf1c223 |
[ADD] MRP: Add Split and merge manufacturing orders
closes odoo/documentation#6341
X-original-commit:
|
||
|
|
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:
|
||
|
|
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:
|
||
|
|
32441c88fc |
[IMP] upgrade: overhaul upgrade doc
closes odoo/documentation#6321
X-original-commit:
|
||
|
|
89539f7379 |
[IMP] supported_versions: release 17.0
closes odoo/documentation#6314
X-original-commit:
|
||
|
|
4d88c4ec20 |
[ADD] PLM: ECO approvals doc
closes odoo/documentation#6304
X-original-commit:
|
||
|
|
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> |
||
|
|
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:
|
||
|
|
f53aca7b32 |
[ADD] PLM: version control
closes odoo/documentation#6294
Author: Felicious <feku@odoo.com>
X-original-commit:
|
||
|
|
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:
|
||
|
|
86207443b1 |
[IMP] live chat: update ratings doc
closes odoo/documentation#6264
X-original-commit:
|
||
|
|
d25eecbe13 |
[IMP] l10n: Chile new features
closes odoo/documentation#6257
X-original-commit:
|
||
|
|
dd6bf8b6c7 |
[ADD] PLM: engineering change order
closes odoo/documentation#6273
X-original-commit:
|
||
|
|
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:
|
||
|
|
dbb82d83e2 |
[IMP] *: export translations
closes odoo/documentation#6249
X-original-commit:
|
||
|
|
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:
|
||
|
|
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:
|
2
Makefile
|
|
@@ -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)
|
||||
|
|
|
|||
2
conf.py
|
|
@@ -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 (*).
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
=======================
|
||||
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
|
@@ -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:
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
==================
|
||||
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
|
|
|
|||
|
|
@@ -2,8 +2,6 @@
|
|||
How to invoice the shipping cost to the customer?
|
||||
=================================================
|
||||
|
||||
.. _inventory/shipping/invoice:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
|
|
|
|||
|
|
@@ -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`
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
|
@@ -2,8 +2,6 @@
|
|||
How to integrate a third party shipper?
|
||||
=======================================
|
||||
|
||||
.. _inventory/shipping/third_party:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
|
|
|
|||
|
|
@@ -9,4 +9,3 @@ Quality check types
|
|||
|
||||
quality_check_types/instructions_check
|
||||
quality_check_types/pass_fail_check
|
||||
quality_check_types/measure_check
|
||||
|
|
|
|||
|
|
@@ -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>`.
|
||||
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
|
@@ -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.
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
|
|
|||
|
|
@@ -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`
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 6.8 KiB |
|
|
@@ -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
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
=================
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
||||
.. ....................................................................
|
||||
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
--------------
|
||||
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
|
|
|||