TIP: You can type at any time to perform a new search.
Stock Reservation Rules
stock_reserve_rule · OCA/stock-logistics-reservation
- Repository
- OCA/stock-logistics-reservation · module folder · Try on Runboat
- Module version
- 1.2.2
- Category
- Stock Management
- Folder size
- 0.12 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/stock-logistics-reservation
- Last tracking update
- 2026-08-07 08:43:06
- Authors
- Camptocamp, Odoo Community Association (OCA), BCIM
- Maintainers
- Camptocamp, Odoo Community Association (OCA), BCIM
- Committers
- Jacques-Etienne Baudoux, Denis Roussel, Akim Juillerat, Weblate, Ruchir Shukla, OCA-git-bot, oca-ci
- Odoo dependencies
- Python dependencies
- openupgradelib
- System dependencies
- None
- Required by
- None
- Description
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.
Code Analysis ⓘ
Views touched (3)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_stock_reserve_rule_form |
stock.reserve.rule.form | stock.reserve.rule | form | New |
view_stock_reserve_rule_search |
stock.reserve.rule.search | stock.reserve.rule | search | New |
view_stock_reserve_rule_tree |
stock.reserve.rule | stock.reserve.rule | list | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (5)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (1)
-
reserve_rule_idsMany2many → stock.reserve.rulecomodel_name='stock.reserve.rule'
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (9)
-
activeBooleandefault=True -
company_idMany2one → res.companycomodel_name='res.company'default=<expr> -
force_reassign_partialBooleanhelp='Check this box if you want to remove existing reservation when checking availabilty of partially available moves.' -
location_idMany2one → stock.locationcomodel_name='stock.location'help='Rule applied only in this location and sub-locations.'required=True -
nameCharrequired=Truestring='Description' -
picking_type_idsMany2many → stock.picking.typecomodel_name='stock.picking.type'help='Apply this rule only if the operation type of the move is the same.'string='Operation Types' -
rule_domainChardefault=[]help='Domain based on Stock Moves, to define if the rule is applicable or not.' -
rule_removal_idsOne2many → stock.reserve.rule.removalcomodel_name='stock.reserve.rule.removal'inverse_name='rule_id' -
sequenceIntegerdefault=<expr>
No public methods.
New fields (7)
-
location_idMany2one → stock.locationcomodel_name='stock.location'required=True -
nameCharstring='Description' -
packaging_level_idsMany2many → product.packaging.levelcomodel_name='product.packaging.level'help="Optional packaging level when using 'Full Packaging'.\n" -
quant_domainChardefault=[]help='Filter Quants allowed to be reserved for this location and sub-locations.'string='Quants Domain' -
removal_strategySelectiondefault='default'help='Defines if and how goods are taken from locations.Default: take the first ones with the configured Removal Strategy(FIFO, FEFO, ...).\nEmpty Bins: take goods from a location only if the bin is empty afterwards.\nFull Packaging: take goods from a location only if the location quantity matches a packaging quantity (do not open boxes).'required=Trueselection=[('default', 'Default Removal Strategy'), ('empty_bin', 'Empty Bins'), ('packaging', 'Full Packaging')]string='Advanced Removal Strategy' -
rule_idMany2one → stock.reserve.rulecomodel_name='stock.reserve.rule'ondelete='cascade'required=True -
sequenceIntegerdefault=<expr>
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…