ここで Magento のバージョンの問題が発生しているとは思いません。
特定の状況下では、Magento は単に注文の状態を に戻すことを許可していませんMage_Sales_Model_Order::STATE_PROCESSING。
たとえば、通常、Mage_Sales_Model_Order::STATE_PROCESSINGすでに払い戻し (クレジットメモ) が行われている注文に状態を保存することはできません。1.3.2.4 でも 1.6.x でもありません。
これは仕様によるものです。
を見て、Mage_Sales_Model_Order::_checkState()Magento が注文状態をそれぞれSTATE_COMPLETEまたはSTATE_CLOSEDにリセットすることを強制する状況を確認します。
protected function _checkState()
{
if (!$this->getId()) {
return $this;
}
$userNotification = $this->hasCustomerNoteNotify() ? $this->getCustomerNoteNotify() : null;
if (!$this->isCanceled()
&& !$this->canUnhold()
&& !$this->canInvoice()
&& !$this->canShip()) {
if (0 == $this->getBaseGrandTotal() || $this->canCreditmemo()) {
if ($this->getState() !== self::STATE_COMPLETE) {
$this->_setState(self::STATE_COMPLETE, true, '', $userNotification);
}
}
/**
* Order can be closed just in case when we have refunded amount.
* In case of "0" grand total order checking ForcedCanCreditmemo flag
*/
elseif (floatval($this->getTotalRefunded()) || (!$this->getTotalRefunded()
&& $this->hasForcedCanCreditmemo())
) {
if ($this->getState() !== self::STATE_CLOSED) {
$this->_setState(self::STATE_CLOSED, true, '', $userNotification);
}
}
}
if ($this->getState() == self::STATE_NEW && $this->getIsInProcess()) {
$this->setState(self::STATE_PROCESSING, true, '', $userNotification);
}
return $this;
}
あなたの質問に答えるには:_checkState()を設定できる独自のメソッドでメソッドをオーバーライドすることで、やろうとしていることを達成できますSTATE_PROCESSING。
ただし、これにより、Magento が認識も期待も処理もできない新しい状態コンテキストが作成される可能性が高いことに注意してください。
あなたの変更が大混乱を引き起こしたとしても、私を責めないでください。警告されました^^