forked from OCA/stock-logistics-warehouse
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[17.0][MIG] stock_reserve_rule: Migration v17 module
- Loading branch information
1 parent
f7d868a
commit 045409d
Showing
36 changed files
with
3,047 additions
and
16 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains 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
This file contains 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
This file contains 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 |
---|---|---|
@@ -0,0 +1,188 @@ | ||
======================= | ||
Stock Reservation Rules | ||
======================= | ||
|
||
.. | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
!! changes will be overwritten. !! | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! source digest: sha256:eb0ce7223cb9dba08b521b0ed5eccfa89eca3d96fd81fdf75c1b0cc6151aa7ed | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png | ||
:target: https://odoo-community.org/page/development-status | ||
:alt: Beta | ||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png | ||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html | ||
:alt: License: AGPL-3 | ||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github | ||
:target: https://github.com/OCA/stock-logistics-warehouse/tree/17.0/stock_reserve_rule | ||
:alt: OCA/stock-logistics-warehouse | ||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
:target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-17-0/stock-logistics-warehouse-17-0-stock_reserve_rule | ||
:alt: Translate me on Weblate | ||
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png | ||
:target: https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-warehouse&target_branch=17.0 | ||
:alt: Try me on Runboat | ||
|
||
|badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
||
This module adds rules for advanced reservation / removal strategies. | ||
|
||
Rules are applied on a location and its sub-locations. | ||
|
||
A rule can exclude quants or locations based on configurable criteria, | ||
and based on the selected quants, apply advanced removal strategies. | ||
|
||
The rules have a sequence, which will be respected for the reservation. | ||
So even without filter or advanced removal strategies, we can give a | ||
priority to reserve in a location before another. | ||
|
||
The advanced removal strategies are applied on top of the default one | ||
(fifo, fefo, ...). | ||
|
||
The included advanced removal strategies are: | ||
|
||
- Default Removal Strategy: apply the default configured one (fifo, | ||
fefo, ...) | ||
- Empty Bins: goods are removed from a bin only if the bin will be empty | ||
after the removal (favor largest bins first to minimize the number of | ||
operations, then apply the default removal strategy for equal | ||
quantities). | ||
- Full Packaging: tries to remove full packaging (configured on the | ||
products) first, by largest to smallest package or based on a | ||
pre-selected package (default removal strategy is then applied for | ||
equal quantities). | ||
|
||
Examples of scenario: | ||
|
||
rules: | ||
|
||
- location A: no filter, no advanced removal strategy | ||
- location B: no filter, Empty Bins | ||
- location C: no filter, no advanced removal strategy | ||
|
||
result: | ||
|
||
- take what is available in location A | ||
- then take in location B if available, only if bin(s) are emptied | ||
- then take what is available in location C | ||
|
||
The module is meant to be extensible, with a core mechanism on which new | ||
rules and advanced removal strategies can be added. | ||
|
||
**Table of contents** | ||
|
||
.. contents:: | ||
:local: | ||
|
||
Configuration | ||
============= | ||
|
||
The configuration of the rules is done in "Inventory > Configuration > | ||
Stock Reservation Rules". | ||
|
||
Creation of a rule: | ||
|
||
Properties that define where the rule will be applied: | ||
|
||
- Location: Define where the rule will look for goods (a parent of the | ||
move's source location). | ||
- Fallback Location: Define where the goods are reserved if none of the | ||
removal rule could reserve the goods. If left empty, the goods are | ||
reserved in the move's source location / sub-locations. | ||
- Rule Domain: The rule is used only if the Stock Move matches the | ||
domain. | ||
|
||
Removal rules for the locations: | ||
|
||
- Quants Domain: this domain includes/excludes quants based on a domain. | ||
- Advanced Removal Strategy: the strategy that will be used for this | ||
location and sub-location when the rule is used. | ||
|
||
The sequences have to be sorted in the view list to define the | ||
reservation priorities. | ||
|
||
Usage | ||
===== | ||
|
||
If you are using a database with demo data, you can give a try to the | ||
following scenario to understand how it works. | ||
|
||
The demo data created by the module contains: | ||
|
||
A product: Funky Socks | ||
|
||
3 Locations: | ||
|
||
- Stock / Zone A / Bin A1: 200 Funky socks | ||
- Stock / Zone B / Bin B1: 100 Funky socks | ||
- Stock / Zone C / Bin C1: 100 Funky socks | ||
|
||
3 Reservation Rules, in the following order | ||
|
||
- Zone A must have full quantities | ||
- Zone B | ||
- Zone C | ||
|
||
2 Delivery Orders: | ||
|
||
- Origin: Outgoing shipment (reservation rules demo 1) | ||
- Origin: Outgoing shipment (reservation rules demo 2) | ||
|
||
Scenario: | ||
|
||
- Activate Storage Locations and Multi-Warehouses | ||
- You can open Inventory > Configuration > Stock Reservation Rules to | ||
see the rules | ||
- Open Transfer: Outgoing shipment (reservation rules demo 1) | ||
- Check availability: it has 150 units, as it will not empty Zone A, it | ||
will not take products there, it should take 100 in B and 50 in C | ||
(following the rules order) | ||
- Unreserve this transfer (to test the second case) | ||
- Open Transfer: Outgoing shipment (reservation rules demo 2) | ||
- Check availability: it has 250 units, it can empty Zone A, it will | ||
take 200 in Bin A1 and 50 in Bin B1. | ||
- If you want to explore further, you can add a custom domain to exclude | ||
rules (for instance, a product category will not use Zone B). | ||
|
||
Bug Tracker | ||
=========== | ||
|
||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-warehouse/issues>`_. | ||
In case of trouble, please check there if your issue has already been reported. | ||
If you spotted it first, help us to smash it by providing a detailed and welcomed | ||
`feedback <https://github.com/OCA/stock-logistics-warehouse/issues/new?body=module:%20stock_reserve_rule%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
||
Do not contact contributors directly about support or help with technical issues. | ||
|
||
Credits | ||
======= | ||
|
||
Authors | ||
------- | ||
|
||
* Camptocamp | ||
|
||
Contributors | ||
------------ | ||
|
||
- Guewen Baconnier <guewen.baconnier@camptocamp.com> | ||
|
||
Maintainers | ||
----------- | ||
|
||
This module is maintained by the OCA. | ||
|
||
.. image:: https://odoo-community.org/logo.png | ||
:alt: Odoo Community Association | ||
:target: https://odoo-community.org | ||
|
||
OCA, or the Odoo Community Association, is a nonprofit organization whose | ||
mission is to support the collaborative development of Odoo features and | ||
promote its widespread use. | ||
|
||
This module is part of the `OCA/stock-logistics-warehouse <https://github.com/OCA/stock-logistics-warehouse/tree/17.0/stock_reserve_rule>`_ project on GitHub. | ||
|
||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
This file contains 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 |
---|---|---|
@@ -0,0 +1 @@ | ||
from . import models |
This file contains 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 |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
|
||
{ | ||
"name": "Stock Reservation Rules", | ||
"summary": "Configure reservation rules by location", | ||
"version": "17.0.1.0.0", | ||
"author": "Camptocamp, Odoo Community Association (OCA)", | ||
"website": "https://github.com/OCA/stock-logistics-warehouse", | ||
"category": "Stock Management", | ||
"depends": [ | ||
"stock", | ||
"stock_helper", | ||
"product_packaging_level", | ||
], | ||
"demo": [ | ||
"data/demo/product_demo.xml", | ||
"data/demo/stock_location_demo.xml", | ||
"data/demo/stock_reserve_rule_demo.xml", | ||
"data/demo/stock_picking_demo.xml", | ||
], | ||
"data": [ | ||
"views/stock_reserve_rule_views.xml", | ||
"security/ir.model.access.csv", | ||
"security/stock_reserve_rule_security.xml", | ||
], | ||
"installable": True, | ||
"development_status": "Beta", | ||
"license": "AGPL-3", | ||
} |
This file contains 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 |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<odoo noupdate="1"> | ||
<record id="product_funky_socks" model="product.product"> | ||
<field name="default_code">RS700</field> | ||
<field name="name">Funky Socks</field> | ||
<field name="type">product</field> | ||
<field name="categ_id" ref="product.product_category_6" /> | ||
<field name="lst_price">30.0</field> | ||
<field name="standard_price">20.0</field> | ||
<field name="weight">1.0</field> | ||
<field name="tracking">none</field> | ||
<field name="uom_id" ref="uom.product_uom_unit" /> | ||
<field name="uom_po_id" ref="uom.product_uom_unit" /> | ||
</record> | ||
</odoo> |
This file contains 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 |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<odoo noupdate="1"> | ||
<record id="stock_location_zone_a_demo" model="stock.location"> | ||
<field name="name">Zone A</field> | ||
<field name="location_id" ref="stock.stock_location_stock" /> | ||
</record> | ||
<record id="stock_location_zone_b_demo" model="stock.location"> | ||
<field name="name">Zone B</field> | ||
<field name="location_id" ref="stock.stock_location_stock" /> | ||
</record> | ||
<record id="stock_location_zone_c_demo" model="stock.location"> | ||
<field name="name">Zone C</field> | ||
<field name="location_id" ref="stock.stock_location_stock" /> | ||
</record> | ||
<record id="stock_location_zone_a_bin_1_demo" model="stock.location"> | ||
<field name="name">Bin A1</field> | ||
<field name="location_id" ref="stock_location_zone_a_demo" /> | ||
</record> | ||
<record id="stock_location_zone_b_bin_1_demo" model="stock.location"> | ||
<field name="name">Bin B1</field> | ||
<field name="location_id" ref="stock_location_zone_b_demo" /> | ||
</record> | ||
<record id="stock_location_zone_c_bin_1_demo" model="stock.location"> | ||
<field name="name">Bin C1</field> | ||
<field name="location_id" ref="stock_location_zone_c_demo" /> | ||
</record> | ||
</odoo> |
This file contains 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 |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<odoo noupdate="1"> | ||
<record id="stock_picking_out_1_demo" model="stock.picking"> | ||
<field name="picking_type_id" ref="stock.picking_type_out" /> | ||
<field name="origin">Outgoing shipment (reservation rules demo 1)</field> | ||
<field name="partner_id" ref="base.res_partner_1" /> | ||
<field name="date" eval="DateTime.today()" /> | ||
<field name="location_id" ref="stock.stock_location_stock" /> | ||
<field name="location_dest_id" ref="stock.stock_location_customers" /> | ||
<field | ||
name="move_ids" | ||
model="stock.move" | ||
eval="[(0, 0, { | ||
'name': obj().env.ref('stock_reserve_rule.product_funky_socks').name, | ||
'product_id': ref('stock_reserve_rule.product_funky_socks'), | ||
'product_uom': ref('uom.product_uom_unit'), | ||
'product_uom_qty': 150.0, | ||
'picking_type_id': ref('stock.picking_type_out'), | ||
'location_id': ref('stock.stock_location_stock'), | ||
'location_dest_id': ref('stock.stock_location_customers'), | ||
})]" | ||
/> | ||
</record> | ||
<record id="stock_picking_out_2_demo" model="stock.picking"> | ||
<field name="picking_type_id" ref="stock.picking_type_out" /> | ||
<field name="origin">Outgoing shipment (reservation rules demo 2)</field> | ||
<field name="partner_id" ref="base.res_partner_1" /> | ||
<field name="date" eval="DateTime.today()" /> | ||
<field name="location_id" ref="stock.stock_location_stock" /> | ||
<field name="location_dest_id" ref="stock.stock_location_customers" /> | ||
<field | ||
name="move_ids" | ||
model="stock.move" | ||
eval="[(0, 0, { | ||
'name': obj().env.ref('stock_reserve_rule.product_funky_socks').name, | ||
'product_id': ref('stock_reserve_rule.product_funky_socks'), | ||
'product_uom': ref('uom.product_uom_unit'), | ||
'product_uom_qty': 250.0, | ||
'picking_type_id': ref('stock.picking_type_out'), | ||
'location_id': ref('stock.stock_location_stock'), | ||
'location_dest_id': ref('stock.stock_location_customers'), | ||
})]" | ||
/> | ||
</record> | ||
</odoo> |
This file contains 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 |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<odoo noupdate="1"> | ||
<record id="stock_reserve_rule_1_demo" model="stock.reserve.rule"> | ||
<field name="name">Stock</field> | ||
<field name="sequence">1</field> | ||
<field name="location_id" ref="stock.stock_location_stock" /> | ||
<field name="company_id" ref="base.main_company" /> | ||
<field name="active" eval="False" /> | ||
</record> | ||
<record id="stock_reserve_rule_removal_1_demo" model="stock.reserve.rule.removal"> | ||
<field name="rule_id" ref="stock_reserve_rule_1_demo" /> | ||
<field name="sequence">1</field> | ||
<field name="location_id" ref="stock_location_zone_a_demo" /> | ||
<field name="removal_strategy">empty_bin</field> | ||
</record> | ||
<record id="stock_reserve_rule_2_removal_demo" model="stock.reserve.rule.removal"> | ||
<field name="rule_id" ref="stock_reserve_rule_1_demo" /> | ||
<field name="sequence">2</field> | ||
<field name="location_id" ref="stock_location_zone_b_demo" /> | ||
<field name="removal_strategy">default</field> | ||
</record> | ||
<record id="stock_reserve_rule_3_removal_demo" model="stock.reserve.rule.removal"> | ||
<field name="rule_id" ref="stock_reserve_rule_1_demo" /> | ||
<field name="sequence">3</field> | ||
<field name="location_id" ref="stock_location_zone_c_demo" /> | ||
<field name="removal_strategy">default</field> | ||
</record> | ||
</odoo> |
This file contains 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 |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<odoo noupdate="1"> | ||
|
||
<record id="product_funky_socks" model="product.product"> | ||
<field name="default_code">RS700</field> | ||
<field name="name">Funky Socks</field> | ||
<field name="type">product</field> | ||
<field name="categ_id" ref="product.product_category_6" /> | ||
<field name="lst_price">30.0</field> | ||
<field name="standard_price">20.0</field> | ||
<field name="weight">1.0</field> | ||
<field name="tracking">none</field> | ||
<field name="uom_id" ref="uom.product_uom_unit" /> | ||
<field name="uom_po_id" ref="uom.product_uom_unit" /> | ||
<field name="property_stock_inventory" ref="stock.location_inventory" /> | ||
</record> | ||
|
||
</odoo> |
Oops, something went wrong.