Prestashop – изменить статус заказа при подтверждении платежа

Когда платеж подтвержден, статус заказа становится «Подтверждение оплаты» («Paiement accepté» на французском языке). Я хочу установить другой статус, когда оплата будет подтверждена, поэтому в истории будет показано следующее:

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

Для этого я использую действие hookOrderStatusPostUpdate. Это мой код:

 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 

Что делать, чтобы статус My personnal отображался как последний статус?

hookActionOrderStatusPostUpdate hook call выполняется changeIdOrderState, но таблица add_history добавляется после вызова changeIdOrderState, как в https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/controllers/admin/AdminOrdersController.php# L521-L542

Вам скорее нужно привязать свой модуль к классическому крюку, как hookActionObjectOrderHistoryAddAfter https://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(); } 

С наилучшими пожеланиями

Я думаю, что это сработает на другом hook: actionOrderStatusUpdate