Magento 2: change order status programmatically

1k Views Asked by At

I need to set in "canceled" all orders stucks in "pending" status. The code that I used return this exception error:

[2022-12-03 08:00:53] main.CRITICAL: Please provide payment for the order.

Here the code:

use Magento\Sales\Model\Order;

protected $order;

public function __construct(Order $order)
{
    $this->order = $order;
}

public function orderStatusChange()
{
    $orderId = 9999;
    $order = $this->order->load($orderId);
    $order->setStatus("canceled");
    $order->save();
 }
1

There are 1 best solutions below

0
Rajat On
Please create a new file on the magento2 root and add below code:

use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';    
$params = $_SERVER;    
$bootstrap = Bootstrap::create(BP, $params);    
$obj = $bootstrap->getObjectManager();    
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

$orderId = '12345';
$order = $obj->create('\Magento\Sales\Model\OrderRepository')->get($orderId);
$order->setStatus("canceled");
$order->setState("canceled");
$order->save();
echo "Order updated";