Compare commits

...

30 Commits

Author SHA1 Message Date
Mahmoud Metwally 23786f6cc9 Update web_services.rst
X-original-commit: e8c29ef8c2
2023-04-13 19:20:49 +02:00
Martin Trigaux 62a362f30a [I18N] *: export source terms
closes odoo/documentation#4150

X-original-commit: d53ba8c7e2
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-04-13 17:57:26 +02:00
wangting 9fb8c5c354 [FIX] tutorials/js_framework: fix typo
closes odoo/documentation#4148

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-04-13 16:40:41 +02:00
Martin Trigaux 1e39949363 [IMP] reference: update markup documentation
closes odoo/documentation#3612

Related: odoo/odoo#111850
Related: odoo/enterprise#36728
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-04-13 16:39:45 +02:00
Brandon Seltenrich (BRSE) afe0282420 [IMP] inventory: update owned_stock
closes odoo/documentation#4143

X-original-commit: 1289a9ec45
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2023-04-13 05:07:57 +02:00
Loan (LSE) 74f4204857 [IMP] iot: add documentation regarding HTTPS certificate
Also include details/troubleshoot/solutions for redundant
support issues:
 - Error code details for HTTPS certificate generation
   (see: https://github.com/odoo/odoo/pull/114993 )
 - DNS issue with HTTPS domain

 OPW-3227004

closes odoo/documentation#4137

X-original-commit: 6f4822cb2b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-13 05:07:52 +02:00
Elisabeth Dickinson 81d1f2d21b [IMP] odoo_theme: design improvements
Revamp of the side menu;
Round all borders for consistency with the buttons;
Improve .sig-* and .o_code elements;
Improve sphinx-tabs hover effect;

task-3046383

closes odoo/documentation#4114

X-original-commit: 3056c7b62d
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-04-12 12:26:14 +02:00
Elisabeth Dickinson 9dc32cdd4e [IMP] odoo_theme: general cleanup
A general reorganization of the code was needed for more clarity.
The different markup styles have been grouped together under a common
"chapter", comments have been rewritten and example pages have been
added for context.

Some levels have been removed Where there were too many for no reason.
By removing one level of styles (e.g.: `#wrap`) we avoid needing to
force overrides or adding `!important` to our code.
⌙ e.g.: before commit 9ef86cd93d8c6fc0fd96b437f629237e7a562c6e,
`.o_spoilers .accordion-body >:first-child` was being involuntarily
overridden.

task-3046383

X-original-commit: 620e3c33ef
Part-of: odoo/documentation#4114
2023-04-12 12:26:14 +02:00
Antoine Vandevenne (anv) febf7c4188 [IMP] odoo_theme: tweak the HTML structure of TOC entries
task-3046383

X-original-commit: 877d1de3c2
Part-of: odoo/documentation#4114
2023-04-12 12:26:14 +02:00
Antoine Vandevenne (anv) 71f3ea88bd [IMP] extensions/custom_admonitions: tweak the HTML structure of dfn
The structure of the `dfn` role is changed from its default
`<em class="dfn">text</em>` to
`<span class="dfn"><span>text</span></span>` to ease the styling.

task-3046383

X-original-commit: 281a893540
Part-of: odoo/documentation#4114
2023-04-12 12:26:13 +02:00
Jonathan Castillo (jcs) ad4e8e649a [MOV] calendar: "Calendar" app from "Misc" to "Productivity"
To improve the structure of the documentation, the "Miscellaneous"
section should be limited as much as possible.

This commit:
- renames "Calendars" into "Calendar" (as the app name)
- moves the app from the "Miscellaneous" section to the "Productivity"
  section
- fixes the wrong file structure to follow the toc
  (e.g. general/calendars/outlook/outlook_calendar -> productivity/calendar/outlook)

task-3217827

closes odoo/documentation#4128

X-original-commit: 3d2c5d7c16
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2023-04-12 08:05:50 +02:00
Jonathan Castillo (jcs) 5cfec84463 [MOV] live chat: structure
task-3269837

closes odoo/documentation#4129

X-original-commit: 1685449f61
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2023-04-12 07:07:47 +02:00
Jonathan Castillo (jcs) 59066fed29 [MOV] website: structure
As a first step to update the doc - at last! - we first need to update
its structure.

task-3269837

X-original-commit: 180963cd89
Part-of: odoo/documentation#4129
2023-04-12 07:07:46 +02:00
fvz-odoo eabb865415 [l10n_mx] Update exempt tax configuration.
In Mexico there are two 0% taxes, 0% VAT and 0% exempt VAT. This change
makes the tip clearer so users do not confuse both taxes. Forward to
master.

closes odoo/documentation#4120

X-original-commit: 5ef339fe82
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2023-04-11 19:48:38 +02:00
Jess Rogers (jero) e4624b9fdb [IMP] helpdesk: update ticket closing
closes odoo/documentation#4104

X-original-commit: a1b86849b7
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2023-04-11 18:49:34 +02:00
Victor Feyens b5140e2d22 [ADD] tests: image size checker
closes odoo/documentation#4100

X-original-commit: 380a5499de
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-04-11 15:17:26 +02:00
Brandon Seltenrich (BRSE) 4314b73e2c [IMP] purchase: update bill control policies doc
closes odoo/documentation#4094

X-original-commit: c59db7d9f8
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-11 01:35:58 +02:00
John Holton (hojo) 46881ee8fb [IMP] Inventory: Update dropshipping
closes odoo/documentation#4082

X-original-commit: bbbca62f6f
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-10 23:07:48 +02:00
John Holton (hojo) e445c1117b [ADD] Quality: add Create quality alerts
closes odoo/documentation#4090

X-original-commit: 1b640a7a30
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-10 22:10:54 +02:00
Jonathan Castillo (jcs) 6b4bc0b680 [IMP] subscriptions: overhaul of the basic docs
This commit improves the structure of the Subscription doc and updates
its content (recurring products, subscription plans, sales flow)

task-3222232

closes odoo/documentation#4070

X-original-commit: 878fc0e21f
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
Co-authored-by: Xavier Platteau <xpl@odoo.com>
Co-authored-by: Tom Aarab <toaa@odoo.com>"
2023-04-08 13:40:25 +02:00
Sam Lieber (sali) cd55555d79 [IMP] purchase: update reordering rules config doc
closes odoo/documentation#4076

X-original-commit: 728a462762
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-08 05:27:49 +02:00
Jess Rogers (jero) c44801c718 [IMP] helpdesk: updated sla policies
closes odoo/documentation#4069

X-original-commit: 401a19fcdc
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-08 00:54:56 +02:00
“Chiara 2eafd205de [IMP] accounting: update batch payments
closes odoo/documentation#4058

X-original-commit: 67f10d3eca
Signed-off-by: Platteau Xavier (xpl) <xpl@odoo.com>
Signed-off-by: chiaraprattico <chpr@odoo.com>
2023-04-06 13:51:59 +02:00
John Holton (hojo) 2c819a05c2 [IMP] Inventory: Update inter-warehouse replenishment
closes odoo/documentation#4046

X-original-commit: 6f6e018db4
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-06 04:16:51 +02:00
KC (ksc) 6a597e2e94 [ADD] sms marketing: added essentials/getting started docs
closes odoo/documentation#4051

X-original-commit: e8ad53cead
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-04-06 03:15:42 +02:00
Jonathan Castillo (jcs) 03dc488290 [IMP] accounting: bank statements in the transactions page
task-3264491

closes odoo/documentation#4041

X-original-commit: 2d7a48a65e
Signed-off-by: Platteau Xavier (xpl) <xpl@odoo.com>
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2023-04-05 23:25:15 +02:00
Melanie Nguyen (meng) 5c2e78c8a5 [FIX] crm: replace old lead scoring content with predictive lead scoring
closes odoo/documentation#4030

X-original-commit: 9f72036be8
Signed-off-by: Melanie Nguyen (meng) <meng@odoo.com>
2023-04-05 21:03:54 +02:00
Tiffany Chang (tic) ab1563e7c7 [REF] developer: rewrite sql view as a howto
SQL view was formerly part of the dashboard tutorial which is now
obsolete. Since creating a SQL view as a tutorial does not make sense
anymore, it has been converted into a simple howto.

closes odoo/documentation#4035

Task: 3226581
X-original-commit: 7124542ed9
Signed-off-by: Tiffany Chang <tic@odoo.com>
2023-04-05 17:31:58 +02:00
Tiffany Chang (tic) e18b24a176 [REM] developer: remove references to web_dashboard view
Since odoo/enterprise#31641 the dashboard view no longer exists since it
is now replaced with spreadsheet_dashboard, therefore we remove it from
the backend Views documentation.

Task: 3226581
X-original-commit: e2c880aafe
Part-of: odoo/documentation#4035
2023-04-05 17:31:58 +02:00
fdardenne 56a5b0480e [IMP] create JavaScript howtos
The JavaScript cheatsheet is outdated, we therefore remove it and
replace it by multiple howtos:

- Create a view from scratch
- Extending an existing view
- Create a field from scratch
- Extend an existing field
- Create a client action

There is other subjects to introduce as the web framework is big. Other
future contributions will cover them.

closes odoo/documentation#4020

X-original-commit: 7e4435deb8
Signed-off-by: Dardenne Florent (dafl) <dafl@odoo.com>
2023-04-05 13:57:53 +02:00
390 changed files with 13334 additions and 48188 deletions
@@ -13,7 +13,7 @@ personal email address or an address created by a custom domain.
.. seealso::
- :doc:`/applications/general/auth/azure`
- :doc:`/applications/general/calendars/outlook/outlook_calendar`
- :doc:`/applications/productivity/calendar/outlook`
Setup in Microsoft Azure Portal
===============================
@@ -71,7 +71,7 @@ way to verify the ownership of your domain name is by adding a DNS record. You c
other providers.
.. seealso::
- :doc:`/applications/websites/website/optimize/seo`
- :doc:`/applications/websites/website/pages/seo`
- `Google Search Console Help - Verify your site ownership <https://support.google.com/webmasters/answer/9008080>`_
- `Bing Webmaster Tools - Add and Verify site <https://www.bing.com/webmasters/help/add-and-verify-site-12184f8b>`_
@@ -13,7 +13,7 @@ email address or an address created by a custom domain.
.. seealso::
- :doc:`/applications/general/auth/google`
- :doc:`/applications/general/calendars/google/google_calendar_credentials`
- :doc:`/applications/productivity/calendar/google`
Setup in Google
===============
@@ -8,10 +8,13 @@ and reconciling them with the ones recorded in your accounting.
:doc:`Bank synchronization <bank_synchronization>` automates the process. However, if you do not
want to use it or if your bank is not yet supported, other options exist:
- :ref:`Import bank transactions <import-statements>` delivered by your bank;
- :ref:`Register bank transactions <register-transactions>` manually.
- :ref:`Import bank transactions <transactions/import>` delivered by your bank;
- :ref:`Register bank transactions <transactions/register>` manually.
.. _import-statements:
.. note::
:ref:`Grouping transactions by statement <transactions/statements>` is optional.
.. _transactions/import:
Import transactions
===================
@@ -28,15 +31,17 @@ To import a file, go to the :guilabel:`Accounting Dashboard`, and in the :guilab
click on :guilabel:`Import Transactions`.
.. image:: transactions/import-transactions.png
:align: center
:alt: Import bank transactions from bank journal
:alt: Import bank transactions from the bank journal
Next, select the file and upload it.
After setting the necessary formatting options and mapping the needed columns, you can run a
:guilabel:`Test` and :guilabel:`Import` your bank transactions.
After setting the necessary formatting options and mapping the file columns with their related Odoo
fields, you can run a :guilabel:`Test` and :guilabel:`Import` your bank transactions.
.. _register-transactions:
.. seealso::
:doc:`/applications/general/export_import_data`
.. _transactions/register:
Register bank transactions manually
===================================
@@ -44,3 +49,46 @@ Register bank transactions manually
You can also record your bank transactions manually. To do so, go to :guilabel:`Accounting
Dashboard`, click on the :guilabel:`Bank` journal, and then on :guilabel:`New`. Make sure to fill
out the :guilabel:`Partner` and :guilabel:`Label` fields to ease the reconciliation process.
.. _transactions/statements:
Statements
==========
A **bank statement** is a document provided by a bank or financial institution that lists the
transactions that have occurred in a particular bank account over a specified period of time.
In Odoo Accounting, it is optional to group transactions by their related statement, but depending
on your business flow, you may want to record them for control purposes.
.. important::
If you want to compare the ending balances of your bank statements with the ending balances of
your financial records, *don't forget to create an opening transaction* to record the bank
account balance as of the date you begin synchronizing or importing transactions. This is
necessary to ensure the accuracy of your accounting.
To access a list of statements, go to your :guilabel:`Accounting Dashboard`, click on the vertical
ellipsis (:guilabel:`⋮`) button next to the bank or cash journal you want to check, then on
:guilabel:`Statements`
Statement creation from the kanban view
---------------------------------------
Open the bank reconciliation view by clicking on the name of the bank journal, and identify the
transaction corresponding to the last transaction of your bank statement. Click on the
:guilabel:`STATEMENT` button when hovering on the upper separator line.
.. image:: transactions/statements-kanban.png
:alt: A "STATEMENT" button is visible when hovering on the line separating two transactions.
Fill out the statement's details and save. The newly created statement includes the previous
transactions following the last statement.
Statement creation from the list view
-------------------------------------
Open the list of transactions by clicking on the name of the bank journal and switching to the list
view. Select all the transactions corresponding to the bank statement, and, in the
:guilabel:`Statement` column, select an existing statement or create a new one by typing its
reference, clicking on :guilabel:`Create and edit...`, filling out the statement's details, and
saving.
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -103,7 +103,7 @@ The frequency of the invoicing and the services/products invoiced are
defined on the contract.
.. seealso::
- :doc:`/applications/sales/sales/invoicing/subscriptions`
- :doc:`/applications/sales/subscriptions`
Others
======
@@ -1,99 +1,71 @@
==================================================
Batch payments: Batch deposits (checks, cash etc.)
==================================================
==============================
Batch payments by bank deposit
==============================
A **Batch Deposit** groups multiple payments in a single batch. This allows you to deposit several
payments into your bank account with a single transaction. This is particularly useful to deposit
cash and checks.
This feature allows you to list several customer payments and print a **deposit slip**. This ticket
contains the details of the transactions and a reference to the batch deposit. You can then select
this reference during a bank reconciliation to match the single bank statement line with all the
transactions listed in the batch deposit.
A **batch deposit** is a convenient way to group customer payments and deposit them into your bank
account. The feature lets you list multiple payments and generate a detailed deposit slip with a
batch reference. This reference can be used when reconciling to match bank statement lines with
transactions in the batch deposit.
Configuration
=============
To activate the feature, go to :menuselection:`Accounting --> Configuration --> Settings -->
Customer Payments`, activate **Batch Payments**, and click on *Save*.
Payment Method Types
--------------------
To record new payments as part of a Batch Deposit, you have to configure first the Journal on which
you record them.
To do so, go to :menuselection:`Accounting --> Configuration --> Journals`, open the Journal
you want to edit, click on *Edit*, and open the *Advanced Settings* tab. In the *Payment Method
Types* section, enable **Batch Deposit**, and click on *Save*.
.. image:: batch/batch-journal-settings.png
:align: center
:alt: Payment Method Types in a journal's advanced settings
.. note::
Your main bank accounts are automatically configured to process batch payments when you activate
the feature.
Go to :menuselection:`Accounting --> Configuration --> Settings --> Customer Payments` and tick
:guilabel:`Batch Payments` to activate the feature.
Deposit multiple payments in batch
==================================
Record payments to deposit in batch
-----------------------------------
Register payments
-----------------
:doc:`Register the payments <recording>` on the bank account on which you plan to deposit them by
opening the *Customer Invoice* for which you received a payment, and clicking on *Register Payment*.
There, select the appropriate Journal linked to your bank account and select *Batch Deposit* as
Payment Method.
Before performing a batch deposit, it is necessary to register each transaction's payment. To do so,
open the corresponding customer invoice and click :guilabel:`Register Payment`. In the pop-up
window, select the :guilabel:`Journal` linked to your bank account and :guilabel:`Batch Deposit` as
the :guilabel:`Payment Method`, and click :guilabel:`Create Payment`.
.. image:: batch/batch-register-payment.png
.. image:: batch/batch-payments.png
:align: center
:alt: Registering a customer payment as part of a Batch Deposit in Odoo Accounting
:alt: Registering a customer payment as part of a batch deposit
Do this step for all checks or payments you want to process in batch.
.. note::
Make sure to write the payment reference in the **Memo** field.
Add payments to a Batch Deposit
Add payments to a batch deposit
-------------------------------
To add the payments to a Batch Deposit, go to :menuselection:`Accounting --> Customers --> Batch
Payments`, and click on *Create*. Next, select the Bank and Payment Method, then click on *Add a
line*.
To add payments to a batch deposit, go to :menuselection:`Accounting --> Customers --> Batch
Payments`, and click :guilabel:`New`. Next, select the :guilabel:`Bank` and choose :guilabel:`Batch
Deposit` as the :guilabel:`Payment Method`.
.. image:: batch/batch-new-inbound.png
.. image:: batch/batch-customer-payment.png
:align: center
:alt: Filling out a new Inbound Batch Payment form on Odoo Accounting
:alt: Filling out a new inbound batch payment form
Select all payments to include in the current Batch Deposit and click on *Select*. You can also
record a new payment and add it to the list by clicking on *Create*.
Click :guilabel:`Add a line`. In the pop-up window, tick all payments to include in the batch
deposit, then click :guilabel:`Select`.
.. image:: batch/batch-payments-selection.png
.. image:: batch/batch-lines-selection.png
:align: center
:alt: Selection of all payments to include in the Batch Deposit
:alt: Selecting all payments to include in the batch deposit
Once done, click on *Validate* to finalize your Batch Deposit. You can then click on *Print* to
download a PDF file to include with the deposit slip that the bank usually requires to fill out.
Once done, click :guilabel:`Validate` to finalize the batch deposit.
Bank Reconciliation
.. tip::
Click :guilabel:`Print` to download a PDF file to include with the deposit slip.
Bank reconciliation
-------------------
Once the bank statements are on your database, you can reconcile the bank statement line with the
*Batch Payment* reference. To do so, start your **Bank Reconciliation** by going to your Accounting
dashboard and clicking on *Reconcile Items* on the related bank account. At the bank statement line,
click on *Choose counterpart or Create Write-off* to display more options, open the *Batch Payments*
tab, and select your Batch Payment. All related payments are automatically added.
Once the bank transactions are on your database, you can reconcile bank statement lines with the
batch payment. To do so, go to the :guilabel:`Accounting Dashboard` and click :guilabel:`Reconcile
Items` on the related bank account. Go to the :guilabel:`Batch Payments` tab to select a specific
batch and click :guilabel:`Validate` to finalize the process.
.. image:: batch/batch-reconciliation.png
:align: center
:alt: Reconciling the batch payment with all its transactions
.. note::
The *Batch Payments* tab won't appear if a Partner is selected for this bank statement line.
.. image:: batch/batch-bank-reconciliation.png
:align: center
:alt: Reconciliation of the Batch Payment with all its transactions
If a check, or a payment, couldn't be processed by the bank and is missing, remove the related
payment before validating the bank reconciliation.
If a specific payment could not be processed by the bank or is missing, remove the related
payment before reconciling.
.. seealso::
- :doc:`recording`
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

@@ -174,8 +174,9 @@ Do the same for all the sales taxes that the company needs, either those that co
Odoo, or those that you add that are necessary for your company bill.
.. tip::
For the 0% VAT tax, select the option *Exento* instead of *Tasa* within the **Factor Type**
field.
For the 0% VAT tax, select the option :guilabel:`Tasa` within the :guilabel:`Factor Type` field.
For the 0% VAT **exempt** tax, select the option :guilabel:`Exento` instead of :guilabel:`Tasa`
within the :guilabel:`Factor Type` field.
When registering a payment, Odoo will carry out the movement of taxes from the **Cash Basis
Transition Account** to the account set in the **Definition** tab. For such movement, a tax base
-1
View File
@@ -12,7 +12,6 @@ Miscellaneous
general/reporting
general/email_communication
general/voip
general/calendars
general/digest_emails
general/in_app_purchase
general/developer_mode
+1 -1
View File
@@ -6,5 +6,5 @@ Due to specific requirements in Azure's OAuth implementation, Microsoft Azure OA
is NOT compatible with Odoo at the moment.
.. seealso::
- :doc:`/applications/general/calendars/outlook/outlook_calendar`
- :doc:`../../productivity/calendar/outlook`
- :doc:`/administration/maintain/azure_oauth`
+1 -1
View File
@@ -9,7 +9,7 @@ This is particularly helpful if your organization uses Google Workforce and you
within your organization to connect to Odoo with their Google Accounts.
.. seealso::
- :doc:`/applications/general/calendars/google/google_calendar_credentials`
- :doc:`../../productivity/calendar/google`
- :doc:`/administration/maintain/google_oauth`
.. _google-sign-in/configuration:
@@ -1,11 +0,0 @@
:nosearch:
=========
Calendars
=========
.. toctree::
:titlesonly:
calendars/outlook/outlook_calendar
calendars/google/google_calendar_credentials
@@ -58,4 +58,4 @@ can change the Language to any previously installed language and click
:align: center
.. seealso::
* :doc:`../../websites/website/publish/translate`
* :doc:`../../websites/website/configuration/translate`
@@ -10,7 +10,6 @@ Warehouse Management
management/products
management/warehouses
management/replenishment_strategies
management/inventory_adjustments
management/delivery
management/incoming
@@ -1,109 +1,80 @@
==================================================================
Send Products to Customers Directly from Suppliers (Drop-shipping)
==================================================================
=============================================================
Use dropshipping to ship directly from suppliers to customers
=============================================================
What is Drop-Shipping?
======================
Dropshipping is an order fulfillment strategy that allows sellers to have items shipped directly
from suppliers to customers. Normally, a seller purchases a product from a supplier, stores it in
their inventory, and ships it to the end customer once an order is placed. With dropshipping, the
supplier is responsible for storing and shipping the item. This benefits the seller by reducing
inventory costs, including the price of operating warehouses.
Drop-Shipping is a system that allows orders taken from your store to be
shipped straight from your supplier to your customer. On a usual
delivery system, products are sent from your supplier to your warehouse
to be put in stock and then shipped to your customers after ordering.
Configure products to be dropshipped
====================================
With drop-shipping, no item is stocked. When a customer places an order
in your shop, the item is delivered straight from the supplier to the
customer. Therefore, the product doesn't need to get through your
warehouse.
To use dropshipping as a fulfillment strategy, navigate to the :guilabel:`Purchase` app and select
:menuselection:`Configuration --> Settings`. Under the :guilabel:`Logistics` heading, click the
:guilabel:`Dropshipping` checkbox, and :guilabel:`Save` to finish.
Points to be Considered while Implementing Drop-Shipping
========================================================
Next, go to the :guilabel:`Sales` app, click :menuselection:`Products --> Products` and choose an
existing product or select :guilabel:`Create` to configure a new one. On the product page, make sure
that the :guilabel:`Can be Sold` and :guilabel:`Can be Purchased` checkboxes are enabled.
- Use drop-shipping only for the products you can't or don't want to keep in stock.
One reason is that you'll always make smaller
margins on items that are drop-shipped, so you should keep it
only for items that take up a lot of space in your warehouse.
.. image:: dropshipping/sold-purchased-checkboxes.png
:align: center
:alt: Enable the "Can be Sold" and "Can be Purchased" checkboxes on the product form.
- Drop-shipping is best for niche products.
Chances are that products that are in high demand are being offered by large suppliers at a
fraction of the price you'll be able to charge, so using a more
costly shipping method won't be financially rewarding. But if
your product is unique, then it makes sense!
Click on the :guilabel:`Purchase` tab and specify a vendor and the price that they sell the product
for. Multiple vendors can be added, but the vendor at the top of the list will be the one
automatically selected for purchase orders.
- To protect your customers from bad experiences.
Test drop-shipping companies for yourself beforehand and list the best ones.
.. image:: dropshipping/product-vendor-config.png
:align: center
:alt: The product form with a vendor specified.
- Make sure time is not against you.
Drop-shipping should take a reasonable amount of time and surely not more than it would have taken you to handle it all by yourself. It's also nice to be able
to provide your customers with a tracking number.
Finally, select the :guilabel:`Inventory` tab and enable the :guilabel:`Dropship` checkbox in the
:guilabel:`Routes` section.
- Items have to be available from your supplier.
It's good to know if
the product you're selling is available upstream. If you don't
have that information, inform your customers that you don't hold
the item in stock and that it's subject to availability from a
third party.
.. image:: dropshipping/enable-dropship-route.png
:align: center
:alt: Enable the Dropship option in the product inventory tab.
Fulfill orders using dropshipping
=================================
When a customer completes an online purchase for a dropshipped product, a sales order will be
automatically created with an associated request for quotation (:abbr:`RFQ (Request for Quotation)`)
for the supplier. Sales orders can be viewed in the :guilabel:`Sales` app by selecting
:menuselection:`Orders --> Orders`. Click the :guilabel:`Purchase` smart button at the top right of
a sales order to view the associated :abbr:`RFQ (Request for Quotation)`.
.. tip::
For more information and insights about Drop-Shipping, you can read our
blog: `*What is drop-shipping and how to use
it* <https://www.odoo.com/blog/business-hacks-1/post/what-is-drop-shipping-and-how-to-use-it-250>`__.
Dropship sales orders can also be created manually through the :guilabel:`Sales` app by selecting
:menuselection:`Orders --> Orders --> Create` and adding a product configured for dropshipping.
Configure Drop-Shipping
=======================
.. image:: dropshipping/dropship-sales-order.png
:align: center
:alt: A dropship sales order with the Purchase smart button in the top right corner.
Activate the functionality in the *Purchase* application by going to :menuselection:`Configuration
--> Settings`.
Once the :abbr:`RFQ (Request for Quotation)` is confirmed, it becomes a purchase order and a
dropship receipt is created and linked to it. The receipt can be viewed by clicking the
:guilabel:`Receipt` smart button in the top right corner of the purchase order form.
.. image:: dropshipping/dropshipping_01.png
:align: center
.. image:: dropshipping/dropship-purchase-order.png
:align: center
:alt: A dropship purchase order with the Receipt smart button in the top right corner.
Then, go to the *Inventory* app, in :menuselection:`Configuration --> Settings` to
activate the *Multi-Step Routes* feature. It will allow you to make
the *Route* field appear on the sale order lines to specify you send a
product via drop-shipping.
The dropship receipt will list the supplier in the :guilabel:`Receive From` section and the customer
in the :guilabel:`Destination Location` section. Upon delivery of the product to the customer, click
on the :guilabel:`Validate` button at the top left of the dropship receipt to confirm the delivered
quantity.
.. image:: dropshipping/dropshipping_02.png
:align: center
.. image:: dropshipping/validate-dropship-receipt.png
:align: center
:alt: Validate the dropship receipt after delivery.
Now, in the *Sales* app, go to :menuselection:`Products --> Products`. Select the
product you would like to drop-ship and add a vendor pricelist which
contains the right supplier, via the purchase tab.
To view all dropship orders, simply navigate to the :guilabel:`Inventory` dashboard and click the
teal :guilabel:`# TO PROCESS` button on the :guilabel:`Dropship` card.
.. image:: dropshipping/dropshipping_03.png
:align: center
Send Products from the Suppliers Directly to the Customers
==========================================================
Create a *Sales Order* and add the product on which you just set the
vendor. Add the *Route* field thanks to the widget on the right of the
sale order line. Now, you are able to specify that your products route
is *Drop-Shipping*.
.. image:: dropshipping/dropshipping_04.png
:align: center
.. image:: dropshipping/dropshipping_05.png
:align: center
Once the sale order is confirmed, Odoo automatically generates a
*Request for Quotation* for the supplier who will proceed to the
drop-shipping. You can find it in the *Purchase* app, with the sale
order as *Source Document*.
.. image:: dropshipping/dropshipping_06.png
:align: center
Once this *Purchase Order* is confirmed, a *Receipt Order* is
created and linked to it. The source location is the vendor location and
the destination location is the customer location. Then, the product
wont go through your own stock when you validate the dropship document.
.. image:: dropshipping/dropshipping_07.png
:align: center
You can also easily access the dropship document directly from your
inventory dashboard.
.. image:: dropshipping/dropshipping_08.png
:align: center
.. image:: dropshipping/view-all-dropship-orders.png
:align: center
:alt: Click the green button on the Dropship card to view all dropship orders.
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

@@ -1,45 +1,125 @@
===============================
Manage Stock that you don't own
===============================
=================================================
Consignment: buy and sell stock without owning it
=================================================
Sometimes, suppliers can offer you to store and sell products without
having to buy those items. This technique is called *consignee stock*.
Most of the time, products stored in a company's warehouse are either purchased from suppliers, or
are manufactured in-house. However, suppliers will sometimes let companies store and sell products
in the company's warehouse, without having to buy those items up-front. This is called
*consignment*.
Consignee stock is a great way for manufacturers and suppliers to launch
new products. As resellers may be reluctant to buy a product they are
not sure to be able to sell, consignee stock will allow them to offer an
item to check its market without having to pay for it in the first
place.
Consignment is a useful method for suppliers to launch new products, and easily deliver to their
customers. It's also a great way for the company storing the products (the consignee) to earn
something back for their efforts. Consignees can even charge a fee for the convenience of storing
products they don't actually own.
Of course, Odoo has the ability to manage those consignee stocks through
advanced settings.
Enable the consignment setting
==============================
Configuration
=============
To receive, store, and sell consignment stock, the feature needs to be enabled in the settings. To
do this, go to :menuselection:`Inventory --> Configuration --> Settings`, and under the
:guilabel:`Traceability` section, check the box next to :guilabel:`Consignment`, and then click
:guilabel:`Save` to finish.
To use this feature, go to :menuselection:`Inventory --> Configuration --> Settings` in
the inventory app. Then, enable the *Consignment* feature in the
*Traceability* section. Now, hit save.
.. image:: owned_stock/owned-stock-enable-consignment.png
:align: center
:alt: Enabled Consignment setting in Inventory configuration.
.. image:: owned_stock/owned_stock_01.png
:align: center
Receive (and store) consignment stock
=====================================
Reception of Consignee Stock
============================
When in the *Inventory* app, open the receipts and create a new
reception. On the right side, you will see that a new line called
*Assign Owner* has appeared. There, you can specify the partner which
owns the stock.
.. image:: owned_stock/owned_stock_02.png
:align: center
With the feature enabled in Odoo, consignment stock can now be received into a warehouse. From the
main :menuselection:`Inventory` dashboard, click into the :guilabel:`Receipts`
section. Then, click :guilabel:`Create`.
.. note::
If you are the owner, you can leave the field blank.
Consignment stock is not actually purchased from the vendor; it is simply received and stored.
Because of this, there are no quotations or purchase orders involved in receiving consignment
stock. So, *every* receipt of consignment stock will start by creating manual receipts.
Once the receipt is validated, the products enter your stock but still
belong to the owner. They dont impact your inventory valuation.
Choose a vendor to enter in the :guilabel:`Receive From` field, and then choose the same vendor to
enter in the :guilabel:`Assign Owner` field.
.. image:: owned_stock/owned_stock_03.png
:align: center
.. important::
Since the products received from the vendor will be owned by the same vendor, the
:guilabel:`Receive From` and :guilabel:`Assign Owner` fields must match.
Once the vendor-related fields are set, enter products into the :guilabel:`Product` lines, and set
the quantities to be received into the warehouse under the :guilabel:`Done` column. If the
:guilabel:`Units of Measure` feature is enabled, the :abbr:`UoM (Units of Measure)` can be changed,
as well. Once all the consignment stock has been received, :guilabel:`Validate` the receipt.
.. image:: owned_stock/owned-stock-receipt-fields.png
:align: center
:alt: Matching vendor fields in consignment Receipt creation.
Sell and deliver consignment stock
==================================
Once consignment stock has been received into the warehouse, it can be sold the same as any other
in-stock product that has the :guilabel:`Can Be Sold` option enabled on the product form.
To create a sales order, navigate to the :menuselection:`Sales` app, and from the
:guilabel:`Quotations` overview, click :guilabel:`Create`. Next, choose a customer to enter into the
:guilabel:`Customer` field.
.. note::
The :guilabel:`Customer` *must* be different from the :guilabel:`Vendor` that supplied the
consignment stock received (and stored) in the warehouse.
Add the consignment product under the :guilabel:`Product` column in the order lines, set the
:guilabel:`Quantity`, and fill out any other pertinent product details on the form. Once the
quotation is complete, click :guilabel:`Confirm`.
.. image:: owned_stock/owned-stock-sales-order.png
:align: center
:alt: Sales order of consignment stock.
Once the :abbr:`RFQ (Request for Quotation)` has been confirmed, it will become a sales order. From
here, the products can be delivered by clicking on the :guilabel:`Delivery` smart button, and
selecting :guilabel:`Validate` to validate the delivery.
Traceability and reporting of consignment stock
===============================================
Although consignment stock is owned by the vendor who supplied it, and not by the company storing it
in their warehouse, consignment products will *still* appear in certain inventory reports.
To find inventory reports, go to :menuselection:`Inventory --> Reporting`, and choose a report to
view.
.. note::
Since the consignee does not actually own consigment stock, these products are *not* reflected
in the :guilabel:`Stock Valuation` report, and have no impact on the consignee's inventory
valuation.
Product moves report
--------------------
To view all information about on-hand stock moves, navigate to the the :guilabel:`Product Moves`
dashboard by going to :menuselection:`Inventory --> Reporting --> Product Moves`. For consignment
products, the information in this report is the same as any other product: the history
of its product moves can be reviewed; the :guilabel:`Quantity Done` and :guilabel:`Reference`
document are available; and its :guilabel:`Locations` are available, as well. The consignment stock
will originate from :guilabel:`Partner Location/Vendors`.
.. tip::
To view a consignment product's moves by ownership, select the :guilabel:`Group By` filter,
choose the :guilabel:`Add Custom Group` parameter, and then select :guilabel:`From Owner`, and
:guilabel:`Apply` to finish.
.. image:: owned_stock/owned-stock-moves-history.png
:align: center
:alt: Consignment stock moves history.
.. tip::
To see forecasted units of consignment stock, go to :menuselection:`Inventory --> Reporting -->
Forecasted Inventory`.
Stock on hand report
--------------------
View the :guilabel:`Stock On Hand` dashboard by navigating to :menuselection:`Inventory -->
Reporting --> Inventory Report`. From this report, the :guilabel:`Locations` of all stock on-hand
are displayed, in addition to the quantities per location. For consigment products, the
:guilabel:`Owner` column will be populated with the owner of those products, or the original vendor
who supplied the products in the first place.
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

@@ -1,11 +0,0 @@
:nosearch:
========================
Replenishment strategies
========================
.. toctree::
:titlesonly:
:glob:
replenishment_strategies/virtual_warehouses
@@ -1,53 +0,0 @@
===============================
Resupply from another Warehouse
===============================
Configuration
=============
In order to be able to resupply from another warehouse, you need to
activate \*multi-step routes\*.
.. image:: virtual_warehouses/virtual-warehouses-settings.png
:align: center
:alt: Enable Multi-Step Routes in an Odoo database's settings
You can then access your warehouses via :menuselection:`Inventory --> Configuration -->
Warehouses`.
Enter the warehouse which should be resupplied by another one. You will
have the possibility to directly indicate through which warehouse it
gets resupplied.
.. image:: virtual_warehouses/virtual_warehouses_02.png
:align: center
By activating this option, a new route will now be available on your
products \*Supply Product from Second warehouse\*. It can now be
selected, along with either a \*reordering rule\* or a \*make to
order\*.
.. image:: virtual_warehouses/virtual_warehouses_03.png
:align: center
For the demonstration, I set a reordering rule with a minimum of 5 units
in stock and a maximum of 10 units in stock, having currently 0 units on
hand. I will run the scheduler by going to :menuselection:`Inventory --> Operations -->
Run scheduler`.
.. image:: virtual_warehouses/virtual_warehouses_04.png
:align: center
The system automatically creates two pickings, one \*delivery order\*
from my Second Warehouse which contains the necessary products, and a
receipt in my main warehouse WH/Stock for the same products. The source
document is the \*reordering rule\* which triggered the route \*Supply
Product from Second warehouse\*.
.. image:: virtual_warehouses/virtual_warehouses_05.png
:align: center
.. image:: virtual_warehouses/virtual_warehouses_06.png
:align: center
.. image:: virtual_warehouses/virtual_warehouses_07.png
:align: center
@@ -8,5 +8,6 @@ Warehouses
:titlesonly:
:glob:
warehouses/warehouses_locations
warehouses/resupply_warehouses
warehouses/warehouse_replenishment_transfer
warehouses/warehouses_locations
@@ -0,0 +1,150 @@
========================================================
Transfer products between warehouses using replenishment
========================================================
For companies that use multiple warehouses, it is often necessary to transfer items between them.
This is referred to as an *inter-warehouse transfer*. Odoo *Inventory* handles the administrative
process of inter-warehouse transfers to ensure that inventory counts remain accurate during and
after the transfer. This document will detail the method for conducting an inter-warehouse transfer
using replenishment.
Configure warehouses for inter-warehouse replenishment
======================================================
First, ensure the :guilabel:`Multi-Step Routes` setting is enabled by navigating to
:menuselection:`Inventory --> Configuration --> Settings`, and then check the box under the
:guilabel:`Warehouse` tab. This will provide additional configuration options when creating a second
warehouse that are needed for inter-warehouse replenishment.
By default, Odoo comes with a main warehouse already configured. If an additional warehouse has not
already been created, do so now from the :guilabel:`Inventory` module by selecting
:menuselection:`Configuration --> Warehouses --> Create`. Otherwise, select the warehouse that
products will be transferred to from the :guilabel:`Warehouses` page and then click :guilabel:`Edit`
to change its settings. Configure the warehouse as follows:
- :guilabel:`Warehouse`: choose a name that is not already being used for another warehouse (e.g.
`Alternative Warehouse`)
- :guilabel:`Short Name`: choose a short name by which the warehouse will be identified (e.g.
`ALT_WH`)
Click :guilabel:`Save` and the new warehouse will be created. In addition, a new :guilabel:`Resupply
From` field will appear on the warehouse's form. Click :guilabel:`Edit` and then check the box next
to the warehouse that will be used to resupply the warehouse that is currently being configured.
.. image:: warehouse_replenishment_transfer/new-warehouse-configuration.png
:align: center
:alt: A warehouse settings form configured to allow resupplying between warehouses.
.. note::
For the purposes of this demonstration, the warehouse that products are transferred from
(outgoing) will be titled "San Francisco", and the warehouse that products are transferred to
(incoming) will be titled "San Francisco 2".
Configure products for inter-warehouse replenishment
====================================================
Products must also be configured properly in order for them to be transferred between warehouses.
Navigate to :menuselection:`Inventory --> Products --> Products` and select an existing product or
:guilabel:`Create` a new one, if necessary.
Then, on the product form, go to the :guilabel:`Inventory` tab and enable the checkbox for
:guilabel:`X: Supply Product from Y`, with *X* being the warehouse receiving the transferred
products and *Y* being the warehouse that products are transferred from.
.. image:: warehouse_replenishment_transfer/product-transfer-configuration.png
:align: center
:alt: Enable the checkbox to resupply one warehouse from another.
Replenish one warehouse from another
====================================
Starting in the :menuselection:`Inventory` module, select :menuselection:`Products --> Products` and
then choose the product that will be replenished. Click the :guilabel:`Replenish` button on the top
left of the product page and fill out the pop-up form as follows:
- :guilabel:`Quantity`: the number of units that will be sent to the warehouse being replenished
- :guilabel:`Scheduled Date`: the date that the replenishment is scheduled to take place
- :guilabel:`Warehouse`: the warehouse that will be replenished
- :guilabel:`Preferred Routes`: select `X: Supply Product from Y`, with *X* being the warehouse to
be replenished and *Y* being the warehouse that the product will be transferred from
.. image:: warehouse_replenishment_transfer/product-replenishment-form.png
:align: center
:alt: The form for replenishing a product.
Click :guilabel:`Confirm` and a delivery order will be created for the outgoing warehouse along with
a receipt for the warehouse that will receive the product. Depending on the configuration settings
for the outgoing and incoming warehouses, processing delivery orders and receipts will require
between one and three steps. This document will detail how to process one-step deliveries and
receipts.
Process the delivery order
--------------------------
The first stage of a replenishment order is processing the delivery from the warehouse that the
product is being transferred from. On the :menuselection:`Inventory` dashboard, select the
:guilabel:`X to Process` button on the :guilabel:`Delivery Orders` card for the outgoing warehouse,
then the delivery order created for the replenishment. On the delivery order page, click the
:guilabel:`Check Availability` button in the top left to reserve the quantity of the product to be
transferred. Once the delivery has been dispatched, click the :guilabel:`Validate` button to
register the quantities shipped.
.. image:: warehouse_replenishment_transfer/delivery-orders-card.png
:align: center
:alt: The delivery orders card for the outgoing warehouse.
Process the receipt
-------------------
Once the goods arrive at the incoming warehouse, the receipt created for that warehouse must be
processed as well. Return to the :menuselection:`Inventory` dashboard and select the :guilabel:`X to
Process` button on the :guilabel:`Receipts` card for the incoming warehouse, then the receipt
created for the replenishment. On the receipt page, click the :guilabel:`Validate` button in the top
left of the page to register the quantities received.
.. image:: warehouse_replenishment_transfer/receipts-card.png
:align: center
:alt: The delivery orders card for the outgoing warehouse.
After processing the receipt, the products transferred will now appear in the inventory of the
incoming warehouse. The stock numbers for both warehouses can be viewed by returning to the product
page and selecting the :guilabel:`X Units On Hand` button at the top of the screen.
Automate inter-warehouse replenishment
======================================
Using reordering rules, it is possible to automate the process of replenishing one warehouse from
another.
To get started, navigate to :menuselection:`Inventory --> Products --> Products`, and then
choose the product that will be replenished. From the product page, select the :guilabel:`Reordering
Rules` smart button at the top of the form, and then on the next page, click :guilabel:`Create` to
configure the form as follows:
- :guilabel:`Location`: the location that the reordering rule will replenish when triggered, in this
case, the incoming warehouse
- :guilabel:`Min Quantity`: when the quantity on hand at the incoming warehouse falls below this
number, the reordering rule will be triggered
- :guilabel:`Max Quantity`: when the reordering rule is triggered, the product will be replenished
at the incoming warehouse up to this quantity
- :guilabel:`Multiple Quantity`: specify if the product should be replenished in batches of a
certain quantity; for example, a product could be replenished in batches of 20
- :guilabel:`UoM`: the unit of measure used for reordering the product; this value can simply be
`Units`, or a specific unit of measurement for weight, length, etc.
.. image:: warehouse_replenishment_transfer/reordering-rule-configuration.png
:align: center
:alt: A fully configured reordering rule.
Finish by clicking :guilabel:`Save` and the reordering rule will be created. Now, when the scheduler
runs automatically each day, a transfer will be created for each reordering rule that has been
triggered.
.. tip::
To manually trigger reordering rules, start from the :menuselection:`Inventory` module and select
:menuselection:`Operation --> Run Scheduler`, then click the green :guilabel:`Run Scheduler`
button in the pop-up that appears.
After the scheduler runs, a delivery order and receipt will be created for the outgoing and incoming
warehouses, respectively. Both the delivery order and receipt should be processed using the same
method as detailed above.
@@ -9,6 +9,5 @@ Concepts
:glob:
concepts/use_routes
concepts/inter_warehouse
concepts/cross_dock
concepts/stock_warehouses
@@ -1,71 +0,0 @@
=========================
Inter-warehouse transfers
=========================
When owning several warehouses, goods might need to be transferred from one warehouse to another.
This type of transfer is called an *inter-warehouse transfer*. While physically performing the
inter-warehouse transfer might be simple, the administrative part can be complex. Fortunately, Odoo
comes with an intuitive flow that helps save time when registering inter-warehouse transfers.
Create an internal transfer
===========================
The following paragraphs detail a sample inter-warehouse transfer, referred to as an *internal
transfer*, use case. The sample use case assumes that the user has already configured their second
warehouse.
To transfer eight units of a product from the first warehouse to another one, proceed as follows:
From the :guilabel:`Inventory` dashboard, select an internal movement operation of one of the two
warehouses. To do so, click on the three vertical dots icon on the top right corner of the
operation card and select :guilabel:`Planned Transfer`.
.. image:: inter_warehouse/internal-transfer-choice.png
:align: center
:alt: View of the choice between planned transfer and immediate transfer.
On the new planned transfer form, select the :guilabel:`Source Location` (in this case, the first
warehouse) and the :guilabel:`Destination Location` (in this case, the second warehouse).
Next, add the products that will be transferred by clicking on :guilabel:`Add a line`, then click
on :guilabel:`Save` and :guilabel:`Mark as ToDo` once done. After that, Odoo puts the transfer in
the :guilabel:`Waiting` status. Then, click on :guilabel:`Reserve` to reserve the number of
products in the source warehouse.
.. image:: inter_warehouse/planned-internal-transfer.png
:align: center
:alt: View of the internal transfer form.
.. note::
If :guilabel:`Immediate Transfer` was selected instead of :guilabel:`Planned Transfer`, Odoo
processes the transfer automatically after the :guilabel:`Validate` button is clicked on the
internal transfer form.
It is also possible to manually transfer each product:
#. On the :guilabel:`Inventory` dashboard, open the souce location's internal transfer operation
page.
.. image:: inter_warehouse/in-progress-internal-transfer.png
:align: center
:alt: View of the dashboard with a zoom of the pending internal transfer.
#. Open the desired transfer order form.
.. image:: inter_warehouse/internal-transfers-list.png
:align: center
:alt: View of the pending internal transfers list.
#. Click on the pencil icon in the lower right corner to open the operation details window. In this
new window, the quantity of products can be manually set.
.. image:: inter_warehouse/backorder.png
:align: center
:alt: View of a backorder pop-up window because all products are not moved at the same time.
.. note::
To process the transfer order partially (e.g., a part of the products can't be shipped yet due
to an unexpected event), Odoo automatically asks if a *backorder* should be created.
- Create a backorder if it is expected that the remaining products will be processed later.
- Do not create a backorder if the remaining products will not be supplied/received.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

@@ -8,3 +8,4 @@ Quality control
:titlesonly:
quality_control/quality_control_points
quality_control/quality_alerts
@@ -0,0 +1,79 @@
=====================
Create quality alerts
=====================
Configuring quality control points is a great way to ensure that quality checks are performed at
routine stages during specific operations. However, quality issues can often appear outside of these
scheduled checks. Using Odoo *Quality*, users can create quality alerts for issues that are not
detected by automated processes.
.. seealso::
:doc:`Add quality control points <quality_control_points>`
Find and fill out the quality alerts form
=========================================
In some situations, it is necessary to manually create quality alerts within the *Quality* module.
.. example::
A helpdesk user who is notified of a product defect by a customer ticket can create an alert that
brings the issue to the attention of the relevant quality team.
To create a new quality alert, start from the :menuselection:`Quality` module and select
:menuselection:`Quality Control --> Quality Alerts --> Create`. The quality alert form can then be
filled out as follows:
- :guilabel:`Title`: choose a concise, yet descriptive title for the quality alert
- :guilabel:`Product`: the product about which the quality alert is being created
- :guilabel:`Product Variant`: the specific variant of the product that has the quality issue, if
applicable
- :guilabel:`Lot`: the lot number assigned to the product
- :guilabel:`Work Center`: the work center where the quality issue originated
- :guilabel:`Picking`: the picking operation during which the quality issue originated
- :guilabel:`Team`: the quality team that will be notified by the quality alert
- :guilabel:`Responsible`: the individual responsible for managing the quality alert
- :guilabel:`Tags`: classify the quality alert based on user-created tags
- :guilabel:`Root Cause`: the cause of the quality issue, if known
- :guilabel:`Priority`: assign a priority between one and three stars to ensure more
urgent issues are prioritized
The tabs at the bottom of the form can be used to provide additional information to quality teams:
- :guilabel:`Description`: provide additional details about the quality issue
- :guilabel:`Corrective Actions`: the method for fixing affected products
- :guilabel:`Preventive Actions`: procedures for preventing the issue from occurring in
the future
- :guilabel:`Miscellaneous`: the product vendor (if applicable), the company that produces
the product, and the date assigned
.. image:: quality_alerts/quality-alert-form.png
:align: center
:alt: An example of a completed quality alert form.
Add quality alerts during the manufacturing process
===================================================
Odoo enables manufacturing employees to create quality alerts within a work order without accessing
the *Quality* module. From the work order tablet view, click the :guilabel:` ☰ ` hamburger menu
icon in the top left corner and select :guilabel:`Quality Alert`.
.. image:: quality_alerts/work-order-tablet-view-menu-button.png
:align: center
:alt: Access the work order menu.
The quality alert form can then be filled out as detailed in the previous section. After saving the
form, a new alert will appear on the :guilabel:`Quality Alerts` dashboard that can be found through
the :menuselection:`Quality --> Quality Control` menu.
Manage existing quality alerts
==============================
By default, quality alerts are organized in a kanban board view. The stages of the kanban board are
fully configurable and alerts can be moved from one stage to the next by dragging and dropping or
from within each alert. Additional options are available for viewing alerts, including graph,
calendar, and pivot table views.
.. tip::
Filter alerts based on diverse criteria like date assigned or date closed. Alerts can also be
grouped by quality team, root cause, or other parameters found under the :guilabel:`Filters`
button menu.
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -1,110 +1,128 @@
=================================================
Control and know when vendor bills should be paid
=================================================
=====================
Bill control policies
=====================
With Odoo, you can define how your vendor bills are controlled. For each purchase order, you can
decide when the related vendor bill should be paid: either before or after you have received your
products. You can also check at a glance what is the billing status of each purchase order.
In Odoo, the *bill control* policy determines the quantities billed by vendors on every purchase
order, for ordered or received quantities. The policy selected in the settings will act as the
default value and will be applied to any new product created.
With the 3-way matching feature, Odoo compares the information appearing on the *Purchase Order*,
the *Vendor Bill* and the *Receipt*, and lets you know if you should pay the bill. This way you can
avoid paying incorrect or fraudulent vendor bills.
Configuration
=============
Vendor bills default control policy
===================================
To view the default bill control policy and make changes, go to :menuselection:`Purchase -->
Configuration --> Settings`, and scroll down to the :guilabel:`Invoicing` section. Here, there are
the two :guilabel:`Bill Control` policy options: :guilabel:`Ordered quantities` and
:guilabel:`Received quantities`.
As a first step, open your Purchase app and go to :menuselection:`Configuration --> Settings` to set
the default bill control policy for all the products created onwards.
The policy selected will be the default for any new product created. The definition of each policy
is as follows:
.. image:: control_bills/control-bills-quantities-default-setting.png
- :guilabel:`Ordered quantities`: creates a vendor bill as soon as a purchase order is confirmed.
The products and quantities in the purchase order are used to generate a draft bill.
- :guilabel:`Received quantities`: a bill is created only *after* part of the total order has been
received. The products and quantities *received* are used to generate a draft bill. An error
message will appear if creation of a vendor bill is attempted without receiving anything.
.. image:: control_bills/bill-control-policy-error-message.png
:align: center
:alt: Vendor bills default control setting for new products in Odoo Purchase
:alt: Bill control policy draft bill error message.
By selecting *On ordered quantities*, you can create a vendor bill as soon as you confirm an order.
The quantities mentioned in the purchase order are used to generate the draft bill.
.. note::
If one or two products need a different control policy, the default bill control setting can be
overridden by going to the :guilabel:`Purchase` tab in a product's template and modifying its
:guilabel:`Control Policy` field.
If you choose *On received quantities* instead, you can only create one once you have at least
received some of the products you have ordered. The quantities you have received are used to
generate the draft bill. If you try to create one without having received any product, you get an
error message.
Example flow: Ordered quantities
--------------------------------
.. image:: control_bills/control-bills-no-invoiceable-line.png
To complete an example workflow using the *ordered quantities* bill control policy, first go to
:menuselection:`Purchase --> Configuration --> Settings`, scroll down to the :guilabel:`Invoicing`
section, and select :guilabel:`Ordered quantities`. Then, :guilabel:`Save` changes.
In the :guilabel:`Purchase` app, create a new :abbr:`RFQ (Request for Quotation)`. Fill out the
information on the quotation form, add products to the invoice lines, and click :guilabel:`Confirm
Order`. Then, click :guilabel:`Create Bill`. Since the policy is set to *ordered quantities*, the
draft bill can be confirmed as soon as it is created, without any products actually being received.
Example flow: Received quantities
---------------------------------
To complete an example workflow using the *received quantities* bill control policy, first go to
:menuselection:`Purchase --> Configuration --> Settings`, scroll down to the :guilabel:`Invoicing`
section, and select :guilabel:`Received quantities`. Then, :guilabel:`Save` changes.
In the :guilabel:`Purchase` app, create a new :abbr:`RFQ (Request for Quotation)`. Fill out the
information on the quotation form, add products to the invoice lines, and click :guilabel:`Confirm
Order`. Then, click on the :guilabel:`Receipt smart button`. Set the quantities in the
:guilabel:`Done` column to match the quantities in the :guilabel:`Demand` column, and
:guilabel:`Validate` the changes. Then, in the purchase order, click :guilabel:`Create Bill` and
:guilabel:`Confirm`. Since the policy is set to *received quantities*, the draft bill can be
confirmed *only* when at least some of the quantities are received.
3-way matching
==============
Activating :guilabel:`3-way matching` ensures that vendor bills are only paid once some or all of
the products included in the purchase order have actually been received. To activate it, go to
:menuselection:`Purchase --> Configuration --> Settings`, and scroll down to the
:guilabel:`Invoicing` section. Then, click :guilabel:`3-way matching: purchases, receptions, and
bills`.
.. note::
3-way matching is *only* intended to work when the bill control policy is set to *received
quantities*.
Pay vendor bills with 3-way matching
------------------------------------
When :guilabel:`3-way matching` is activated, vendor bills will display the :guilabel:`Should Be
Paid` field under the :guilabel:`Other Info` tab. When a new vendor bill is created, the field will
be set to :guilabel:`Yes`, since a bill can't be created until at least some of the products
included in a purchase order have been received.
.. image:: control_bills/vendor-bill-should-be-paid.png
:align: center
:alt: No invoiceable line error message in Odoo Purchase
:alt: Draft bill should be paid field status.
Change a specific product's control policy
------------------------------------------
.. note::
If the total quantity of products from a purchase order has not been received, Odoo only includes
the products that *have* been received in the draft vendor bill.
If you want to modify a specific product's control policy, go to :menuselection:`Products -->
Products`, open it, click on *Edit* and go to the *Purchase tab*. There you can change a product's
default bill control policy.
Draft bills can be edited to increase the billed quantity, change the price of the products in the
bill, and add additional products to the bill. If this is done, the :guilabel:`Should Be Paid` field
status will be set to :guilabel:`Exception`. This means that Odoo notices the discrepancy, but
doesn't block the changes or display an error message, since there might be a valid reason for
making changes to the draft bill.
.. image:: control_bills/control-bills-quantities-on-product.png
:align: center
:alt: Vendor bills default control setting for new products in Odoo Purchase
Once payment has been registered for a vendor bill and displays the green :guilabel:`Paid` banner,
the :guilabel:`Should Be Paid` field status will be set to :guilabel:`No`.
.. tip::
The :guilabel:`Should Be Paid` status on bills is set automatically by Odoo. However, the status
can be changed manually by clicking the field's drop-down menu inside the :guilabel:`Other Info`
tab.
View a purchase order's billing status
======================================
Once you confirm an order, you can view its *Billing Status* by going to the *Other Information*
tab.
When a purchase order is confirmed, its :guilabel:`Billing Status` can be viewed under the
:guilabel:`Other Information` tab on the purchase order form.
.. image:: control_bills/control-bills-billing-status.png
.. image:: control_bills/billing-status-nothing-to-bill.png
:align: center
:alt: Purchase order billing status in Odoo Purchase
:alt: Purchase order billing status.
Below you can find a list of the different *Billing Status*, and when they are displayed, depending
on the products' bill control policy.
Below is a list of the different statuses that a :guilabel:`Billing Status` could appear as and when
they are displayed, depending on the bill control policy used.
+--------------------+--------------------------------------------------------------------------+
| **Billing status** | **Conditions** |
| +------------------------------------------------+-------------------------+
| | *On received quantities* | *On ordered quantities* |
+--------------------+------------------------------------------------+-------------------------+
| *Nothing to Bill* | PO confirmed; no products received | *(Not applicable)* |
+--------------------+------------------------------------------------+-------------------------+
| *Waiting Bills* | All/some products received; bill not created | PO confirmed |
+--------------------+------------------------------------------------+-------------------------+
| *Fully Billed* | All/some products received; draft bill created | Draft bill created |
+--------------------+------------------------------------------------+-------------------------+
Determine when to pay with 3-way matching
=========================================
First, go to :menuselection:`Configuration --> Settings` and activate *3-way matching*.
.. image:: control_bills/control-bills-3-way-matching-setting.png
:align: center
:alt: 3-way-matching setting in Odoo Purchase
.. note::
3-way matching is intended to work with the bill control policy set to *On received quantities*.
Should I pay the vendor bill?
-----------------------------
With the feature activated, your vendor bills now display the *Should Be Paid* field under the
*Other info* tab.
.. image:: control_bills/control-bills-should-be-paid.png
:align: center
:alt: Should Be Paid field under a vendor bill in Odoo Purchase
As you can't create a bill until you have received your products - and if you haven't received all
of them, Odoo only includes the products you have received in the draft bill - the *Should Be Paid*
status is set to *Yes* when you create one.
If you edit a draft bill to increase the billed quantity, change the price, or add other products,
the *Should Be Paid* status is set to *Exception*. It means Odoo notices the discrepancy, but that
you might have a valid reason to have done so.
Once the payment has been registered and mentions *Paid*, the *Should Be Paid* status is set to
*No*.
.. image:: control_bills/control-bills-paid-status.png
:align: center
:alt: Paid bill in Odoo Purchase
.. tip::
The *Should Be Paid* status is set automatically by Odoo. However, you can change the status
manually when you are viewing a bill in edit mode.
+------------------------------+--------------------------------------------------------------------------+
| :guilabel:`Billing Status` | **Conditions** |
| +------------------------------------------------+-------------------------+
| | *On received quantities* | *On ordered quantities* |
+------------------------------+------------------------------------------------+-------------------------+
| :guilabel:`Nothing to Bill` | PO confirmed; no products received | *Not applicable* |
+------------------------------+------------------------------------------------+-------------------------+
| :guilabel:`Waiting Bills` | All/some products received; bill not created | PO confirmed |
+------------------------------+------------------------------------------------+-------------------------+
| :guilabel:`Fully Billed` | All/some products received; draft bill created | Draft bill created |
+------------------------------+------------------------------------------------+-------------------------+
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@@ -1,96 +1,94 @@
============================================
Dont run out of stock with reordering rules
============================================
==========================
Configure reordering rules
==========================
To make sure you never run out of stock, you can define *Reordering Rules* on products. Thanks to
them, Odoo can help you replenish your stock automatically when it reaches set quantities or
whenever a sales order is created.
For certain products, it is necessary to ensure that there is always a minimum amount available on
hand at any given time. By adding a reordering rule to a product, it is possible to automate the
reordering process so that a purchase order is automatically created whenever the amount on hand
falls below a set threshold.
.. important:: You need to install the *Inventory app* to use reordering rules.
.. important::
The *Inventory* module must be installed to use reordering rules.
Configure your storable product
===============================
Configure products for reordering
=================================
Open or create a product with its *Product Type* set to *Storable Product*.
Products must be configured in a specific way before a reordering rule can be added to them.
.. image:: reordering/reordering-storable-product.png
Starting from the :menuselection:`Inventory`, :menuselection:`Manufacturing`,
:menuselection:`Purchase`, or :menuselection:`Sales` module, navigate to :menuselection:`Products
--> Products` and then click :guilabel:`Create` to make a new product. Alternatively, find a product
that already exists in the database and click into it's product form.
Next, on the product form, enable reordering by checking the :guilabel:`Can be Purchased` option
underneathe the :guilabel:`Product Name` field. Finally, set the :guilabel:`Product Type` to
`Storable Product` under the :guilabel:`General Information` tab.
.. image:: reordering/product-configured-for-reordering.png
:align: center
:alt: Set the product type in Odoo
:alt: Configure a product for reordering in Odoo.
As you are purchasing this product from a vendor, go to the product's *Purchase tab* and add a
vendor by clicking on *Add a line*. You can add multiple vendors, but make sure to order them
correctly, since reordering rules always use the first vendor in a list. You can add a price, but it
isn't necessary for the reordering rule to work. In addition, you can add a minimum quantity you
must order to benefit from that price.
Add a reordering rule to a product
==================================
After properly configuring a product, a reordering rule can be added to it by selecting the now
visible :guilabel:`Reordering Rules` tab at the top of that product's form, and then clicking
:guilabel:`Create` on the :guilabel:`Reordering Rules` dashboard.
.. image:: reordering/reordering-rules-tab.png
:align: center
:alt: Access reordering rules for a product from the product page in Odoo.
Once created, the reordering rule can be configured to generate purchase orders automatically by
defining the following fields:
- :guilabel:`Location` specifies where the ordered quantities should be stored once they are
received and entered into stock.
- :guilabel:`Min Quantity` sets the lower threshold for the reordering rule while :guilabel:`Max
Quantity` sets the upper threshold. If the stock on hand falls below the minimum quantity, a new
purchase order will be created to replenish it up to the maximum quantity.
.. example::
If :guilabel:`Min Quantity` is set to `5` and :guilabel:`Max Quantity` is set to `25` and the
stock on hand falls to four, a purchase order will be created for 21 units of the product.
- :guilabel:`Multiple Quantity` can be configured so that products are only ordered in batches of a
certain quantity. Depending on the number entered, this can result in the creation of a purchase
order that would put the resulting stock on hand above what is specified in the :guilabel:`Max
Quantity` field.
.. example::
If :guilabel:`Max Quantity` is set to `100` but :guilabel:`Multiple Quantity` is set to order
the product in batches of `200`, a purchase order will be created for 200 units of the
product.
- :guilabel:`UoM` specifies the unit of measurement by which the quantity will be ordered. For
discrete products, this should be set to `Units`. However, it can also be set to units of
measurement like `Volume` or `Weight` for non-discrete products like water or bricks.
.. image:: reordering/reordering-rule-configuration.png
:align: center
:alt: Configure the reordering rule in Odoo.
Manually trigger reordering rules using the scheduler
=====================================================
Reordering rules will be automatically triggered by the scheduler, which runs once a day by
default. To trigger reordering rules manually, navigate to :menuselection:`Inventory --> Operations
--> Run Scheduler`. On the pop-up window, confirm the manual action by clicking :guilabel:`Run
Scheduler`.
.. note::
If the quantity Odoo has to reorder doesn't match the minimum quantity specified, Odoo selects
the next vendor on your list. If you don't have another vendor on your list, the reordering rule
won't work. For that purpose, you can add the same vendor multiple times with different prices
for different quantities.
Manually triggering reordering rules will also trigger any other scheduled actions.
.. image:: reordering/reordering-product-vendor.png
:align: center
:alt: Add vendor to a product in Odoo
Manage reordering rules
=======================
.. tip::
By default, a draft purchase order is created. However, if you have enabled *Purchase
Agreements*, you can *Propose a call for tenders* instead as shown in the image above. For more
information, see :doc:`../manage_deals/agreements`
To manage the reordering rules for a single product, navigate to that product page's form and select
the :guilabel:`Reordering Rules` tab at the top of the form.
Next, make sure the correct route is selected under the Inventory tab of your product. If you
created your product within the Purchase app, the *Buy* route is selected by default. If you are
looking to dropship your product, select *Dropship*.
.. image:: reordering/reordering-product-routes.png
:align: center
:alt: Choose product routes in Odoo
Set up your reordering rule
===========================
Open your product and click on the *Reordering Rules* button.
.. image:: reordering/reordering-button.png
:align: center
:alt: Reordering rules button on a product in Odoo
Once you are on the product's reordering rules page, click on *Create*.
.. tip::
You can access and create reordering rules from :menuselection:`Inventory --> Configuration -->
Reordering Rules` and from :menuselection:`Inventory --> Operations --> Replenishment`. By
default, the replenishment view presents a summary of all the products that you might need to
purchase to fulfill your sales orders. From there, you can ask Odoo with a single click to order
a product once or automate all orders for that product, future orders included.
Define quantities
-----------------
You can set a **minimum quantity** your stock should always have. Once set, if your stock goes below
the minimum quantity, and if you selected the Buy route, a request for quotation is automatically
generated to reach that minimum quantity, plus any additional quantity needed to fill in a sales
order for example.
If you set a **maximum quantity**, every time the product has to be replenished, enough products are
reordered to reach the maximum quantity.
If you want to order only the exact quantity needed to fill in a sales order for example, set both
both the minimum and maximum quantity to **zero**. The quantity mentioned in the sales order is then
used by the reordering rule.
You can also add a **quantity multiple** to only order products in batches of a certain quantity.
Click on the optional columns drop-down menu, and select *Multiple Quantity* to show the column.
Bear in mind that you might go over the maximum quantity you set if your rule includes a quantity
multiple, as Odoo orders enough products to reach the maximum quantity and respect the set quantity
multiple.
.. image:: reordering/reordering-create-rule.png
:align: center
:alt: Create a reordering rule in Odoo
.. note:: If you selected multiple routes for the same product under its Inventory tab, make sure to
select your *Preferred Route* on your reordering rule by clicking on the optional columns
drop-down menu, adding the *Preferred Route* column, and selecting the right route.
.. Add link when inventory doc on replenishment is updated for v14. .. seealso:: - :doc:`../../..inventory/xxx/xxx`
To manage all reordering rules for every product, go to :menuselection:`Inventory --> Configuration
--> Reordering Rules`. From this dashboard, typical bulk actions in Odoo can be performed such as
exporting data or archiving rules that are no longer needed. As well, the :guilabel:`Filters`,
:guilabel:`Group By` or triple-dotted menu on the form are available to search for and/or organize
the reordering rules as desired.
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

@@ -13,4 +13,5 @@ SMS Marketing
.. toctree::
:titlesonly:
sms_marketing/essentials
sms_marketing/pricing

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