AmpersandHQ/magento2-disable-stock-reservation
This module disables the inventory reservation logic introduced as part of MSI in Magento 2.3.3 - see magento/inventory#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_reservations table. It does so by using an
around
plugin onPlaceReservationsForSalesEventInterface
- Trigger stock deductions on order placement. See
inventory_sales_source_deduction_processor
plugin onMagento\Sales\Model\Service\OrderService
. - Prevent stock deductions on order shipment. See disabled
inventory_sales_source_deduction_processor
observer onsales_order_shipment_save_after
event. - Replenish stock for cancelled order items. See
inventory
observer onsales_order_item_cancel
event. - 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
Additional Notes
- Make sure to truncate any existing reservations after installing this module, see #41
- Both the
inventory
andcataloginventory_stock
should be on the same mode (Update on Save
orSchedule
) for this module to work as expected. If you are running this onSchedule
you should have crons activated.