-
Notifications
You must be signed in to change notification settings - Fork 10.6k
[WIP] update suggest documentation #15368
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jeanschoenlaub
wants to merge
1
commit into
19.0
Choose a base branch
from
19.0-purchase-suggestions-jesc
base: 19.0
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+42
−62
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -20,33 +20,41 @@ Key parameters | |||||
| Demand calculation | ||||||
| ================== | ||||||
|
|
||||||
| To find the *average daily demand*, Odoo sums all :ref:`validated deliveries | ||||||
| To estimate demand, Odoo sums all :ref:`validated deliveries | ||||||
| <inventory/delivery/one-step>`, :ref:`components consumed in manufacturing orders | ||||||
| <manufacturing/basic_setup/setup-components>` (MOs), or used to :doc:`resupply subcontractors | ||||||
| <../../manufacturing/subcontracting/subcontracting_resupply>` in the *Based on* period and divides | ||||||
| that total by the number of days in the *Based on* period. Lastly, that value is multiplied by the | ||||||
| *Factor* to determine volume. | ||||||
|
|
||||||
| .. tip:: | ||||||
| In a :ref:`multi-warehouse <purchase/advanced/example-wh-suggestion>` setup, an *In* field | ||||||
| appears. Choose a specific warehouse or leave blank to use all warehouses to calculate demand | ||||||
| accordingly. | ||||||
| <../../manufacturing/subcontracting/subcontracting_resupply>` coming from the warehouse specified | ||||||
| on the RFQ in the *Based on* period. The *average daily demand* is this sum of out-going moves | ||||||
| divided by the number of days in the *Based on* period, multiplied by *Factor*. The | ||||||
| *estimated demand* is the *average daily demand* multiplied by *Replenish For* days. | ||||||
|
|
||||||
| .. math:: | ||||||
| :class: overflow-scroll | ||||||
|
|
||||||
| Average~Daily~Demand = \frac{Delivered~or~Consumed~Items}{Based~on~Days} \times Factor | ||||||
| \\ \\ Estimated~Demand = Average~Daily~Demand \times Replenish~for~Days | ||||||
|
|
||||||
| .. note:: | ||||||
| Only :guilabel:`Assigned` or :guilabel:`Confirmed` moves are taken into account in | ||||||
| the *average daily demand* calculations, sales quotations or manufacturing orders | ||||||
| in :guilabel:`Draft` are not taken into account until validated. | ||||||
|
|
||||||
| .. tip:: | ||||||
| In a multi-warehouse setup, internal deliveries are also counted in demand estimation. | ||||||
| In the case of a central warehouse dispatching products to individual stores, | ||||||
| the *average daily demand* of the central warehouse will include internal transfers to | ||||||
| individual stores. | ||||||
|
|
||||||
| Recommended quantity | ||||||
| ==================== | ||||||
|
|
||||||
| To find the suggested quantity, Odoo multiplies the average by *Replenish for* days to get the | ||||||
| recommended quantity. | ||||||
| To find the suggested quantity, Odoo deducts the *estimated demand* from the current stock | ||||||
| available quantity and all incoming shipments. | ||||||
|
|
||||||
| .. math:: | ||||||
| :class: overflow-scroll | ||||||
|
|
||||||
| Recommended~Quantity = Average~Daily~Demand \times Replenish~for~Days | ||||||
| Recommended~Quantity = Estimated~Demand - (Available~Stock + Incoming~Stock) | ||||||
|
|
||||||
| .. example:: | ||||||
| In :ref:`example 1 <purchase/advanced/example-suggestion>`, Odoo recommends `19` units to | ||||||
|
|
@@ -83,17 +91,17 @@ In the |RFQ|, set the :guilabel:`Vendor` field to the chosen supplier. | |||||
| In the :guilabel:`Products` tab, click the :guilabel:`Catalog` button to view that vendor's items. | ||||||
|
|
||||||
| .. important:: | ||||||
| Verify that each product in the catalog is configured with the chosen vendor. | ||||||
| Verify that each product in the catalog is configured with the chosen vendor | ||||||
| and that the Purchase Order is in the |RFQ| stage | ||||||
|
|
||||||
| .. tip:: | ||||||
| By default, products listed in the product catalog are filtered by vendor. | ||||||
|
|
||||||
| Remove the filter in the search bar to view all items or use the built-in :icon:`oi-group` | ||||||
| :guilabel:`Group By` for :guilabel:`Product Category`. | ||||||
|
|
||||||
| Inside the :guilabel:`Catalog`, click :guilabel:`Suggest` in the upper-left corner to open the | ||||||
| :guilabel:`Suggest Quantities based on Sales & Demands` pop-up window. Complete its fields as | ||||||
| follows: | ||||||
| Inside the :guilabel:`Catalog`, toggle :guilabel:`Suggest` in the left sidebar to activate | ||||||
| the feature. Complete its fields as follows: | ||||||
|
|
||||||
| - :guilabel:`Replenish for`: Number of days intended to stock products. | ||||||
| - :guilabel:`Based on`: There are two inputs: | ||||||
|
|
@@ -103,12 +111,12 @@ follows: | |||||
|
|
||||||
| #. Growth factor %: scale the demand up or down (e.g., 120% for 20% growth, 30% for 70% drop). | ||||||
|
|
||||||
| - The total in the lower-right corner shows the order value. Odoo multiplies the vendor's *Unit | ||||||
| - The total in the bottom shows the order value. Odoo multiplies the vendor's *Unit | ||||||
| Price* by the suggested quantity. | ||||||
|
|
||||||
| Once the parameters are confirmed, click :guilabel:`Compute` to calculate recommended quantities, | ||||||
| which are auto-filled in each product's quantities in the catalog. Adjust amounts if needed, then | ||||||
| click :guilabel:`Back to Quotation` to confirm the final numbers on the |RFQ|. | ||||||
| Once the parameters are confirmed, click :guilabel:`Add All` to add all suggestion to the | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
| order. Adjust amounts if needed, then click :guilabel:`Back to Quotation` to confirm the final | ||||||
| numbers on the |RFQ|. | ||||||
|
|
||||||
| .. _purchase/advanced/example-suggestion: | ||||||
|
|
||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since the next two sections act as an example workflow, I would add a new H2 heading here (Example Workflow), to make it clearer. |
||||||
|
|
@@ -118,9 +126,6 @@ Recommend at 100% growth | |||||
| A company needs to replenish orchids for 14 days, referencing the last 30 days of historical data, | ||||||
| assuming the revenue growth is the same this month, at 100%. | ||||||
|
|
||||||
| .. image:: suggest/suggest-14.png | ||||||
| :alt: Compute suggestion for example 1. | ||||||
|
|
||||||
| Delivered/consumed within the period: | ||||||
|
|
||||||
| - 20 units delivered 15 days ago in a `WH/OUT` operation. | ||||||
|
|
@@ -152,69 +157,44 @@ Suggested quantity | |||||
| :alt: Suggestion to purchase 19 units. | ||||||
|
|
||||||
| Suggestion to purchase 19 orchids. Since the *Unit Price* is $3, :math:`$3 \times 19 = $57`, | ||||||
| which is the total amount displayed in the :guilabel:`Suggest Quantities based on Sales & | ||||||
| Demands` pop-up window. | ||||||
|
|
||||||
| Recommend at 120% growth | ||||||
| ------------------------ | ||||||
| which is the total amount displayed. | ||||||
|
|
||||||
| To plan for ordering roses this month, the company reviews the previous week's sales. Since a local | ||||||
| event is coming up, the company expects 120% growth. | ||||||
| Planning for Mother's Day | ||||||
| ------------------------- | ||||||
|
|
||||||
| .. image:: suggest/suggest-30.png | ||||||
| :alt: Compute suggestion for example 2. | ||||||
| To better plan for the upcoming Mother's day week, the company changes *Based on* to the | ||||||
| same month last year (May 2024). As the business has grown since then, they also decide to add | ||||||
| a 120% growth factor. | ||||||
|
|
||||||
| Variables | ||||||
| ~~~~~~~~~ | ||||||
|
|
||||||
| - Replenish for 30 days | ||||||
| - Based on: 7 days | ||||||
| - Replenish for 7 days | ||||||
| - Based on: May 2024, | ||||||
|
|
||||||
| - total delivered/consumed in the past week: 166 units | ||||||
| - total delivered/consumed in the entire May 2024 month: 361 units | ||||||
|
|
||||||
| - Factor: 120% | ||||||
|
|
||||||
| .. math:: | ||||||
|
|
||||||
| Average~Daily~Demand = \frac{166}{7} \times 1.20 \approx 28.46 \text{ units/day} | ||||||
| Average~Daily~Demand = \frac{361}{30} \times 1.20 \approx 14.44 \text{ units/day} | ||||||
|
|
||||||
| Suggested quantity | ||||||
| ~~~~~~~~~~~~~~~~~~ | ||||||
|
|
||||||
| .. math:: | ||||||
|
|
||||||
| Suggested~Quantity = 28.46 \times 30 \approx 853.8 \text{ (rounded to 854 units)} | ||||||
| Suggested~Quantity = 14.44 \times 7 \approx 101.08 \text{ (rounded up to 102 units)} | ||||||
|
|
||||||
| .. figure:: suggest/result-30.png | ||||||
| :alt: Suggestion to purchase 854 roses. | ||||||
| :alt: Suggestion to purchase 102 orchids. | ||||||
|
|
||||||
| Suggestion to purchase 854 roses. Each rose costs $4.58 with the chosen vendor, so :math:`$4.58 | ||||||
| \times 854 = $3911.32`. | ||||||
| Suggestion to purchase 102 orchids. Each orchid costs $3 with the chosen vendor, so | ||||||
| :math:`$3 \times 102 = $306`. | ||||||
|
|
||||||
| .. _purchase/advanced/example-wh-suggestion: | ||||||
|
|
||||||
| Recommend from specific warehouse | ||||||
| --------------------------------- | ||||||
|
|
||||||
| When there are multiple warehouses in a company, analyze delivered or consumed quantities in a | ||||||
| specific warehouse to narrow the results. This is particularly helpful when multiple warehouses | ||||||
| serve different communities, franchises, or branch stores. | ||||||
|
|
||||||
| To do that, ensure :doc:`multiple warehouses are set up | ||||||
| <../../inventory/warehouses_storage/inventory_management/warehouses>` and deliveries or :abbr:`MOs | ||||||
| (manufacturing orders)` are validated in each warehouse. | ||||||
|
|
||||||
| Navigate to the suggestion window by going to the :menuselection:`Purchase` app, clicking the | ||||||
| desired |RFQ|, clicking the :guilabel:`Catalog` button in the product line, and then clicking | ||||||
| :guilabel:`Suggest` in the upper-left corner. | ||||||
|
|
||||||
| With multiple warehouses set up, the :guilabel:`In` field becomes available, where the specific | ||||||
| warehouse can be selected to analyze quantities consumed only in the specific warehouse, or leave | ||||||
| the field blank to observe quantities across all warehouses. | ||||||
|
|
||||||
| .. image:: suggest/in-field.png | ||||||
| :alt: Show In field in the popup, displaying different warehouses to choose from. | ||||||
|
|
||||||
| Best practices | ||||||
| ============== | ||||||
|
|
||||||
|
|
||||||
Binary file modified
BIN
+2.24 KB
(120%)
content/applications/inventory_and_mrp/purchase/advanced/suggest/result-14.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+4.88 KB
(150%)
content/applications/inventory_and_mrp/purchase/advanced/suggest/result-30.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed
BIN
-13.3 KB
content/applications/inventory_and_mrp/purchase/advanced/suggest/suggest-14.png
Binary file not shown.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.