======================= Stock Reservation Rules ======================= .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png :target: https://odoo-community.org/page/development-status :alt: Alpha .. |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/13.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-13-0/stock-logistics-warehouse-13-0-stock_reserve_rule :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png :target: https://runbot.odoo-community.org/runbot/153/13.0 :alt: Try me on Runbot |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. .. IMPORTANT:: This is an alpha version, the data model and design can change at any time without warning. Only for development or testing purpose, do not use in production. `More details on development status `_ **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). * 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 activate and see the rules (by default in demo, the rules are created inactive) * 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 `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. Credits ======= Authors ~~~~~~~ * Camptocamp Contributors ~~~~~~~~~~~~ * Guewen Baconnier 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 `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.