5

I'm using magento 1.9 and I have to change the order status from shipped to delivered, both status having the same state "complete"

How can I able to change this?

I have tried following code

$order = Mage::getModel("sales/order")->loadByIncrementId(100000123);
$order->setData("state", "complete");
$order->setStatus("delivered");
$history = $order->addStatusHistoryComment('A ser executada a rotina de recarga.', false);
$history->setIsCustomerNotified(false);
$order->save();

But it gives

PHP Fatal error: Call to a member function getMethodInstance() on boolean in /app/code/core/Mage/Payment/Model/Observer.php on line 46

Raphael at Digital Pianism
70.8k37 gold badges192 silver badges357 bronze badges
asked Aug 25, 2016 at 10:26
2
  • 1
    self resolved. $order = Mage::getModel('sales/order')->load($orderId); $order->addStatusHistoryComment('','delivered') ->setIsVisibleOnFront(false) ->setIsCustomerNotified(false); $order->save(); Commented Aug 26, 2016 at 10:10
  • I have tried above code , state and status field updated. But we get the error message as "Item (Mage_Sales_Model_Order) with the same id "325" already exist" require_once "app/Mage.php"; umask(0); Mage::app('default'); $order = Mage::getModel('sales/order')->load(403); $order->setData('state', "complete"); $order->setStatus("complete"); $order->save(); Commented Dec 13, 2017 at 6:14

2 Answers 2

1

When I have got and error "The Order State "complete" must not be set manually." I found the solution here https://stackoverflow.com/questions/18711176/how-to-set-order-status-as-complete-in-magento

answered Sep 15, 2017 at 8:13
7

you can change order status as below:

$orderId = YOUR_ORDER_ID;
$order = Mage::getModel('sales/order')->load($orderId);
$orderIncrementId = YOUR_ORDER_INCREMENT_ID;
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
/**
 * change order status to 'Completed'
 */
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();
/**
 * change order status to 'Pending'
 */
$order->setState(Mage_Sales_Model_Order::STATE_NEW, true)->save();
/**
 * change order status to 'Pending Paypal'
 */
$order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();
/**
 * change order status to 'Processing'
 */
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();
/**
 * change order status to 'Completed'
 */
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true)->save();
/**
 * change order status to 'Closed'
 */
$order->setState(Mage_Sales_Model_Order::STATE_CLOSED, true)->save();
/**
 * change order status to 'Canceled'
 */
$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save();
/**
 * change order status to 'Holded'
 */
$order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true)->save();
answered Aug 25, 2016 at 10:40
2
  • 1
    I tried this but it gives error "The Order State "complete" must not be set manually." I want to change status not state of order. Commented Aug 25, 2016 at 12:12
  • $order->setData('state', Mage_Sales_Model_Order::STATE_COMPLETE); $order->setStatus(Mage_Sales_Model_Order::STATE_COMPLETE); $history = $order->addStatusHistoryComment('Order was set to Complete by our automation tool.', false); $order->save(); Commented May 17, 2018 at 7:45

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.