2015-02-09 27 views
3

驗證付款時,訂單狀態變爲「支付驗證」(法語爲「Paiementaccepté」)。我想設置其他狀態時,付款確認,所以歷史會顯示以下內容:Prestashop - 支付驗證時更改訂單狀態

Current status : My personnal status 
History : 
My personnal status 
Payment validated 

要做到這一點,我使用掛鉤actionOrderStatusPostUpdate。這是我的代碼:

public function hookActionOrderStatusPostUpdate($aParams) { 
    $oOrder = new Order($aParams['id_order']); 

    if($aParams['newOrderStatus']->id == Configuration::get('PS_OS_PAYMENT')) { 
     $oOrder->setCurrentState(Configuration::get('XXXXXX_STATUS_WAITING')); 
     $oOrder->save(); 
    } 
} 

正確定義配置值。此代碼有效,因爲我看到狀態已更改。但是,在更改爲「已驗證付款」之前,它已更改。我不明白爲什麼。歷史記錄如下:

Current status : Payment validated 
History : 
Payment validated 
My personnal status 

我應該怎麼做我的個人身份狀態顯示爲最後狀態?

+0

請給我一些截圖,我不明白你的意思。 – sarcom 2015-02-10 11:27:30

+0

屏幕截圖:[鏈接](http://puu.sh/fOPXv/465420e1a9.png)。 「Paementaccepté」(這是支付驗證的法語)的狀態是最後註冊的。另一個,「Àproduire par le fablab」是我想成爲最後一個的人。 – 2015-02-12 14:20:04

+0

這是訂單歷史頁面的屏幕截圖?對? 「Paementaccepté」之前是否需要「Àproduire par le fablab」? – sarcom 2015-02-13 10:31:30

回答

4

hookActionOrderStatusPostUpdate鉤呼叫由changeIdOrderState提出,但到order_history表附加在https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/controllers/admin/AdminOrdersController.php#L521-L542

你而changeIdOrderState的電話後做出像需要你的模塊綁定在一個經典的鉤狀hookActionObjectOrderHistoryAddAfterhttps://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/classes/ObjectModel.php#L535-L537

public function hookActionObjectOrderHistoryAddAfter($params) { 
$orderHistory = $params['object']; 

if($orderHistory->id_order_state == Configuration::get('PS_OS_PAYMENT')) { 
    $oOrder->setCurrentState(Configuration::get('XXXXXX_STATUS_WAITING')); 
    $oOrder->save(); 
} 

最好的問候

+0

即使這個問題來自兩年前,我仍然想知道如何解決這個問題。在那裏你想出了一個完美的答案。謝謝:D! – 2017-07-15 13:21:39

+1

不客氣@YannBergonzat 是的,這是因爲我面臨同樣的問題,我認爲這個解決方案對於那些會陷入這個話題的人來說可能是有用的......即使在2017年:) – 2017-07-17 10:21:14

1

我認爲它會在其他鉤工作:actionOrderStatusUpdate

+0

已經嘗試過它,它也不起作用...狀態在狀態更新之前應用。這就是爲什麼我選擇使用「後更新」的原因。 – 2015-11-09 16:26:38

+0

也許是一個愚蠢的問題,但通常在BO上,歷史記錄以相反的順序顯示訂單狀態,您是在那裏還是直接在mysql上查看?在圖片中,我們可以看到分鐘而不是秒鐘。 – Eric 2015-11-10 10:08:20