Предварительный магазин - Изменить статус заказа после подтверждения оплаты


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

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

Для этого я использую команду hook 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

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

Author: Yann Bergonzat, 2015-02-09

2 answers

Вызов hookactionorderstatuspostupdate выполняется с помощью changeidorderstate, но добавление в таблицу order_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();
}

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

 5
Author: Michael SALIHI, 2017-07-14 16:49:22

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

 1
Author: Eric, 2015-11-09 13:02:40