訂單的 sendNewOrderEmail() 會造成 setState() 失效...

edited 四月 2014 in Magento
在寫功能的時候一直遇到鬼打牆,明明測試可以的程式怎麼上線了就不行,後來才發現問題...

$order = Mage::getModel('sales/order')->loadByIncrementId($id);
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, $comment);
$order->sendNewOrderEmail();
$order->save();


原來因為 sendNewOrderEmail() 裡面有個 saveAttribute() 的動作,會造成 $order->setState() 已經準備好要儲存的資料被重設,所以 $order->sendNewOrderEmail(); 必須要放在 $order->save(); 後面才不會互相影響

$order = Mage::getModel('sales/order')->loadByIncrementId($id);
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, $comment);
$order->save();
$order->sendNewOrderEmail();


真的需要單元測試這種東西,可惜 2.x 遙遙無期 XD
Sign In or Register to comment.