付款验证后,订单状态将变为“付款已验证”(法语为“付款接受”)。我想在付款验证时设置另一个状态,因此历史记录将显示以下内容:
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
我应该怎样做才能使我的个人状态显示为最后的状态?
钩子操作订单状态更新后钩子调用是由changeIdOrderState进行的,但添加到order_history表是在调用changeIdOrderState之后进行的,如下所示https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/controllers/admin/AdminOrdersController.php#L521-L542 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 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();
}
此致
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)