| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Inventory (stock) |
| Lines of code | 31 |
| Technical Name |
so_stock_balance_corrector |
| License | OPL-1 |
| Website | https://odoocrafts.com |
SO Stock Balance Corrector
Automatic "Phantom" Picking Generation on Quantities Decreases
The Issue
When a Sales Order line has a confirmed delivery that has been generated or printed, changing your mind and decreasing the order line quantity natively triggers a bug. Instead of modifying the current workflow cleanly, Odoo generates a separate "phantom" return or incoming picking record, which falsely inflates the item's forecasted availability.
Business Impact: High operational friction. Inventory planners look at forecasting dashboards and see stock arriving that does not exist. This leads to double-selling errors, dead stock on procurement, and corrupted warehouse workflows.
Affected Versions: Odoo 18.0 and 19.0.
The Solution
This module creates a logistics control layer that sits over sale_stock. It recodes the transactional quantity alteration hooks. If a line is decreased before actual physical validation occurs, it suppresses the automatic generation of balancing transfers and instead cleanly adjusts the existing picking document to reflect the correct real-world allocations.
- No phantom returns: Keeps your forecast accurate.
- Cleaner pickings: Directly adjusts pending deliveries.
- Zero friction: Works automatically in the background.
Frequently Asked Questions (FAQ)
Why does Odoo create a return picking when I reduce the Sales Order quantity?
By default, when you decrease the quantity of a confirmed Sales Order line, the internal signal handler assumes the stock was already processed or needs a balancing transfer. This leads to "phantom" incoming stock on forecasting reports. Our module fixes this by adjusting the original pending picking instead.
Will this conflict with other warehouse modules?
No, this module cleanly intercepts the _action_launch_stock_rule in sale.order.line before any conflicting stock rules are triggered, ensuring high compatibility with custom warehouse routing and standard Odoo apps.
Does it work if the delivery is already validated (Done)?
If physical validation has already occurred (picking state is 'Done'), a return is necessary because the goods have left the facility. Our module only intercepts decreases made before the final physical validation, optimizing the pending picking records seamlessly.
Developed with ❤️ by Odoocrafts Innovations
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Inventory (stock) |
| Lines of code | 31 |
| Technical Name |
so_stock_balance_corrector |
| License | OPL-1 |
| Website | https://odoocrafts.com |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module