Tôi đang cố thay đổi trạng thái đơn hàng theo cách thủ công tại một điểm nhất định trong mã của tôi. Đây là những gì tôi có cho đến nay:Magento thay đổi trạng thái đơn hàng theo cách thủ công thành 'hoàn thành'
$order = Mage::getModel('sales/order')->load($_GET['orderid']);
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true, 'Pedido completado exitosamente.', true, false)->save();
Khi tôi làm điều đó tôi nhận được lỗi:
The Order state 'complete' must not be set manually.
Ok vì vậy tôi cố gắng này:
$order = Mage::getModel('sales/order')->load($_GET['orderid']);
$order->setStatus("complete");
$order->save();
Khi tôi làm điều đó tôi nhận được lỗi:
Call to a member function getMethodInstance() on a non-object
Vậy làm cách nào tôi có thể tự đặt trạng thái đơn hàng thành công.
Tôi đã thử với người đầu tiên bình luận ra các dòng sau trong Sales/Order.php
:
if ($shouldProtectState) {
if ($this->isStateProtected($state)) {
Mage::throwException(
Mage::helper('sales')->__('The Order State "%s" must not be set manually.', $state)
);
}
}
Nhưng không đi, tôi vẫn nhận được không thiết để hoàn thành báo lỗi trên.
Tôi đang sử dụng Magento 1.7.0.2.
Xin lỗi, điều này sẽ ném lỗi sau đây 'Gọi hàm thành viên getMethodInstance() trên đối tượng không – jfreak53
có thể do một số lỗi khác .. 'getMethodInstance()' thường xảy ra cho Phương thức thanh toán. Lỗi của bạn nói rằng bạn đang cố gắng để có được Phương thức thanh toán trên một đối tượng không – Kalpesh
Tôi đang cố gắng đặt trạng thái đơn đặt hàng trên trang thành công sau khi thanh toán đầy đủ. Đối với một số lý do Magento không còn được thiết lập tình trạng thanh toán khi nó trở lại. Vì vậy, trong mô-đun thanh toán của tôi, tôi đang cố gắng thiết lập thanh toán trên trang thành công cuối cùng. Đó là trên trang thành công 'onestepcheckout' mà tôi đang cố gắng thiết lập. Lỗi này chỉ xảy ra khi tôi thêm nội dung đó vào trang, nếu tôi không thêm nội dung đó không có lỗi. – jfreak53