由于选择,状态因重复而改变
Status Changed with Duplicates Due to Selection
我正在执行一个名为 hookActionProductCancel() 的默认挂钩。钩子很好地执行了我的代码,但有一部分根据发送的 refund/return 个复选框数量执行了不止一次。
示例:
如果我有 4 个要选中的复选框,我选择了 3 个,我的订单在订单详细信息历史记录中将有 3 个 "Refund" 状态。 (也可以在订单页面看到)
public function hookActionProductCancel($params)
{
$query = new DbQuery();
$query->select('id_order_state')
->from('order_state_lang')
->where('name = ' . "'Refund'");
$refund_status = Db::getInstance()->getValue($query);
$objOrder = new Order($id_order);
$history = new OrderHistory();
$history->id_order = (int)$objOrder->id;
$history->id_employee = $cookie->id_employee;
$history->changeIdOrderState($refund_status, (int)($objOrder->id));
$history->add(true);
$history->save();
}
非常感谢任何指导。谢谢。
从订单中取消产品时,控制器循环遍历每个选定的产品并执行 actionProductCancel
挂钩。
Tools::getValue('id_order_detail')
将是每个将被取消的订单详细信息 ID 的数组。
知道您可以结合使用挂钩、数组中的订单详细信息 ID 计数和模块中的计数器。
您的主模块 class 可能包含如下代码:
public static $cancelledProductCount = 0;
public function hookActionProductCancel($params)
{
self::$cancelledProductCount++;
if (self::$cancelledProductCount == count(Tools::getValue('id_order_detail'))) {
$query = new DbQuery();
$query->select('id_order_state')
->from('order_state_lang')
->where('name = ' . "'Refund'");
$refund_status = Db::getInstance()->getValue($query);
$objOrder = new Order($id_order);
$history = new OrderHistory();
$history->id_order = (int)$objOrder->id;
$history->id_employee = $cookie->id_employee;
$history->changeIdOrderState($refund_status, (int)($objOrder->id));
$history->add(true);
$history->save();
}
}
因此,每次执行取消产品挂钩时,您都会将计数器加一,并与取消的项目数进行比较。如果它们相同,您就知道这是挂钩最后一次执行,因此请更改订单状态。
我正在执行一个名为 hookActionProductCancel() 的默认挂钩。钩子很好地执行了我的代码,但有一部分根据发送的 refund/return 个复选框数量执行了不止一次。
示例:
如果我有 4 个要选中的复选框,我选择了 3 个,我的订单在订单详细信息历史记录中将有 3 个 "Refund" 状态。 (也可以在订单页面看到)
public function hookActionProductCancel($params)
{
$query = new DbQuery();
$query->select('id_order_state')
->from('order_state_lang')
->where('name = ' . "'Refund'");
$refund_status = Db::getInstance()->getValue($query);
$objOrder = new Order($id_order);
$history = new OrderHistory();
$history->id_order = (int)$objOrder->id;
$history->id_employee = $cookie->id_employee;
$history->changeIdOrderState($refund_status, (int)($objOrder->id));
$history->add(true);
$history->save();
}
非常感谢任何指导。谢谢。
从订单中取消产品时,控制器循环遍历每个选定的产品并执行 actionProductCancel
挂钩。
Tools::getValue('id_order_detail')
将是每个将被取消的订单详细信息 ID 的数组。
知道您可以结合使用挂钩、数组中的订单详细信息 ID 计数和模块中的计数器。
您的主模块 class 可能包含如下代码:
public static $cancelledProductCount = 0;
public function hookActionProductCancel($params)
{
self::$cancelledProductCount++;
if (self::$cancelledProductCount == count(Tools::getValue('id_order_detail'))) {
$query = new DbQuery();
$query->select('id_order_state')
->from('order_state_lang')
->where('name = ' . "'Refund'");
$refund_status = Db::getInstance()->getValue($query);
$objOrder = new Order($id_order);
$history = new OrderHistory();
$history->id_order = (int)$objOrder->id;
$history->id_employee = $cookie->id_employee;
$history->changeIdOrderState($refund_status, (int)($objOrder->id));
$history->add(true);
$history->save();
}
}
因此,每次执行取消产品挂钩时,您都会将计数器加一,并与取消的项目数进行比较。如果它们相同,您就知道这是挂钩最后一次执行,因此请更改订单状态。