Когда платеж подтвержден, статус заказа становится «Подтверждение оплаты» («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