Expert Solution to Get Current Order Status And New Order Status in Magento 2

Magento 2 is an insanely flexible platform that allows us, developers, to satisfy the crazy clients’ requirements!

Isn’t it?

I recently faced a similar situation where the client wanted to perform a specific action when the order status is changed. To do so, I had to get current order status and new order status in Magento 2.

In this blog, I have posted that solution straightaway for the developers to save themselves from what I went through for the solution.

You can use the below code to implement, for example, a feature where a popup displays when the order state is changed from placed to processing saying that you can use this coupon code, or a feature to calculate and return tax amount when an order is placed and completed.

Get the previous and next order status in Magento 2 to perform any action when the order status is changed, using the following code:

Steps to Get Current Order Status and New Order Status in Magento 2

Create di.xml file at app/code/Vendor/Extension/etc/ folder

<type name="Magento\Sales\Model\ResourceModel\Order">
    <plugin name="order_state_plugin" type="Vendor\Extension\Plugin\OrderPlugin"/>
</type>

Create OrderPlugin.php file at app/code/Vendor/Extension/Plugin/

<?php

namespace Vendor\Extension\Plugin;
use Magento\Sales\Model\ResourceModel\Order;
class OrderPlugin
{
   public function afterSave(
      Order $subject,
      $result, $object
   ) {
      $oldData = $object->getOrigData('status');
      $newData = $object->getData('status');
      \Magento\Framework\App\ObjectManager::getInstance()->get('Psr\Log\LoggerInterface')->info(print_r("Old Data = $oldData",true));
      \Magento\Framework\App\ObjectManager::getInstance()->get('Psr\Log\LoggerInterface')->info(print_r("New Data = $newData",true));
   }
}

That’s it.

You can also make order status visible on frontend in Magento 2 by tweaking the backend configuration.

Learn here to get order status label in Magento 2.

Do share the solution with fellow Magento developers via social media.

Thank you.

Table of Contents