Compare commits
13 Commits
17.0-16.0-
...
17.0-sql-w
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ec6e9b27a0 |
[IMP] core: add SQL wrapper
This completes https://github.com/odoo/odoo/pull/134677. |
||
|
|
c9affa54a8 |
[IMP] reporting: improve grammar and remove image centering
closes odoo/documentation#6653
X-original-commit:
|
||
|
|
1860805474 |
[IMP] accounting: branch management in main page
taskid-3609491
closes odoo/documentation#6646
X-original-commit:
|
||
|
|
8025fdd915 |
[IMP] accounting: peppol changes
taskid-3450738
closes odoo/documentation#6634
X-original-commit:
|
||
|
|
ae08218516 |
[IMP] outlook: remove note about multi-user sync spam
task-3575806
closes odoo/documentation#6625
X-original-commit:
|
||
|
|
25a7492e74 |
[FIX] accounting: update link to getting started video tutorial
task-3608613
closes odoo/documentation#6614
X-original-commit:
|
||
|
|
32517aa638 |
[FIX] getting_started: remove useless lambda
The lambda function here is useless and makes newdooers think
they need to use it everytime.
`default=fields.Date.add(fields.Date.today(), months=3))`
should do the trick, no lambda involved.
closes odoo/documentation#6631
X-original-commit:
|
||
|
|
e8106a55c4 |
[FIX] getting_started: invalid addons-path
The "../technical-training-sandbox" is added too early in the path since
its still empty, and results into an "invalid addons-path" error.
X-original-commit:
|
||
|
|
05da049af4 |
[ADD] inventory: cluster picking
closes odoo/documentation#6591
X-original-commit:
|
||
|
|
4d48d1dfa6 |
[IMP] paypal: add note about supported currencies
task-3608056
closes odoo/documentation#6571
X-original-commit:
|
||
|
|
3da8280f33 |
[IMP] inventory: update delivery methods from 12 to 16
closes odoo/documentation#6602
X-original-commit:
|
||
|
|
ccf0b02713 |
[IMP] sales: updated deadline doc for 16
closes odoo/documentation#6584
X-original-commit:
|
||
|
|
37e10a53d9 |
[ADD] Quality: Measure quality check
closes odoo/documentation#6578
X-original-commit:
|
|
|
@@ -96,6 +96,12 @@ 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,33 +72,6 @@ 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
|
||||
-----------------------------
|
||||
|
||||
|
|
@@ -121,3 +94,45 @@ 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.
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
|
@@ -187,7 +187,8 @@ 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 Basics <https://www.odoo.com/r/lsZ>`_
|
||||
* `Odoo Tutorials: Accounting and Invoicing - Getting started [video]
|
||||
<https://www.odoo.com/slides/slide/getting-started-1692>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
|
|
|||
|
|
@@ -5,6 +5,11 @@ 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 under the :guilabel:`Reporting` menu of most apps several reports that let you analyze
|
||||
and visualize your records' data.
|
||||
You can find several reports under the :guilabel:`Reporting` menu of most apps that let you analyze
|
||||
and visualize the data of your records.
|
||||
|
||||
.. _reporting/views:
|
||||
|
||||
|
|
@@ -25,7 +25,6 @@ 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:
|
||||
|
|
@@ -38,7 +37,6 @@ 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:
|
||||
|
|
@@ -65,7 +63,6 @@ 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::
|
||||
|
|
@@ -79,7 +76,6 @@ 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
|
||||
|
|
@@ -88,7 +84,6 @@ 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:
|
||||
|
|
@@ -111,7 +106,6 @@ 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::
|
||||
|
|
@@ -124,7 +118,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.
|
||||
|
|
@@ -139,19 +133,16 @@ 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::
|
||||
|
|
@@ -163,25 +154,21 @@ 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
|
||||
|
|
@@ -192,11 +179,9 @@ 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,6 +2,8 @@
|
|||
How to invoice the shipping cost to the customer?
|
||||
=================================================
|
||||
|
||||
.. _inventory/shipping/invoice:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
|
|
|
|||
|
|
@@ -1,100 +1,213 @@
|
|||
===============================
|
||||
How to setup a delivery method?
|
||||
===============================
|
||||
================
|
||||
Delivery methods
|
||||
================
|
||||
|
||||
Overview
|
||||
========
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
.. 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>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Install the inventory module
|
||||
----------------------------
|
||||
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.
|
||||
|
||||
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 :
|
||||
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.
|
||||
|
||||
.. image:: delivery_method/setup05.png
|
||||
.. image:: delivery_method/install-module.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 you want to integrate delivery methods in your e-commerce,
|
||||
you'll have to install the **eCommerce Delivery** module.
|
||||
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:
|
||||
|
||||
Configure the delivery method
|
||||
-----------------------------
|
||||
#. 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.
|
||||
|
||||
To configure your delivery methods, go to the **Inventory** module,
|
||||
click on :menuselection:`Configuration --> Delivery Methods`.
|
||||
.. image:: delivery_method/enable-delivery.png
|
||||
:align: center
|
||||
:alt: Enable the *Delivery Methods* feature by checking the box in Configuration > Settings.
|
||||
|
||||
First set a name and a transporter company.
|
||||
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:
|
||||
|
||||
.. image:: delivery_method/setup03.png
|
||||
:align: center
|
||||
- :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.
|
||||
|
||||
Then you'll have to set the pricing. It can be fixed or based on rules.
|
||||
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.
|
||||
|
||||
- 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.
|
||||
For examples on how to configure specific shipping methods, refer to the sections below.
|
||||
|
||||
.. image:: delivery_method/setup06.png
|
||||
:align: center
|
||||
.. _inventory/shipping/fixed:
|
||||
|
||||
- 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.
|
||||
Fixed price
|
||||
-----------
|
||||
|
||||
.. image:: delivery_method/setup04.png
|
||||
:align: center
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
.. image:: delivery_method/setup02.png
|
||||
:align: center
|
||||
.. example::
|
||||
To set up `$20` flat-rate shipping that becomes free if the customer spends over `$100`, fill in
|
||||
the following fields:
|
||||
|
||||
.. 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`
|
||||
- :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`
|
||||
|
||||
Delivery process
|
||||
================
|
||||
.. image:: delivery_method/new-shipping-method.png
|
||||
:align: center
|
||||
:alt: Example of filling out a shipping method.
|
||||
|
||||
Sale order
|
||||
----------
|
||||
.. _inventory/shipping/rules:
|
||||
|
||||
.. image:: delivery_method/setup07.png
|
||||
:align: center
|
||||
Based on rules
|
||||
--------------
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Delivery
|
||||
--------
|
||||
Create pricing rules
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can add or change the delivery method on the delivery itself.
|
||||
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`.
|
||||
|
||||
.. image:: delivery_method/setup01.png
|
||||
:align: center
|
||||
Once finished, click either :guilabel:`Save & New` to add another rule, or :guilabel:`Save & Close`.
|
||||
|
||||
On the delivery, check the **Carrier Information**. The carrier is the
|
||||
chosen delivery method.
|
||||
.. 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.
|
||||
|
||||
.. seealso::
|
||||
* :doc:`third_party_shipper`
|
||||
* :doc:`../operation/invoicing`
|
||||
: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.
|
||||
|
||||
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
|
@@ -2,6 +2,8 @@
|
|||
How to integrate a third party shipper?
|
||||
=======================================
|
||||
|
||||
.. _inventory/shipping/third_party:
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
|
|
|
|||
|
|
@@ -9,3 +9,4 @@ Quality check types
|
|||
|
||||
quality_check_types/instructions_check
|
||||
quality_check_types/pass_fail_check
|
||||
quality_check_types/measure_check
|
||||
|
|
|
|||
|
|
@@ -0,0 +1,194 @@
|
|||
=====================
|
||||
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>`.
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
|
@@ -103,13 +103,6 @@ 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,6 +2,8 @@
|
|||
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,54 +7,50 @@ 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.
|
||||
|
||||
Expiration date deadlines
|
||||
=========================
|
||||
Quotation expiration
|
||||
====================
|
||||
|
||||
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.
|
||||
In Odoo *Sales*, there's the option to add an expiration date to a quotation.
|
||||
|
||||
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:`Create`.
|
||||
desired quotation, or create a new one by clicking :guilabel:`New`.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
.. image:: deadline/quotation-deadlines-expiration-field.png
|
||||
:align: center
|
||||
: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.
|
||||
:alt: The expiration field on a standard quotation form in Odoo Sales.
|
||||
|
||||
.. tip::
|
||||
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).
|
||||
By clicking the :guilabel:`Preview` button on a quotation, Odoo clearly displays when that
|
||||
specific offer expires.
|
||||
|
||||
.. 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: 8.3 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 27 KiB |
|
|
@@ -726,6 +726,13 @@ 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
|
||||
|
|
@@ -740,7 +747,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("SELECT id FROM model WHERE partner_id IN %s", [ids])
|
||||
self.env.cr.execute(SQL("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,17 +4,24 @@
|
|||
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
|
||||
========================
|
||||
|
||||
- `odoo.models.Model.name_get` has been deprecated with
|
||||
- Method :meth:`~odoo.models.Model.name_get` has been deprecated with
|
||||
`#122085 <https://github.com/odoo/odoo/pull/122085>`_.
|
||||
Read `display_name` instead.
|
||||
Read field `display_name` instead.
|
||||
|
||||
Odoo Online version 16.3
|
||||
========================
|
||||
|
||||
- `odoo.models.Model._read_group` has a new signature with
|
||||
- Method :meth:`~odoo.models.Model._read_group` has a new signature with
|
||||
`#110737 <https://github.com/odoo/odoo/pull/110737>`_
|
||||
|
||||
Odoo Online version 16.2
|
||||
|
|
@@ -22,9 +29,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
|
||||
`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>`_.
|
||||
: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 version 16.0
|
||||
=================
|
||||
|
|
|
|||
|
|
@@ -74,7 +74,7 @@ interface of the server.
|
|||
.. code-block:: console
|
||||
|
||||
$ cd $HOME/src/odoo/
|
||||
$ ./odoo-bin --addons-path="addons/,../enterprise/,../technical-training-sandbox" -d rd-demo
|
||||
$ ./odoo-bin --addons-path="addons/,../enterprise/" -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,6 +118,10 @@ 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=lambda self: fields.Datetime.now())
|
||||
last_seen = fields.Datetime("Last Seen", default=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.
|
||||
|
|
|
|||