验证付款后,订单状态将变为“付款已验证”(法语为“ Paiementaccepté”)。验证付款后,我想设置其他状态,因此历史记录将显示以下内容:
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
如何使我的个人身份显示为最后身份?
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();
}
最好的祝福
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句