How to Order status change Processing to complete in magento 2.3
asked Feb 11, 2019 at 8:33
user76910
4 Answers 4
You can Change status this way..
$orderId = 1; // here order id
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$order = $objectManager->create('\Magento\Sales\Model\Order')
->load($orderId);
$order->setState("complete")->setStatus("complete");
$order->save();
answered Feb 11, 2019 at 8:34
Rakesh Donga
5,4442 gold badges26 silver badges58 bronze badges
-
can u please help me solve this issue @rakeshDivya Sekar– Divya Sekar2019年02月18日 10:07:08 +00:00Commented Feb 18, 2019 at 10:07
You can Change the order status to complete using repository Class of order entity \Magento\Sales\Api\OrderRepositoryInterface
$order = $this->orderRepository->get($orderiId);
$order->setStatus($completeStatus)->setState($completeStatus);
$this->orderRepository->save($order);
Code Looks Like:
<?php
namespace {ClassNameSpace};
use Magento\Framework\Exception\NoSuchEntityException;
class Test {
/**
* @var \Magento\Sales\Api\OrderRepositoryInterface
*/
private $orderRepository;
public function __construct(
\Magento\Sales\Api\OrderRepositoryInterface $orderRepository
) {
$this->orderRepository = $orderRepository;
}
public function ChangeOrderStatusToComplete()
{
$completeStatus = \Magento\Sales\Model\Order::STATE_COMPLETE;
$id = 2;
try{
$order = $this->orderRepository->get($id);
$order->setStatus($completeStatus)->setState($completeStatus);
$this->orderRepository->save($order);
} catch (NoSuchEntityException $ex) {
// error Happen
}
}
}
answered Feb 11, 2019 at 9:03
-
1Sir If I want to change it Hold to Processing how can we set it on Processing or any other status??? like in your code it is only for Complete.Asad Khan– Asad Khan2019年09月18日 13:29:04 +00:00Commented Sep 18, 2019 at 13:29
-
@Amit How does this work? i have a user and the order id = 2 how does this update it? how do i run itjibin george– jibin george2019年11月21日 16:30:49 +00:00Commented Nov 21, 2019 at 16:30
-
Once payment is done, the order status showing as "Processing" by default but I wanted to show as "Pending/New" similar to "Cash On Delivery". If I want to set the order status as "Pending/New" programmatically once the order is placed. What should I do? Please advise.Vinayagam– Vinayagam2020年01月14日 15:04:58 +00:00Commented Jan 14, 2020 at 15:04
This is duplicated from this Link
use Magento\Sales\Model\Order;
$orderId = 1;
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$order = $objectManager->create('\Magento\Sales\Model\Order') ->load($orderId);
$orderState = Order::STATE_COMPLETE;
$order->setState($orderState)->setStatus(Order::STATE_COMPLETE);
$order->save();
answered Feb 11, 2019 at 9:27
Ylgen Guxholli
2,70014 silver badges22 bronze badges
kindly change object manager to di
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$orderRepository = $objectManager->create('\Magento\Sales\Api\OrderRepositoryInterface');
$order = $orderRepository->get($orderId);
$order->setState('awaiting_stock');
$order->setStatus('awaiting_stock');
$orderRepository->save($order);
answered Jun 24, 2021 at 13:37
Asad Ullah
1,49112 silver badges25 bronze badges
default