
Magento 2.x – How to restore an order from cancelled to processing with an script
As we know, a cancelled order cannot be restored with the default Magento order flow. But, if you need to perform that for a particular need, you can use the following script.
DB Based:
1 2 3 |
update sales_order set state = 'processing', status = 'processing' where increment_id = '<magento_increment_id>'; update sales_order_item set qty_canceled = 0 where order_id = (select entity_id from sales_order where increment_id = '<magento_increment_id>'); update sales_order_grid set status = 'processing' where increment_id = '<magento_increment_id>'; |
Magento Based:
1 2 3 4 5 6 7 8 9 10 11 |
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $order = $objectManager->get('Magento\Sales\Model\Order')->load(<magento_order_id>); $order->setState("processing") ->setStatus("processing") ->save(); $orderItems = $order->getAllItems(); foreach ($orderItems as $item) { $item->setData("qty_canceled",0)->save(); } |
Hope it helps.