diff --git a/inventory/routes/concepts.rst b/inventory/routes/concepts.rst index 3de662b61..182fc9d2c 100644 --- a/inventory/routes/concepts.rst +++ b/inventory/routes/concepts.rst @@ -7,8 +7,7 @@ Concepts :glob: concepts/use_routes - concepts/procurement_rule - concepts/push_rule + concepts/pull_push_rules concepts/inter_warehouse concepts/cross_dock concepts/stock_warehouses \ No newline at end of file diff --git a/inventory/routes/concepts/media/procurement_rule01.png b/inventory/routes/concepts/media/procurement_rule01.png deleted file mode 100644 index 5e47542ec..000000000 Binary files a/inventory/routes/concepts/media/procurement_rule01.png and /dev/null differ diff --git a/inventory/routes/concepts/media/procurement_rule02.png b/inventory/routes/concepts/media/procurement_rule02.png deleted file mode 100644 index 8a582a563..000000000 Binary files a/inventory/routes/concepts/media/procurement_rule02.png and /dev/null differ diff --git a/inventory/routes/concepts/media/procurement_rule03.png b/inventory/routes/concepts/media/procurement_rule03.png deleted file mode 100644 index 870fa4fa4..000000000 Binary files a/inventory/routes/concepts/media/procurement_rule03.png and /dev/null differ diff --git a/inventory/routes/concepts/media/pull_push_rules_01.png b/inventory/routes/concepts/media/pull_push_rules_01.png new file mode 100644 index 000000000..860e1f969 Binary files /dev/null and b/inventory/routes/concepts/media/pull_push_rules_01.png differ diff --git a/inventory/routes/concepts/media/pull_push_rules_02.png b/inventory/routes/concepts/media/pull_push_rules_02.png new file mode 100644 index 000000000..d17e6cf49 Binary files /dev/null and b/inventory/routes/concepts/media/pull_push_rules_02.png differ diff --git a/inventory/routes/concepts/media/pull_push_rules_03.png b/inventory/routes/concepts/media/pull_push_rules_03.png new file mode 100644 index 000000000..9700745b2 Binary files /dev/null and b/inventory/routes/concepts/media/pull_push_rules_03.png differ diff --git a/inventory/routes/concepts/media/push_rule01.png b/inventory/routes/concepts/media/push_rule01.png deleted file mode 100644 index 5e47542ec..000000000 Binary files a/inventory/routes/concepts/media/push_rule01.png and /dev/null differ diff --git a/inventory/routes/concepts/media/push_rule02.png b/inventory/routes/concepts/media/push_rule02.png deleted file mode 100644 index 6efc961ea..000000000 Binary files a/inventory/routes/concepts/media/push_rule02.png and /dev/null differ diff --git a/inventory/routes/concepts/media/push_rule03.png b/inventory/routes/concepts/media/push_rule03.png deleted file mode 100644 index 3b012066f..000000000 Binary files a/inventory/routes/concepts/media/push_rule03.png and /dev/null differ diff --git a/inventory/routes/concepts/media/push_rule04.png b/inventory/routes/concepts/media/push_rule04.png deleted file mode 100644 index d458da311..000000000 Binary files a/inventory/routes/concepts/media/push_rule04.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes01.png b/inventory/routes/concepts/media/use_routes01.png deleted file mode 100644 index 5e47542ec..000000000 Binary files a/inventory/routes/concepts/media/use_routes01.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes02.png b/inventory/routes/concepts/media/use_routes02.png deleted file mode 100644 index ed1accd99..000000000 Binary files a/inventory/routes/concepts/media/use_routes02.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes03.png b/inventory/routes/concepts/media/use_routes03.png deleted file mode 100644 index 72b5a58b8..000000000 Binary files a/inventory/routes/concepts/media/use_routes03.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes04.png b/inventory/routes/concepts/media/use_routes04.png deleted file mode 100644 index 133921442..000000000 Binary files a/inventory/routes/concepts/media/use_routes04.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes05.png b/inventory/routes/concepts/media/use_routes05.png deleted file mode 100644 index 21f61f025..000000000 Binary files a/inventory/routes/concepts/media/use_routes05.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes06.png b/inventory/routes/concepts/media/use_routes06.png deleted file mode 100644 index 154f00ffd..000000000 Binary files a/inventory/routes/concepts/media/use_routes06.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes07.png b/inventory/routes/concepts/media/use_routes07.png deleted file mode 100644 index f0e854332..000000000 Binary files a/inventory/routes/concepts/media/use_routes07.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes08.png b/inventory/routes/concepts/media/use_routes08.png deleted file mode 100644 index e23bf5a5a..000000000 Binary files a/inventory/routes/concepts/media/use_routes08.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes09.png b/inventory/routes/concepts/media/use_routes09.png deleted file mode 100644 index 5a2fbe967..000000000 Binary files a/inventory/routes/concepts/media/use_routes09.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes10.png b/inventory/routes/concepts/media/use_routes10.png deleted file mode 100644 index f1d72e1b1..000000000 Binary files a/inventory/routes/concepts/media/use_routes10.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes11.png b/inventory/routes/concepts/media/use_routes11.png deleted file mode 100644 index e0aa5b949..000000000 Binary files a/inventory/routes/concepts/media/use_routes11.png and /dev/null differ diff --git a/inventory/routes/concepts/media/use_routes_01.png b/inventory/routes/concepts/media/use_routes_01.png new file mode 100644 index 000000000..860e1f969 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_01.png differ diff --git a/inventory/routes/concepts/media/use_routes_02.png b/inventory/routes/concepts/media/use_routes_02.png new file mode 100644 index 000000000..cd49dca78 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_02.png differ diff --git a/inventory/routes/concepts/media/use_routes_03.png b/inventory/routes/concepts/media/use_routes_03.png new file mode 100644 index 000000000..82a8d81da Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_03.png differ diff --git a/inventory/routes/concepts/media/use_routes_04.png b/inventory/routes/concepts/media/use_routes_04.png new file mode 100644 index 000000000..fe724d4f3 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_04.png differ diff --git a/inventory/routes/concepts/media/use_routes_05.png b/inventory/routes/concepts/media/use_routes_05.png new file mode 100644 index 000000000..a5ab31c6f Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_05.png differ diff --git a/inventory/routes/concepts/media/use_routes_06.png b/inventory/routes/concepts/media/use_routes_06.png new file mode 100644 index 000000000..1d2809a87 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_06.png differ diff --git a/inventory/routes/concepts/media/use_routes_07.png b/inventory/routes/concepts/media/use_routes_07.png new file mode 100644 index 000000000..a9b648be1 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_07.png differ diff --git a/inventory/routes/concepts/media/use_routes_08.png b/inventory/routes/concepts/media/use_routes_08.png new file mode 100644 index 000000000..e61e8a650 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_08.png differ diff --git a/inventory/routes/concepts/media/use_routes_09.png b/inventory/routes/concepts/media/use_routes_09.png new file mode 100644 index 000000000..aae22fc86 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_09.png differ diff --git a/inventory/routes/concepts/media/use_routes_10.png b/inventory/routes/concepts/media/use_routes_10.png new file mode 100644 index 000000000..fac5a20e0 Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_10.png differ diff --git a/inventory/routes/concepts/media/use_routes_11.png b/inventory/routes/concepts/media/use_routes_11.png new file mode 100644 index 000000000..214e5af7d Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_11.png differ diff --git a/inventory/routes/concepts/media/use_routes_12.png b/inventory/routes/concepts/media/use_routes_12.png new file mode 100644 index 000000000..c3f88574c Binary files /dev/null and b/inventory/routes/concepts/media/use_routes_12.png differ diff --git a/inventory/routes/concepts/procurement_rule.rst b/inventory/routes/concepts/procurement_rule.rst deleted file mode 100644 index 1e4dad793..000000000 --- a/inventory/routes/concepts/procurement_rule.rst +++ /dev/null @@ -1,73 +0,0 @@ -=========================== -What is a procurement rule? -=========================== - -Overview -======== - -The procurement inventory control system begins with a customer's order. -With this strategy, companies only make enough product to fulfill -customer's orders. One advantage to the system is that there will be no -excess of inventory that needs to be stored, thus reducing inventory -levels and the cost of carrying and storing goods. However, one major -disadvantage to the pull system is that it is highly possible to run -into ordering dilemmas, such as a supplier not being able to get a -shipment out on time. This leaves the company unable to fulfill the -order and contributes to customer dissatisfaction. - -An example of a pull inventory control system is the make-to-order. The -goal is to keep inventory levels to a minimum by only having enough -inventory, not more or less, to meet customer demand. The MTO system -eliminates waste by reducing the amount of storage space needed for -inventory and the costs of storing goods. - -Configuration -============= - -Procurement rules are part of the routes. Go to the Inventory -application>Configuration>Settings and tick "Advance routing of products -using rules". - -.. image:: media/procurement_rule01.png - :align: center - -Procurement rules settings -========================== - -The procurement rules are set on the routes. In the inventory -application, go to :menuselection:`Configuration --> Routes`. - -In the Procurement rules section, click on Add an item. - -.. image:: media/procurement_rule02.png - :align: center - -Here you can set the conditions of your rule. There are 3 types of -action possible : - -- Move from another location rules - -- Manufacturing rules that will trigger the creation of manufacturing - orders - -- Buy rules that will trigger the creation of purchase orders - -.. note:: - The Manufacturing application has to be installed in order to - trigger manufacturing rules. - -.. note:: - The Purchase application has to be installed in order to trigger - **buy** rules. - -.. image:: media/procurement_rule03.png - :align: center - -.. note:: - Some Warehouse Configuration creates routes with procurement - rules already defined. - -.. seealso:: - * :doc:`push_rule` - * :doc:`inter_warehouse` - * :doc:`cross_dock` diff --git a/inventory/routes/concepts/pull_push_rules.rst b/inventory/routes/concepts/pull_push_rules.rst new file mode 100644 index 000000000..5423f60ba --- /dev/null +++ b/inventory/routes/concepts/pull_push_rules.rst @@ -0,0 +1,116 @@ +=========================== +What are Pull & Push Rules? +=========================== + +In inventory management, the supply chain strategy determines when +products should be fabricated, delivered to distribution centers and +made available in the retail channel. + +Under a pull supply chain, actual customer demand drives the process, +while push strategies are driven by long-term projections. + +Pull Inventory Control System +============================= + +The *procurement inventory control system* begins with a customer's +order. With this strategy, companies only produce enough to fulfill their +customer's orders. One advantage is that there are no +extra goods that need to be stored, thus reducing inventory levels +and the cost of carrying and storing. However, one major +disadvantage to the pull system is that it is highly possible to run +into ordering dilemmas, such as a supplier not being able to get a +shipment out on time. This leaves the company unable to fulfill the +order and contributes to customer dissatisfaction. + +An example of a pull inventory control system is the make-to-order. The +goal is to keep inventory levels to a minimum by only having enough +inventory to meet customer's demand. The :abbr:`MTO (Make-to-order)` system +eliminates waste by reducing the amount of storage space needed for +inventory and the costs of storing goods. + +Push Inventory Control System +============================= + +The *push system of inventory control* involves forecasting inventory +needs to meet customer's demand. Companies must predict which products +customers will purchase along with determining what quantity of goods +will be purchased. The company will, in turn, produce enough product to +meet the forecast demand and sell, or push, the goods to the consumer. +Disadvantages of the push inventory control system are that forecasts +are often inaccurate as sales can be unpredictable and vary from one +year to the next, but it also increases the company's costs for storing +these goods if the minimum stock isn’t well defined. An advantage of the push system is that the +company is fairly assured it will have enough product on hand to complete customer orders, +preventing the inability to meet customer demand for the product. + +A push flow indicates how locations are chained with other ones. As soon +as a given quantity of products is moved in the source location, a +chained move is automatically foreseen according to the parameters set +on the flow specifications (destination location, delay, type of move). +It can be triggered automatically or manually. + +Configuration +============= + +Pull and push rules are part of the routes. Go to :menuselection:`Inventory --> Configuration --> +Settings` and tick *Multi-Step Routes*. + +.. image:: media/pull_push_rules_01.png + :align: center + :alt: Enabling multi-step routes to use pull and push rules + +.. Note:: + Storage Locations are automatically activated at the same time as + Multi-Step Routes. + +Rules settings +============== + +The rules are defined on the routes. In the inventory application, go to +:menuselection:`Inventory --> Configuration --> Routes`. In the *Rules* section, click on *Add a line*. + +.. image:: media/pull_push_rules_02.png + :align: center + :alt: Add a line on Odoo routes to use Pull & Push rules + +Here you can set the action to be triggered by the rule. Choose from: + +- **Pull From**: this rule will be triggered by a need for the product in a specific stock + location. The need can come from a sale order which has been validated or for a manufacturing order + which requires a specific component. When the need appears in the source location, Odoo generates a + picking to fulfill this need thanks to the pull rule. +- **Push To**: this rule will be triggered by the arrival of some products in the defined source + location. In case you move products to the source location, Odoo generates a picking to move those + products to the destination location. +- **Push & Pull**: it allows to generate a picking in the two different situations explained above, + when products are required in a specific source location as well as when they are pushed to a + specific source location. +- **Buy**: when products are needed the source location, a request for quotation is created to + fulfill the need. +- **Manufacture**: when products are needed in the source location, a manufacturing order is + created to fulfill the need. +- Many translated example sentences containing + +.. image:: media/pull_push_rules_03.png + :align: center + :alt: Creating rules inside of Routes + +The *Operation Type* allows you to define which kind of picking will +be created from this rule, in the example, I would like to create an +internal transfer. +The *Supply Method* allows you to define what happens at the source +location: + +- **Take From Stock**: the products will be taken from the available stock of the source location. +- **Trigger Another Rule**: the system will try to find a stock rule to bring the products in the + source location. The available stock will be ignored. +- **Take From Stock, if Unavailable, Trigger Another Rule**: the products will be taken from the + available stock of the source location. If there is no stock available, the system will try to find + a rule to bring the products in the source location. + +In the *Scheduling* section, you can determine how will Odoo behave +when one of the pickings of the chain is rescheduled. In case you decide +to Propagate Rescheduling, the next move will also be rescheduled. In +case you prefer to have the choice to manually reschedule the next move +or not, you can decide to receive an alert about it under the form of +the next activity. \ No newline at end of file diff --git a/inventory/routes/concepts/push_rule.rst b/inventory/routes/concepts/push_rule.rst deleted file mode 100644 index 3eb3b6b11..000000000 --- a/inventory/routes/concepts/push_rule.rst +++ /dev/null @@ -1,81 +0,0 @@ -==================== -What is a push rule? -==================== - -Overview -========= - -The push system of inventory control involves forecasting inventory -needs to meet customer demand. Companies must predict which products -customers will purchase along with determining what quantity of goods -will be purchased. The company will in turn produce enough product to -meet the forecast demand and sell, or push, the goods to the consumer. -Disadvantages of the push inventory control system are that forecasts -are often inaccurate as sales can be unpredictable and vary from one -year to the next. Another problem with push inventory control systems is -that if too much product is left in inventory, this increases the -company's costs for storing these goods. An advantage to the push system -is that the company is fairly assured it will have enough product on -hand to complete customer orders, preventing the inability to meet -customer demand for the product. - -A push flow indicates how locations are chained with the other ones. As -soon as a given quantity of products is moved in the source location, a -chained move is automatically foreseen according to the parameters set -on the flow specification (destination location, delay, type of move, -journal). It can be triggered automatically or manually. - -Configuration -============= - -Push rules are part of the routes. Go to the menu -:menuselection:`Inventory --> Configuration --> Settings` -and tick **Advance routing of products using rules**. - -.. image:: media/push_rule01.png - :align: center - -Push rules settings -=================== - -The push rules are set on the routes. -Go to :menuselection:`Configuration --> Routes`. - -In the push rule section, click on **Add an item**. - -.. image:: media/push_rule02.png - :align: center - -Here you can set the conditions of your rule. In this example, when a -good is in **Input location**, it needs to be moved to the quality control. -In the 3 steps receipts, another push rule will make the goods that are -in the quality control location move to the stock. - -.. image:: media/push_rule03.png - :align: center - -.. note:: - Some warehouse configuration creates routes with push rules - already defined. - -Stock transfers -=============== - -The push rule will trigger stock transfer. According to the rule set on -your route, you will see that some transfers might be ready and other -are waiting. - -The push rule that was set above will create moves from **WH/Input** -location to the **WH/Quality Control** location. - -.. image:: media/push_rule04.png - :align: center - -In this example, another move is waiting according to the second push -rule, it defines that when the quality control is done, the goods will -be moved to the main stock. - -.. seealso:: - * :doc:`procurement_rule` - * :doc:`inter_warehouse` - * :doc:`cross_dock` diff --git a/inventory/routes/concepts/use_routes.rst b/inventory/routes/concepts/use_routes.rst index e695b561a..2eb63eb92 100644 --- a/inventory/routes/concepts/use_routes.rst +++ b/inventory/routes/concepts/use_routes.rst @@ -1,154 +1,144 @@ -================== -How to use routes? -================== +========== +Use Routes +========== -Overview -======== +A route is a collection of :doc:`push and pull rules `. In Odoo, you can manage +advanced push/pull routes configurations, like: -A route is a collection of procurement rules and push rules. Odoo can -manage advanced push/pull routes configuration, for example: +- Manage product manufacturing chains; +- Manage default locations per product; +- Define routes within your warehouse according to the business needs, such as quality control, after-sales services or supplier returns; +- Help rental management, by generating automated returning moves for rented products. -- Manage product manufacturing chains - -- Manage default locations per product - -- Define routes within your warehouse according to business needs, such - as quality control, after sales services or supplier returns - -- Help rental management, by generating automated return moves for - rented products +.. note:: + - You can find documentation about those subjects :doc:`../../inventory` Configuration ============= -Procurement rules are part of the routes. Go to the **Inventory** -application, :menuselection:`Configuration --> Settings` and tick -**Advance routing of products using rules**. +To configure routes, go to :menuselection:`Inventory --> Configuration --> Settings` and enable +the *Multi-Step Routes* feature. -.. image:: media/use_routes01.png - :align: center +.. note:: + Enabling the *Multi-Step Routes* automatically enables the *Storage Location* feature too. -Pre-configured routes +.. image:: media/use_routes_01.png + :align: center + :alt: Enabling multi-step routes to work with routes + +Pre-Configured Routes ===================== -Odoo has some pre-configured routes for your warehouses. +Of course, Odoo offers some pre-configured routes for your warehouses. To +see them, open the *Warehouses* menu, under *Configuration*. -In the Inventory application, go to -:menuselection:`Configuration --> Warehouses`. +In the *Warehouse Configuration* tab, some routes are automatically +created based on your choices for *Incoming Shipments* and *Outgoing +Shipments*. -In the **Warehouse Configuration** tab, **Incoming Shipments** and **Outgoing -Shippings** options set some routes according to your choices. - -.. image:: media/use_routes02.png - :align: center +.. image:: media/use_routes_02.png + :align: center + :alt: automatically generated routes for incoming and outgoing shipments Custom Routes ============= -In the **Inventory** application, go to -:menuselection:`Configuration --> Routes`. - -.. image:: media/use_routes03.png - :align: center - -First, you have to select the places where this route can be selected. -You can combine several choices. +In the *Inventory* application, open :menuselection:`Configuration --> Routes`. Then, +you have to select the places where this route can be selected. You can +combine several choices if needed. Routes applied on warehouses ---------------------------- -If you tick **Warehouses**, you have to choose on which warehouse it will -be applied. The route will be set for all transfer in that warehouse -that would meet the conditions of the procurement and push rules. +If you tick *Warehouses*, you have to choose on which warehouse it +will be applied. The route will be set for all transfers in that +warehouse that would meet the conditions of the pull and push rules. -.. image:: media/use_routes04.png - :align: center +.. image:: media/use_routes_03.png + :align: center + :alt: Applicable routes on warehouse -Routes applied on products ---------------------------- +Routes applied to products +-------------------------- -If you tick **Products**, you have to manually set on which product it -will be applied. +If you choose *Products*, you have to manually set on which product it +is applied. -.. image:: media/use_routes05.png - :align: center +.. image:: media/use_routes_04.png + :align: center + :alt: Applicable routes on products -Open the product on which you want to apply the routes -(:menuselection:`Inventory --> Control --> Products`). -In the Inventory Tab, select the route(s): +To do so, open the product on which you want to apply the routes. Open +the *Inventory tab* and select the route you’ve created. -.. image:: media/use_routes06.png - :align: center +.. image:: media/use_routes_05.png + :align: center + :alt: Choosing products the route is applicable on Routes applied on Product Category ---------------------------------- -If you tick **Product Categories**, you have to manually set on which -categories it will be applied. +Then, you can also choose to apply routes to *product categories*. +Just like you did for products, you have to manually set on which +categories it must be applied. -.. image:: media/use_routes07.png - :align: center +.. image:: media/use_routes_06.png + :align: center + :alt: Applicable routes on product categories -Open the product on which you want to apply the routes -(:menuselection:`Configuration --> Product Categories`). -Select the route(s) under the **Logistics** section : +To do so, open the product category you want to apply the route to. +Then, select the route under the *Logistic* section. -.. image:: media/use_routes08.png - :align: center +.. image:: media/use_routes_07.png + :align: center + :alt: Routes registration in the product category logistics field -Routes applied on Sales Order lines +Routes applied on Sales Order Lines ----------------------------------- -If you tick **Sales order lines**, you have to manually set the route -every time you make a sale order. +You can also apply routes on sales order lines. For that, tick *Sales +Order Lines* on your route form. -.. image:: media/use_routes09.png - :align: center +.. image:: media/use_routes_08.png + :align: center + :alt: Applicable routes on sales order lines -In order to make it work, you also have to activate the use of the -routes on the sales order. +Next, open a sale order. You can now add the *Route* in the view. Once +done, you can choose the routes for each of your sales orders’ lines. -In the Sales application, go to -:menuselection:`Configuration --> Settings` and tick -**Choose specific routes on sales order lines (advanced)**. +.. image:: media/use_routes_09.png + :align: center + :alt: Enabling the routes on sales order lines -.. image:: media/use_routes10.png - :align: center +.. image:: media/use_routes_10.png + :align: center + :alt: Sales orders showing the routes between the description and quantity -You can now choose the routes for each lines of your sales orders: +Pull and Push Rules +------------------- -.. image:: media/use_routes11.png - :align: center +For detailed explanations about *Pull and Push Rules*, please refer to the following +documentation: :doc:`pull_push_rules`. -Procurement and push rules -========================== +Pull Configuration +------------------ -Please refer to the documents: +When making a procurement request, you can force the route you want to +use. On the product form, click on *Replenish*. Then, choose the route you +want to use. -- :doc:`procurement_rule` +.. image:: media/use_routes_11.png + :align: center + :alt: Product replenishment -- :doc:`push_rule` +.. image:: media/use_routes_12.png + :align: center + :alt: Replenishment with preferred routes and chosen quantity -Procurement configuration -========================= +Replenish on Order (MTO) Route +------------------------------ -When doing a procurement request, you can force the route you want to -use. On the product (:menuselection:`Inventory Control --> Products`), -click on **Procurement Request**. Choose the route you want to use next to -**Preferred Routes**: - -.. image:: media/use_routes12.png - :align: center - -Make-to-Order Route -=================== - -If you work with no stock, or with minimum stock rules, it is better to -use the **Make To Order** route. Combine it with the route **Buy** or -**Manufacture** and it will trigger automatically the purchase order or -the Manufacturing Order when your products are out-of-stock. - -.. seealso:: - * :doc:`push_rule` - * :doc:`inter_warehouse` - * :doc:`cross_dock` \ No newline at end of file +If you do not work with stock, it is better to use the *Replenish on Order +(MTO)* route. Combined with the *Buy* or *Manufacturing* routes, it +automatically triggers the purchase order or manufacturing order +when your products are out-of-stock. \ No newline at end of file diff --git a/inventory/routes/strategies/media/removal01.png b/inventory/routes/strategies/media/removal01.png deleted file mode 100644 index f38e3898e..000000000 Binary files a/inventory/routes/strategies/media/removal01.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal02.png b/inventory/routes/strategies/media/removal02.png deleted file mode 100644 index 690b046f0..000000000 Binary files a/inventory/routes/strategies/media/removal02.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal03.png b/inventory/routes/strategies/media/removal03.png deleted file mode 100644 index de17bc02d..000000000 Binary files a/inventory/routes/strategies/media/removal03.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal04.png b/inventory/routes/strategies/media/removal04.png deleted file mode 100644 index 706b9ad39..000000000 Binary files a/inventory/routes/strategies/media/removal04.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal05.png b/inventory/routes/strategies/media/removal05.png deleted file mode 100644 index b0d064f4c..000000000 Binary files a/inventory/routes/strategies/media/removal05.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal06.png b/inventory/routes/strategies/media/removal06.png deleted file mode 100644 index 226da62db..000000000 Binary files a/inventory/routes/strategies/media/removal06.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal07.png b/inventory/routes/strategies/media/removal07.png deleted file mode 100644 index e9e1f3999..000000000 Binary files a/inventory/routes/strategies/media/removal07.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal08.png b/inventory/routes/strategies/media/removal08.png deleted file mode 100644 index 6e9f36a37..000000000 Binary files a/inventory/routes/strategies/media/removal08.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal09.png b/inventory/routes/strategies/media/removal09.png deleted file mode 100644 index 629b77338..000000000 Binary files a/inventory/routes/strategies/media/removal09.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal10.png b/inventory/routes/strategies/media/removal10.png deleted file mode 100644 index 071a81e89..000000000 Binary files a/inventory/routes/strategies/media/removal10.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal11.png b/inventory/routes/strategies/media/removal11.png deleted file mode 100644 index 971847402..000000000 Binary files a/inventory/routes/strategies/media/removal11.png and /dev/null differ diff --git a/inventory/routes/strategies/media/removal_01.png b/inventory/routes/strategies/media/removal_01.png new file mode 100644 index 000000000..41db438e0 Binary files /dev/null and b/inventory/routes/strategies/media/removal_01.png differ diff --git a/inventory/routes/strategies/media/removal_02.png b/inventory/routes/strategies/media/removal_02.png new file mode 100644 index 000000000..04fec2daf Binary files /dev/null and b/inventory/routes/strategies/media/removal_02.png differ diff --git a/inventory/routes/strategies/media/removal_03.png b/inventory/routes/strategies/media/removal_03.png new file mode 100644 index 000000000..d2a0e64a6 Binary files /dev/null and b/inventory/routes/strategies/media/removal_03.png differ diff --git a/inventory/routes/strategies/media/removal_04.png b/inventory/routes/strategies/media/removal_04.png new file mode 100644 index 000000000..6c202388e Binary files /dev/null and b/inventory/routes/strategies/media/removal_04.png differ diff --git a/inventory/routes/strategies/media/removal_05.png b/inventory/routes/strategies/media/removal_05.png new file mode 100644 index 000000000..0f3aec7f7 Binary files /dev/null and b/inventory/routes/strategies/media/removal_05.png differ diff --git a/inventory/routes/strategies/media/removal_06.png b/inventory/routes/strategies/media/removal_06.png new file mode 100644 index 000000000..043224874 Binary files /dev/null and b/inventory/routes/strategies/media/removal_06.png differ diff --git a/inventory/routes/strategies/media/removal_07.png b/inventory/routes/strategies/media/removal_07.png new file mode 100644 index 000000000..6d21fe543 Binary files /dev/null and b/inventory/routes/strategies/media/removal_07.png differ diff --git a/inventory/routes/strategies/media/removal_08.png b/inventory/routes/strategies/media/removal_08.png new file mode 100644 index 000000000..c33125705 Binary files /dev/null and b/inventory/routes/strategies/media/removal_08.png differ diff --git a/inventory/routes/strategies/removal.rst b/inventory/routes/strategies/removal.rst index fa4d1cb26..0a69ae447 100644 --- a/inventory/routes/strategies/removal.rst +++ b/inventory/routes/strategies/removal.rst @@ -1,192 +1,136 @@ ================================================== -What is a removal strategy (FIFO, LIFO, and FEFO)? +What is a Removal Strategy (FIFO, LIFO, and FEFO)? ================================================== -Overview -======== - -Removal strategies are usually in picking operations to select the best -products in order to optimize the distance for the worker, for quality -control purpose or due to reason of product expiration. +Removal strategies are a set of rules defined in picking operations that change which products +are moved first. A removal strategy can optimize the distance for the worker, for +quality control purposes or to first move the products with the closest +expiration date. When a product movement needs to be done, Odoo will find available -products that can be assigned to shipping. The way Odoo assign these -products depend on the **removal strategy** that is defined on the **product -category** or on the **location**. +products that can be assigned to the transfer. The way Odoo assigns +these products depends on the *removal strategy* that is defined in +the *product category* or on *the location*. Configuration ============= -In the **Inventory** application, go to :menuselection:`Configuration ---> Settings`: +In order to be able to identify some units from other ones, in Odoo, you +need to track them either by lot or by serial number. Go to +:menuselection:`Inventory --> Configuration --> Settings`. -.. image:: media/removal01.png - :align: center +Activate *Storage Locations*, *Multi-Step Routes* and *Lots & +Serial Numbers*. -.. image:: media/removal02.png - :align: center +.. image:: media/removal_01.png + :align: center + :alt: Enabling lots and serial numbers to use FIFO, LIFO and FEFO strategies -Check **Track lots or serial numbers**, **Manage several location per -warehouse** and **Advanced routing of products using rules**, then click -on **Apply**. +In case you want to work with FEFO, *Expiration Dates* should also be +activated. -Then, open :menuselection:`Configuration --> Locations` -and open the location on which you want to apply a removal strategy. +You can then define your removal strategy, either on *Product +Categories* via the :menuselection:`Inventory --> Configuration --> Product +Categories`, or on *Locations*, in :menuselection:`Inventory --> +Configuration --> Locations`. -.. image:: media/removal03.png - :align: center +.. image:: media/removal_02.png + :align: center + :alt: Selecting the good removal strategy on the product category form -Types of removal strategy -========================= +.. image:: media/removal_03.png + :align: center + :alt: Selecting the removal strategy on the location form -FIFO ( First In First Out ) ---------------------------- +Removal Strategy Types +====================== -A **First In First Out** strategy implies that the products that were -stocked first will move out first. Companies should use FIFO method if -they are selling perishable goods. Companies selling products with +FIFO (First In First Out) +------------------------- + +A First In First Out strategy implies that the products that were +stocked first are moved out first. Companies should use the FIFO method +if they are selling perishable goods. Companies selling products with relatively short demand cycles, such as clothes, also may have to pick FIFO to ensure they are not stuck with outdated styles in inventory. -Go to :menuselection:`Inventory --> Configuration --> Locations`, -open the stock location and set **FIFO** removal strategy. +Go to :menuselection:`Inventory > Configuration > Locations`, open the Stock location and +set FIFO as the removal strategy. -Let's take one example of FIFO removal strategy. +In your stock location (WH/Stock), there are 3 lots of Hand Cream +available. -In your warehouse stock (``WH/Stock``) location, there are ``3`` lots of ``iPod -32 Gb`` available. +.. image:: media/removal_04.png + :align: center + :alt: View of stock location with products in it -You can find details of available inventory in inventory valuation -report. +Create a sales order for 25 units of Hand Cream and validate it. If you +go on the delivery order linked to the picking, you can see that the +oldest lot numbers have been automatically reserved thanks to the FIFO +removal strategy. -.. image:: media/removal04.png - :align: center - -Create one sales order ``25`` unit of ``iPod 32 GB`` and confirm it. - -You can see in the outgoing shipment product that the ``Ipod 32 -Gb`` are assigned with the **oldest** lots, using the FIFO removal -strategy. - -.. image:: media/removal05.png - :align: center +.. image:: media/removal_05.png + :align: center + :alt: View of reserved products to deliver a customer thanks to removal strategies LIFO (Last In First Out) ------------------------ -In this warehouse management, the products which are brought in the -last, moves out the first. LIFO is used in case of products which do not -have a shelf life. +In LIFO, the products which are brought the last move out the first. +LIFO is used when products do not have a shelf life. -Go to :menuselection:`Inventory --> Configuration --> Locations`, -open the stock location and set **LIFO** removal strategy. +Go to :menuselection:`Inventory --> Configuration --> Locations`, open the location WH/Stock +and set the LIFO removal strategy. With the exact same data in the +database, we can now see that on the picking, the lot numbers which are +privileged are the ones created the last. -In our example, let's check the current available stock of ``Ipod 32 Gb`` -on ``WH/Stock`` location. +.. image:: media/removal_06.png + :align: center + :alt: Vie of reserved products thanks to removal strategies -.. image:: media/removal06.png - :align: center - -Create a sale order with ``10`` units of ``Ipod 32 Gb``. - -You can see in the outgoing shipment product that the ``Ipod 32 -Gb`` are assigned with the **newest** lots, using the LIFO removal -strategy. - -.. image:: media/removal07.png - :align: center - -FEFO ( First Expiry First Out ) --------------------------------- +FEFO (First Expiry First Out) +----------------------------- In FEFO warehouse management, the products are dispatched from the warehouse according to their expiration date. -Go to :menuselection:`Inventory --> Configuration --> Setting`. -Check the option **Define Expiration date on serial numbers**. -Then click on **Apply** to save changes. +In case you want more information about Expiration Dates, please have a +look at :doc:`manage expiration dates <../../management/lots_serial_numbers/expiration_dates>` documentation. -.. image:: media/removal08.png - :align: center +The activation of the *Expiration Dates* functionality allows you to +define different dates on the serial/lot numbers, which are used in +FEFO. These dates can be set from :menuselection:`Inventory --> Master Data --> Lots/Serial +Numbers`. -This will allow you to set four expiration fields for each lot or serial number: -**best before date**, **end of life date**, **alert date** and **removal date**. -These dates can be set from :menuselection:`Inventory Control --> Serial Numbers/Lots`. +.. image:: media/removal_07.png + :align: center + :alt: View of removal date when using a FEFO strategy -.. image:: media/removal09.png - :align: center +Lots are picked based on their removal date, from earliest to +latest. Lots without a removal date defined are picked after lots +with removal dates. -- **Best Before Date**: This is the date on which the goods with this - serial/lot number start deteriorating, without being dangerous yet. +All dates except *removal dates* are for informational and reporting +purposes only. Lots that are past any or all of the above expiration +dates may still be picked for delivery orders. -- **End of Life Date:** This is the date on which the goods with this - serial/lot number may become dangerous and must not be consumed. - -- **Removal Date:** This is the date on which the goods with this - serial/lot number should be removed from the stock. Using the FEFO - removal strategy goods are picked for delivery orders using this date. - -- **Alert Date:** This is the date on which an alert should be sent - about the goods with this serial/lot number. - -Lots will be picked based on their **removal date**, from earliest -to latest. Lots without a removal date defined will be picked after -lots with removal dates. - -All dates except **removal date** are for informational and reporting purposes only. -Lots that are past any or all of the above expiration dates may still be picked -for delivery orders, and no alerts will be sent when lots pass their **alert date**. - -Expiration dates on lots can also be set automatically when goods are received into stock. -After enabling expiration dates on serial numbers, four new fields will become available -in the inventory tab of the product form: **product life time**, **product use time**, -**product removal time**, and **product alert time**. When an integer is entered into one -of these fields, the expiration date of a lot/serial of the product in question will be set -to the creation date of the lot/serial number plus the number of days entered in the time -increment field. If the time increment field is set to zero, then the expiration date of -a lot/serial must be defined manually after the lot has been created. - -Each of these time increment fields is used to generate one of the lot expiration date fields as follows: - -Product Use Time --> Best Before Date - -Product Removal Time --> Removal Date - -Product Life Time --> End of Life Date - -Product Alert Time --> Alert Date - -To set the removal strategy on location, go to -:menuselection:`Configuration --> Locations` and choose FEFO. - -.. image:: media/removal10.png - :align: center - -Let's take an example, there are ``3`` lots of ``ice cream`` available in -``WH/Stock`` location: ``LOT0001``, ``LOT0002``, ``LOT0003`` with -different expiration date. +To set the removal strategy on location, go to :menuselection:`Inventory --> Configuration --> +Locations`, open WH/Stock and choose FEFO. +-----------------------+---------------+-----------------------+ | **Lot / Serial No** | **Product** | **Expiration Date** | +=======================+===============+=======================+ -| LOT0001 | Ice Cream | 08/20/2015 | +| 0000001 | Hand Cream | 09/30/2019 | +-----------------------+---------------+-----------------------+ -| LOT0002 | Ice Cream | 08/10/2015 | +| 0000002 | Hand Cream | 11/30/2019 | +-----------------------+---------------+-----------------------+ -| LOT0003 | Ice Cream | 08/15/2015 | +| 0000003 | Hand Cream | 10/31/2019 | +-----------------------+---------------+-----------------------+ -We will create a sale order with ``15kg`` of ``ice cream`` and confirm it. +When we sell for 25 units of Hand Cream, we can see that the +lot numbers which have been automatically reserved by Odoo are the ones +with the closest expiration date, meaning 0000001 and 0000003. -The outgoing shipment related to sale order will make the move based on -removal strategy **FEFO**. - -It will take ``10kg`` from ``LOT0002`` and ``5kg`` from ``LOT0003`` based on the -removal dates. - -.. image:: media/removal11.png - :align: center - -.. seealso:: - - * :doc:`../../management/reporting/inventory_valuation_config` +.. image:: media/removal_08.png + :align: center + :alt: View of which lots are reserved when using a FEFO strategy \ No newline at end of file