AmpersandHQ Magento2 Disable Stock Reservation
ampersand/magento2-disable-stock-reservation
Disables Magento's inventory reservation system, preventing writes to the inventory_reservation table. Deducts stock on order placement instead of shipment, and replenishes stock on order cancellation or credit memo.
Build Tests
Code Quality
Tested on Magento 2.4.8-p3
Recent Test History
Each release is tested against the latest Magento version at that time.
Top Contributors
View LeaderboardShare This Module's Status
README
Loaded from GitHubAmpersandHQ/magento2-disable-stock-reservation
This module disables the inventory reservation logic introduced as part of MSI in Magento 2.3.3 - see https://github.com/magento/inventory/issues/2269 for more information about the way MSI was implemented, and the issues that can happen with external WMS integrations.
The Problem
During the order placement and fulfilment processes, Magento's MSI implementation will not decrement stock on order placement - it will only do so on order shipment and refund.
Our Approach
This module will:
- Prevent all writes to the
inventory_reservationtable. It does so by using anaroundplugin onPlaceReservationsForSalesEventInterface - Trigger stock deductions on order placement. See
inventory_sales_source_deduction_processorplugin onMagento\Sales\Model\Service\OrderService. - Prevent stock deductions on order shipment. See disabled
inventory_sales_source_deduction_processorobserver onsales_order_shipment_save_afterevent. - Replenish stock for cancelled order items. See
inventoryobserver onsales_order_item_cancelevent. - Replenish stock when a credit memo is issued. See
src/Observer/RestoreSourceItemQuantityOnRefundObserver.php- Requires that "Back to stock" is checked or "Automatically Return Credit Memo Item to Stock" is configured
- https://docs.magento.com/user-guide/configuration/catalog/inventory.html#product-stock-options
- Requires that "Back to stock" is checked or "Automatically Return Credit Memo Item to Stock" is configured
- Truncate (ie, remove all historic entries from) the
inventory_reservationtable upon installation.
Additional Notes
- Both the
inventoryandcataloginventory_stockshould be on the same mode (Update on SaveorSchedule) for this module to work as expected. If you are running this onScheduleyou should have crons activated.
This content is fetched directly from the module's GitHub repository. We are not the authors of this content and take no responsibility for its accuracy, completeness, or any consequences arising from its use.