Stock Picking Cancel Done
by Youssef Fakih https://github.com/yousseffakih1/stock_picking_cancel_done
Odoo
$ 11.77
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) |
| Lines of code | 262 |
| Technical Name |
stock_picking_cancel_done |
| License | LGPL-3 |
| Website | https://github.com/yousseffakih1/stock_picking_cancel_done |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) |
| Lines of code | 262 |
| Technical Name |
stock_picking_cancel_done |
| License | LGPL-3 |
| Website | https://github.com/yousseffakih1/stock_picking_cancel_done |
| Versions | 18.0 19.0 |
Stock Picking Cancel Done
This module allows authorized users to cancel stock pickings (deliveries, receipts, internal transfers) that are already in "Done" state. It provides a safe and controlled way to reverse completed inventory operations with full traceability.
Odoo 18 Community
Odoo 18 Enterprise
Key Features
- ✓ Cancel Done Pickings: Reverse completed stock operations with a single click
- ✓ Automatic Reverse Moves: Optionally create reverse picking to restore original stock levels
- ✓ Security Group: Dedicated permission group to control who can cancel done pickings
- ✓ Mandatory Reason: Cancellation wizard requires a reason for audit purposes
- ✓ Full Traceability: All actions are logged in the chatter with links to reverse pickings
- ✓ All Picking Types: Works with deliveries, receipts, and internal transfers
- ✓ Lot/Serial Support: Properly handles products with lot and serial number tracking
- ✓ Package Support: Preserves package information in reverse moves
User Guide
Step 1: Grant Permission to Users
1
Enable "Cancel Done Pickings" permission
Go to Settings > Users & Companies > Users, select a user, and check the
"Cancel Done Pickings" option in the Technical section.
Enable the "Cancel Done Pickings" permission for authorized users
Step 2: Open a Done Picking
2
Navigate to a completed picking
Open any stock picking (delivery, receipt, or internal transfer) that is in "Done" state.
You will see a "Cancel" button in the action bar.
A done picking showing the "Cancel" button
Step 3: Confirm the Action
3
Click "Cancel" and confirm
When you click the Cancel button, a confirmation dialog appears asking if you really want to cancel this done picking.
Confirmation dialog before proceeding
Step 4: Fill the Cancellation Wizard
4
Enter reason and choose options
The cancellation wizard opens where you must enter a Cancel Reason (mandatory)
and choose whether to Create Reverse Moves to adjust stock levels automatically.
Cancellation wizard with reason field and reverse moves option
Step 5: Picking is Cancelled
5
View the cancelled picking
After confirmation, the picking state changes to "Cancelled".
If reverse moves were enabled, a new picking is automatically created to restore stock levels.
The picking is now in "Cancelled" state
Step 6: View in List
6
Track cancelled pickings
In the pickings list view, cancelled pickings are clearly marked with a red "Cancelled" badge.
List view showing the cancelled picking with red status badge
Reverse Moves Logic
| Original Picking Type | Reverse Action |
|---|---|
| Delivery (Outgoing) | Creates a Receipt to bring products back to stock |
| Receipt (Incoming) | Creates a Delivery to remove products from stock |
| Internal Transfer | Creates reverse transfer (swaps source and destination) |
Security Notice: This is a powerful feature. Only grant this permission to trusted users
who understand the impact of cancelling completed stock operations.
Technical Information
Models Extended
stock.picking- Added cancel button and tracking fields
New Models
cancel.done.picking.wizard- Wizard for cancellation with reason
New Fields on stock.picking
cancelled_from_done- Boolean to track if picking was cancelled from done statecancel_reason- Text field storing the cancellation reason
Security Groups
group_cancel_done_picking- Users with permission to cancel done pickings
Support: For support, bug reports, or feature requests, please visit the
GitHub Issues page.
License
This module is distributed under the LGPL-3 license.
Please log in to comment on this module